### 简要描述: 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 而且不是数组!...
### 简要描述: 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); } ``` 第一个参数为空的时候 就直接是管理员权限了! ### 漏洞证明: [<img src="https://images.seebug.org/upload/201401/17155421fa667fbbcd883e593a893d0a11ebb464.jpg" alt="thinksns_pxqx_3.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201401/17155421fa667fbbcd883e593a893d0a11ebb464.jpg)