### 简要描述:
BiWEB最新商城版绕过过滤注入漏洞大礼包
### 详细说明:
在wooyun上看到了有人提了BiWEB商城版的一个XSS漏洞: WooYun: BIWEB商城版XSS盲打cookie ,也有人提了SQL注入,我来找找其他的漏洞吧。去官网下BiWEB商城版最新的5.8.4来看看。
BiWEB对用户输入进行了全局过滤,但是这种过滤方法比较NC,这个漏洞就是来绕过全局过滤的。先来看看这个全局过滤方法吧/config/filtrate.inc.php
```
<?php
//过滤GET或POST的值,去除两端空格和转义符号
if ($_SERVER['REQUEST_METHOD'] == 'POST'){
check::filtrateData($_POST,$arrGPdoDB['htmlspecialchars']);
}elseif($_SERVER['REQUEST_METHOD'] == 'GET'){
check::filtrateData($_GET,$arrGPdoDB['htmlspecialchars']);
}
?>
```
这个过滤方法中,如果是POST方法就只对通过POST提交的用户数据进行过滤,GET方法同理。突然就想到一个方法,REQUEST_METHOD还是POST,但是在url中带入用户数据(GET方法),然后程序中用$_GET数组来获取数据的话,那就可以获得通过url提交的数据,并且没有经过全局过滤,这样就绕过了全局过滤。
在BiWEB最新商城版中找到了不少可以这样绕过过滤的,在这里打包一起提了吧。
```
/ads/adminu/modifyinfo.php
/brand/adminu/modifyinfo.php
/client/adminu/modifyinfo.php
/deal/adminu/modifyinfo.php
/download/adminu/modifyinfo.php
/grace/adminu/modifyinfo.php
/largess/adminu/modifyinfo.php
/news/adminu/modifyinfo.php
/product/adminu/modifyinfo.php
/qualification/adminu/modifyinfo.php
```
这里以/brand/adminu/modifyinfo.php中的漏洞为例进行说明
```
无关代码
$objWebInit = new brand();
//数据库连接参数
$objWebInit->setDBG($arrGPdoDB);
//smarty参数
$objWebInit->arrGSmarty = $arrGSmarty;
//图片上传参数
$objWebInit->arrGPic = $arrGPic;
$objWebInit->db();
// 取得文章信息
$arrInfo = $objWebInit->getInfo($_GET['id']);
if($arrInfo['user_id']!=$_SESSION['user_id']) check::AlertExit("错误:此信息不是您发布的,您无权修改!",-1);
无关代码
```
继续去看看getInfo(),在/web_common5.8/php_common.php
```
/**
* 取得信息内容
* @author 肖飞
* @param int $intInfoID 信息ID
* @return void
*/
function getInfo($intInfoID,$field = '*',$pass=null,$add=false){
if($add) $this->updateClicktimes(" Where id =".$intInfoID);
if($pass!=null) $where= " and pass='$pass'";
else $where='';
$strSQL = "SELECT $field FROM $this->tablename2 ".
" Where id ='".$intInfoID."'".$where;
$rs = $this->db->query($strSQL);
$arrData = $rs->fetchall();
if(!empty($arrData[0]['structon_tb'])) $arrData = $this->loadTableFieldG($arrData);
return current($arrData);
}
```
可以看出,整个过程中没有其他的过滤,只要可以绕过全局过滤,就可以注入。
如果按正常的情况使用GET提交,单引号被全局过滤编码,如下:
[<img src="https://images.seebug.org/upload/201411/27233750e955771f1eb3d9ce2299c9d81c22ab43.jpg" alt="单引号被编码副本.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201411/27233750e955771f1eb3d9ce2299c9d81c22ab43.jpg)
把GET方法改为POST提交,成功引入单引号,如下:
[<img src="https://images.seebug.org/upload/201411/27233802dfd092e861566971d8c87688668a83d3.jpg" alt="单引号被引入副本.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201411/27233802dfd092e861566971d8c87688668a83d3.jpg)
成功注入,管理员用户名及密码如下图中所示:
[<img src="https://images.seebug.org/upload/201411/2723381645bdee7e44d74c69fc9d58aaa048c2b8.jpg" alt="注入成功副本.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201411/2723381645bdee7e44d74c69fc9d58aaa048c2b8.jpg)
### 漏洞证明:
见 详细说明
暂无评论