Ecshop 2.72 lib_payment.php 注入

includes/modules/payment/alipay.php

204~268 行:

213         $payment  = get_payment($_GET['code']);
214         $seller_email = rawurldecode($_GET['seller_email']);
215         $order_sn = str_replace($_GET['subject'], '', $_GET['out_trade_no']);
216         $order_sn = trim($order_sn);
217
218         /* 检查支付的金额是否相符 */
219         if (!check_money($order_sn, $_GET['total_fee']))
220         {
221             return false;
222         }

调用了 check_money 函数:

109 function check_money($log_id, $money)
110 {
111     $sql = 'SELECT order_amount FROM ' . $GLOBALS['ecs']->table('pay_log') .
112               " WHERE log_id = '$log_id'";
113     $amount = $GLOBALS['db']->getOne($sql);
114
115     if ($money == $amount)
116     {
117         return true;
118     }
119     else
120     {
121         return false;
122     }
123 }

第 111 行出现了漏洞。

具体见:http://www.freebuf.com/articles/web/7387.html