catalogphp
1. 漏洞描述 2. 漏洞觸發條件 3. 漏洞影響範圍 4. 漏洞代碼分析 5. 防護方法 6. 攻防思考
1. 漏洞描述函數
ECSHOP支付插件存在SQL注入漏洞,此漏洞存在於/includes/modules/payment/alipay.php文件中,該文件是ECshop的支付寶插件。因爲ECShop使用了str_replace函數作字符串替換,黑客可繞過單引號限制構造SQL注入語句。只要開啓支付寶支付插件就能利用該漏洞獲取網站數據,且不須要註冊登入。GBK與UTF-8版本ECshop均存在此漏洞網站
Relevant Link:url
http://sebug.net/vuldb/ssvid-60643
2. 漏洞觸發條件
3. 漏洞影響範圍
4. 漏洞代碼分析spa
/includes/modules/payment/alipay.php.net
function respond() { if (!empty($_POST)) { foreach($_POST as $key => $data) { $_GET[$key] = $data; } } $payment = get_payment($_GET['code']); $seller_email = rawurldecode($_GET['seller_email']); $order_sn = str_replace($_GET['subject'], '', $_GET['out_trade_no']); //未對$order_sn進行有效注入過濾 $order_sn = trim($order_sn); ..
ECShop在/includes/init.php中有段代碼會將外界傳入的數據進行轉義,好比單引號;一樣在/includes/modules/payment/alipay.php中外界傳入的$_GET['subject']和$_GET['out_trade_no']也是被轉義過的,可是在該文件的str_replace()函數會將$_GET['out_trade_no']中的$_GET['subject']過濾掉(黑客輸入轉義符號,將轉義符自己過濾叼),最後通過str_replace()函數處理後引入單引號,使閉合單引號從新得到攻擊能力,觸發SQL注入插件
Relevant Link:code
http://sebug.net/vuldb/ssvid-61150
5. 防護方法blog
/includes/modules/payment/alipay.phpip
function respond() { if (!empty($_POST)) { foreach($_POST as $key => $data) { $_GET[$key] = $data; } } $payment = get_payment($_GET['code']); $seller_email = rawurldecode($_GET['seller_email']); $order_sn = str_replace($_GET['subject'], '', $_GET['out_trade_no']); /* 對$order_sn進行有效過濾 */ $order_sn = trim(addslashes($order_sn)); /* */ ..
Relevant Link:
http://bbs.ecshop.com/viewthread.php?tid=1125380&extra=page=1&orderby=replies&filter=172800
6. 攻防思考
Copyright (c) 2015 LittleHann All rights reserved