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

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

缺陷编号:wooyun-2014-072670

漏洞标题:qibocms b2b 二次注入一枚。

相关厂商:齐博CMS

漏洞作者: ′雨。

提交时间:2014-08-18 16:22

修复时间:2014-11-16 16:24

公开时间:2014-11-16 16:24

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

简要描述:

应该是qibo的最后一弹了。

详细说明:

所测试的 http://down.qibosoft.com/down.php?v=b2b
_________________________________________________________________________
在hy/member/homapage_ctrl/info.php中

$db->query("INSERT INTO `{$_pre}company_fid` VALUES $values");

$title=filtrate($title);
$picurl=filtrate($picurl);
$fname=filtrate($fname);
$my_trade=filtrate($my_trade);
$qy_cate=filtrate($qy_cate);
$qy_regmoney=filtrate($qy_regmoney);
$qy_saletype=filtrate($qy_saletype);
$qy_pro_ser=filtrate($qy_pro_ser);
$my_buy=filtrate($my_buy);
$qy_regplace=filtrate($qy_regplace);
$db->query("UPDATE `{$_pre}company` SET
`title`='$title',
`picurl`='$picurl',
`fname`='$fname',
`province_id`='{$province_id}',
`city_id`='{$postdb[city_id]}',
`zone_id`='{$postdb[zone_id]}',
`street_id`='{$postdb[street_id]}',
`my_trade`='$my_trade',
`qy_cate`='$qy_cate',
`qy_regmoney`='$qy_regmoney',
`qy_saletype`='$qy_saletype',
`qy_createtime`='$qy_createtime',
`qy_pro_ser`='$qy_pro_ser',
`my_buy`='$my_buy',
`qy_regplace`='$qy_regplace'
WHERE uid='$uid'");


$title=filtrate($title); 这里进行了个过滤

function filtrate($msg){
//$msg = str_replace('&','&',$msg);
//$msg = str_replace(' ',' ',$msg);
$msg = str_replace('"','"',$msg);
$msg = str_replace("'",''',$msg);
$msg = str_replace("<","&lt;",$msg);
$msg = str_replace(">","&gt;",$msg);
$msg = str_replace("\t"," &nbsp; &nbsp;",$msg);
//$msg = str_replace("\r","",$msg);
$msg = str_replace(" "," &nbsp; ",$msg);
return $msg;
}


这里过滤了单引号 转义符没过滤。
然后就带入到update中 入库了。
在hy/member/cankao.php中

$companydb=$db->get_one("SELECT * FROM {$_pre}company WHERE uid='$uid' LIMIT 1");
if(!$companydb[if_homepage]){
showerr("您还没有申请企业商铺,<a href='$Murl/member/post_company.php?action=apply'>点击这里申请企业商铺</a>,拥有自己的商铺");
}


这里查询出来了
$title = filtrate($title);
$url = filtrate($url);
$description = filtrate($description);
if($ck_id){
$db->query("UPDATE `{$_pre}friendlink` SET
title='$title',
url='$url',
description='$description',
yz=1
WHERE ck_id='$ck_id';");
}else{
$db->query("INSERT INTO `{$_pre}friendlink` ( `ck_id` , `uid` , `username` , `companyName` , `title` , `url` , `description` , `yz` ) VALUES ('', '$lfjuid', '$lfjid', '$companydb[title]', '$title', '$url', '$description', '1')");
}</code>
然后这里把出库的$companydb[title] 也带入到了查询当中 所以这里我们可以引入转义符了。
然后后面的变量刚好也是可以控制的 所以就可以注入了。

q1.jpg


把名字改成这样 然后

q2.jpg


报错了。
构造一下

q3.jpg


q4.jpg


成功出数据。

漏洞证明:

q4.jpg

修复方案:

else{
$companydb[title]=addslashes($companydb[title]);
$db->query("INSERT INTO `{$_pre}friendlink` ( `ck_id` , `uid` , `username` , `companyName` , `title` , `url` , `description` , `yz` ) VALUES ('', '$lfjuid', '$lfjid', '$companydb[title]', '$title', '$url', '$description', '1')");
}


对出库的转义一下把。

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


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:20

确认时间:2014-08-18 18:25

厂商回复:

感谢提出来

最新状态:

暂无