2019-03-11 17:41:44208人阅读
PHPSHE商城系统是一套开源的B2C商城系统,可以快速让用户建立独立个性化的网上商店,为用户提供了一个低成本、高效率的网上商城建设方案。其早期版本爆发过多个注入漏洞。
近期安全研究者发现了v1.7版本的多个注入漏洞,该漏洞是其中的一个。建议使用该套系统的用户尽快修复处理。
漏洞影响版本为:phpshe v 1.7,需要普通用户权限。
该漏洞位于/module/index/cart.php文件中,当act参数的值为'pintuan'时,从客户端获取的pintuan_id参数的值将直接传递给pintuan_check函数,代码片段如图所示:
pintuan_check函数位于../hook/order.hook.php,当攻击者将恶意参数值传递给pintuan_id时,满足条件并且pintuan_id参数的值最终传递给pe_select函数。pintuan_check()函数代码如图:
在pe_select()函数中,pintuan_id参数的值经过_dowhere()函数的一些列处理,最后直接拼接到sql语句中,没有安全过滤。pe_select()函数位于../include/class/db.class.php,代码如图:
该漏洞利用需要普通的注册用户权限,攻击者利用Poc,可以对受影响的漏洞版本进行注入攻击,有可能导致站点数据发生泄漏。
目前官方未提供修复后的新版本,用户可以自行修改代码进行修复。更改../module/index/cart.php文件中第28行,对客户端获取的pintuan_id进行类型转换。修改后的代码如下:
//对pintuan_id参数的值进行强制的类型转换
if ($act == 'pintuan' && !pintuan_check($product['huodong_id'], intval($_g_pintuan_id))) pe_jsonshow(array('result'=>false, 'show'=>'拼团无效或结束'));
$cart = $db->pe_select('cart', array('cart_act'=>'cart', 'user_id'=>$user_id, 'product_guid'=>$product_guid));
if ($act == 'add' && $cart['cart_id'])
{
$sql_set['product_num'] = $cart['product_num'] + $product_num;
if ($product['product_num'] < $sql_set['product_num']) pe_jsonshow(array('result'=>false, 'show'=>"库存仅剩{$product['product_num']}件"));
if (!$db->pe_update('cart', array('cart_id'=>$cart['cart_id']), $sql_set)) pe_jsonshow(array('result'=>false, 'show'=>'异常请重新操作'));
$cart_id = $cart['cart_id'];
}
本文来自百度安全SiemPent Team,转载需注明出处及本文链接