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

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

缺陷编号:wooyun-2014-049163

漏洞标题:ThinkSNS某功能平行权限2

相关厂商:ThinkSNS

漏洞作者: 齐迹

提交时间:2014-01-20 14:27

修复时间:2014-04-20 14:28

公开时间:2014-04-20 14:28

漏洞类型:非授权访问/权限绕过

危害等级:中

自评Rank:6

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-01-20: 细节已通知厂商并且等待厂商处理中
2014-01-21: 厂商已经确认,细节仅向厂商公开
2014-01-24: 细节向第三方安全合作伙伴开放
2014-03-17: 细节向核心白帽子及相关领域专家公开
2014-03-27: 细节向普通白帽子公开
2014-04-06: 细节向实习白帽子公开
2014-04-20: 细节向公众公开

简要描述:

ThinkSNS某功能多处平行权限

详细说明:

继续平行权限
还是刚才的文件
本打算补充一下的 结果已经过了审核了!所以就在提交一个!
问题发生在微吧模块
代码apps\weiba\index.action.php
行652

/**
* 删除帖子
* @return void
*/
public function postDel(){
$weibaid = D('weiba_post')->where('post_id='.intval($_POST['post_id']))->getField('weiba_id');
if ( !CheckWeibaPermission( '' , $weibaid , 'weiba_del') ){
if ( !CheckPermission('weiba_normal','weiba_del') ){
echo 0;return;
}
}
$post_id = $_POST['post_id'];
if(D('weiba_post')->where('post_id='.$post_id)->setField('is_del',1)){
$post_detail = D('weiba_post')->where('post_id='.$post_id)->find();
if(intval($_POST['log'])==1){
D('log')->writeLog($post_detail['weiba_id'],$this->mid,'删除了帖子“'.$post_detail['title'].'”','posts');
}
D('weiba')->where('weiba_id='.intval($_POST['weiba_id']))->setDec('thread_count');
//添加积分
model('Credit')->setUserCredit($this->mid,'delete_topic');
// 删除相应的微博信息
model('Feed')->doEditFeed($post_detail['feed_id'], 'delFeed', '', $this->mid);

echo 1;
}
}


POST参数直接进入了SQL
而且不是数组!
第一反应 注入把!
可惜 底层有防注入 目前尚未找到绕过方式!
不过我相信大牛们一定可以的!
我这里就 or 1=1就只有全部删除了!!
这个文件所有使用
if ( !CheckWeibaPermission( '' , $weiba['weiba_id'] ,'weiba_edit') )
进行权限检查的都存在绕过

function CheckWeibaPermission( $weiba_admin , $id , $action , $uid){
!$uid && $uid = $GLOBALS['ts']['mid'];
//超级管理员判断
if ( CheckPermission('core_admin','admin_login') ){
return true;
}
if ( $action ){
//用户组权限判断
if ( CheckPermission( 'weiba_admin' , $action ) ){
return true;
}
}
//吧主判断
if ( !$weiba_admin && $id ){
$map['weiba_id'] = $id;
$map['level'] = array('in','2,3');
$weiba_admin = D('weiba_follow')->where($map)->order('level desc')->field('follower_uid,level')->findAll();
$weiba_admin = getSubByKey( $weiba_admin , 'follower_uid' );
}
return in_array( $uid , $weiba_admin);
}


第一个参数为空的时候 就直接是管理员权限了!

漏洞证明:

thinksns_pxqx_3.jpg

修复方案:

1 intval一下把
2 CheckWeibaPermission方法应该完善一下了!

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


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:10

确认时间:2014-01-21 14:34

厂商回复:

非常感谢这位认真的白帽,临近假期响应慢了!

最新状态:

暂无


漏洞评价:

评论