Phpshe v1.7 SQL盲注漏洞(CVE-2019-9626)分析

2019-03-11 17:41:44208人阅读

0x01 背景描述

PHPSHE商城系统是一套开源的B2C商城系统,可以快速让用户建立独立个性化的网上商店,为用户提供了一个低成本、高效率的网上商城建设方案。其早期版本爆发过多个注入漏洞。

近期安全研究者发现了v1.7版本的多个注入漏洞,该漏洞是其中的一个。建议使用该套系统的用户尽快修复处理。

漏洞影响版本为:phpshe v 1.7,需要普通用户权限。

0x02 漏洞分析

该漏洞位于/module/index/cart.php文件中,当act参数的值为'pintuan'时,从客户端获取的pintuan_id参数的值将直接传递给pintuan_check函数,代码片段如图所示:

1.png

pintuan_check函数位于../hook/order.hook.php,当攻击者将恶意参数值传递给pintuan_id时,满足条件并且pintuan_id参数的值最终传递给pe_select函数。pintuan_check()函数代码如图:

2.png

在pe_select()函数中,pintuan_id参数的值经过_dowhere()函数的一些列处理,最后直接拼接到sql语句中,没有安全过滤。pe_select()函数位于../include/class/db.class.php,代码如图:

3.png

0x03 修复方法

该漏洞利用需要普通的注册用户权限,攻击者利用Poc,可以对受影响的漏洞版本进行注入攻击,有可能导致站点数据发生泄漏。

4.png

目前官方未提供修复后的新版本,用户可以自行修改代码进行修复。更改../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,转载需注明出处及本文链接 

0
现金券
0
兑换券
立即领取
领取成功