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

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

缺陷编号:wooyun-2014-069778

漏洞标题:qibocms下载系统 注入&另外一个老问题

相关厂商:齐博CMS

漏洞作者: ′雨。

提交时间:2014-07-28 10:23

修复时间:2014-10-26 10:24

公开时间:2014-10-26 10:24

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-07-28: 细节已通知厂商并且等待厂商处理中
2014-07-28: 厂商已经确认,细节仅向厂商公开
2014-07-31: 细节向第三方安全合作伙伴开放
2014-09-21: 细节向核心白帽子及相关领域专家公开
2014-10-01: 细节向普通白帽子公开
2014-10-11: 细节向实习白帽子公开
2014-10-26: 细节向公众公开

简要描述:

RT.

详细说明:

下载地址 http://bbs.qibosoft.com/down2.php?v=download1.0#down
0x01 老问题
在download/inc/job/down_encode.php中

if(eregi('.php',$url)){	
header("location:$true_url");
exit;
}
$webdb[upfileType] = str_replace(' ','|',$webdb[upfileType]);
if(file_exists(ROOT_PATH."$webdb[updir]/$url") && eregi("($webdb[upfileType])$",$url) && filesize(ROOT_PATH."$webdb[updir]/$url")<1024*1024*10)
{
$filetype=substr(strrchr($url,'.'),1);
ob_end_clean();
header('Last-Modified: '.gmdate('D, d M Y H:i:s',time()).' GMT');
header('Pragma: no-cache');
header('Content-Encoding: none');
header('Content-Disposition: attachment; filename='."$true_name.$filetype");
header('Content-type: '.$filetype);
header('Content-Length: '.filesize(ROOT_PATH."$webdb[updir]/$url"));
readfile(ROOT_PATH."$webdb[updir]/$url");
exit;


厂商对上次我爆的那个洞做了修补
eregi("($webdb[upfileType])$",$url 白名单验证。
但是在download/inc/down_encode.php 中

$true_url=tempdir($url);
if(eregi('.php',$url)){
header("location:$true_url");
exit;
}
if(file_exists(ROOT_PATH."$webdb[updir]/$url")&&filesize(ROOT_PATH."$webdb[updir]/$url")<1024*1024*10)
{
$filetype=substr(strrchr($url,'.'),1);
ob_end_clean();
header('Last-Modified: '.gmdate('D, d M Y H:i:s',time()).' GMT');
header('Pragma: no-cache');
header('Content-Encoding: none');
header('Content-Disposition: attachment; filename='."$true_name.$filetype");
header('Content-type: '.$filetype);
header('Content-Length: '.filesize(ROOT_PATH."$webdb[updir]/$url"));
readfile(ROOT_PATH."$webdb[updir]/$url");
exit;


却没有做白名单验证 只是黑名单验证是否含有.php 按照上次发的那个可以绕过。
然后这个涉及到了个入库出库 然后在发布软件的时候图片地址写要下载的就行了
绕过黑名单参照这个。及剩下的参照下面这个 我就不多说了。
WooYun: qibocmsV7整站系统任意文件下载导致无限制注入多处(可提升自己为管理 Demo演示)
____________________________________________________________________
0x02 注入
在全局文件中

$_POST=Add_S($_POST);
$_GET=Add_S($_GET);
$_COOKIE=Add_S($_COOKIE);


function Add_S($array){
foreach($array as $key=>$value){
if(!is_array($value)){
$value=str_replace("&#x","& # x",$value); //过滤一些不安全字符
$value=preg_replace("/eval/i","eva l",$value); //过滤不安全函数
!get_magic_quotes_gpc() && $value=addslashes($value);
$array[$key]=$value;
}else{
$array[$key]=Add_S($array[$key]);
}
}
return $array;
}


这里调用了这个函数来对get post cookie来转义 如果gpc off的话 就addslashes对数组中的value进行转义 这里没有对数组中的key进行过滤。
在download/member/post.php中

elseif($job=='manage')
{
if(!$atc_power)showerr("你没权限");
if($rsdb[pages]<2){
header("location:post.php?job=edit&aid=$aid");exit;
}
if($step==2){
asort($orderDB);
$i=0;
foreach( $orderDB AS $key=>$value){
$i++;
$db->query("UPDATE {$_pre}reply SET orderid=$i WHERE aid='$aid' AND rid='$key'");
}
refreshto("$FROMURL","排序成功",1);
}


if($lfjid){
if($web_admin||$lfjuid==$rsdb[uid]){
$atc_power=1;
}
}


这个只要是你自己发布的就有权限了。 所以我们自己先发布一个。

foreach( $orderDB AS $key=>$value){
$i++;
$db->query("UPDATE {$_pre}reply SET orderid=$i WHERE aid='$aid' AND rid='$key'


这里把数组中的key循环出来后 没有做任何的过滤就带入到了查询当中
造成了注入。

漏洞证明:

20.jpg


首先注册一个会员 投稿 因为if($rsdb[pages]<2){
header("location:post.php?job=edit&aid=$aid");exit;
}
验证了两页 所以得发两页。

25.jpg


然后就成功注入了。

修复方案:

对于第一个问题 做白名单
第二个 $key=intval($key);

版权声明:转载请注明来源 ′雨。@乌云


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:18

确认时间:2014-07-28 14:11

厂商回复:

感谢提出来

最新状态:

暂无


漏洞评价:

评论