ECSHOP php商城系统过滤不严导致SQL注入漏洞

所属分类: 网络安全 / 脚本攻防 阅读数: 1690
收藏 0 赞 0 分享
影响版本:
ECSHOP 2.7.2 Release 0604
程序介绍:
ECSHOP是一款开源免费的网上商店系统。由专业的开发团队升级维护,为您提供及时高效的技术支持,您还可以根据自己的商务特征对ECSHOP进行定制,增加自己商城的特色功能。
漏洞分析:
在include_libcommon.php中存在如下函数
PHP Code复制内容到剪贴板
  1. function get_package_info($id)      
  2. {      
  3.     global $ecs$db,$_CFG;      
  4.       
  5.     $now = gmtime();      
  6.       
  7.     $sql = "SELECT act_id AS id,  act_name AS package_name, goods_id , goods_name, start_time, end_time, act_desc, ext_info".      
  8.            " FROM " . $GLOBALS['ecs']->table('goods_activity') .      
  9.            " WHERE act_id='$id' AND act_type = " . GAT_PACKAGE;      
  10.       
  11.     $package = $db->GetRow($sql);      
  12.       
  13.     /* 将时间转成可阅读格式 */      
  14.     if ($package['start_time'] <= $now && $package['end_time'] >= $now)      
  15.     {      
  16.         $package['is_on_sale'] = "1";      
  17.     }      
  18.     else      
  19.     {      
  20.         $package['is_on_sale'] = "0";      
  21.     }      
  22.     $package['start_time'] = local_date('Y-m-d H:i'$package['start_time']);      
  23.     $package['end_time']   = local_date('Y-m-d H:i'$package['end_time']);      
  24.     $row = unserialize($package['ext_info']);      
  25.     unset($package['ext_info']);      
  26.     if ($row)      
  27.     {      
  28.         foreach ($row as $key=>$val)      
  29.         {      
  30.             $package[$key] = $val;      
  31.         }      
  32.     }      
  33.       
  34.     $sql = "SELECT pg.package_id, pg.goods_id, pg.goods_number, pg.admin_id, ".      
  35.            " g.goods_sn, g.goods_name, g.market_price, g.goods_thumb, g.is_real, ".      
  36.            " IFNULL(mp.user_price, g.shop_price * '$_SESSION[discount]') AS rank_price " .      
  37.            " FROM " . $GLOBALS['ecs']->table('package_goods') . " AS pg ".      
  38.            "   LEFT JOIN "$GLOBALS['ecs']->table('goods') . " AS g ".      
  39.            "   ON g.goods_id = pg.goods_id ".      
  40.            " LEFT JOIN " . $GLOBALS['ecs']->table('member_price') . " AS mp ".      
  41.                 "ON mp.goods_id = g.goods_id AND mp.user_rank = '$_SESSION[user_rank]' ".      
  42.            " WHERE pg.package_id = " . $id" ".      
  43.            " ORDER BY pg.package_id, pg.goods_id";      
  44.       
  45.     $goods_res = $GLOBALS['db']->getAll($sql);      
  46.       
  47.     $market_price        = 0;    

其中$id没有经过严格过滤就直接进入了SQL查询,导致一个SQL注射漏洞。
在系统的lib_order.php中存在一个该函数的调用
PHP Code复制内容到剪贴板
  1. function add_package_to_cart($package_id$num = 1)      
  2. {      
  3.     $GLOBALS['err']->clean();      
  4.     /* 取得礼包信息 */      
  5.     $package = get_package_info($package_id);      
  6.     if (emptyempty($package))      
  7.     {      
  8.         $GLOBALS['err']->add($GLOBALS['_LANG']['goods_not_exists'], ERR_NOT_EXISTS);      
  9.         return false;      
  10.     }  
在flow.php中存在可控的输入源
PHP Code复制内容到剪贴板
  1. $package = $json->decode($_POST['package_info']);      
  2.     /* 如果是一步购物,先清空购物车 */      
  3.     if ($_CFG['one_step_buy'] == '1')      
  4.     {      
  5.         clear_cart();      
  6.     }      
  7.     /* 商品数量是否合法 */      
  8.     if (!is_numeric($package->number) || intval($package->number) <= 0)      
  9.     {      
  10.         $result['error']   = 1;      
  11.         $result['message'] = $_LANG['invalid_number'];      
  12.     }      
  13.     else      
  14.     {      
  15.         /* 添加到购物车 */      
  16.         if (add_package_to_cart($package->package_id, $package->number))      
  17.         {      
  18.             if ($_CFG['cart_confirm'] > 2)   

$package->package_id来源于输入
解决方案:
厂商补丁
ECSHOP
----------
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:
http://www.ecshop.com
信息来源:
来源: WooYun
更多精彩内容其他人还在看

网站个人渗透技巧收集与总结

这篇文章主要介绍了网站个人渗透技巧收集与总结 ,大家也要注意一下不要犯下面的错误,需要的朋友可以参考下
收藏 0 赞 0 分享

网站MYSQL数据库高级爆错注入原分析

国内只有一大堆高级爆错的利用代码 没人分析原因 这个是去官网查资料后分析给出的,需要的朋友可以参考下
收藏 0 赞 0 分享

详解如何通过“鼠洞”控制电脑

大家都知道,没有一台电脑是完全安全的,都有一个攻破点,下面小编就以实例来讲解一下,一起来看看吧
收藏 0 赞 0 分享

浅谈史上最大DDoS攻击的本质与防范

DDos攻击是现在大部分用户最喜欢的一个话题,近两年来发展态势也渐趋平缓,欧洲反垃圾邮件组织Spamhaus突然遭受到高达300Gbps的大流量DDos攻击被认为是史上最大DDoS攻击,下面小编带你一起分析分析
收藏 0 赞 0 分享

使用爬虫采集网站时,解决被封IP的几种方法

这篇文章主要介绍了使用爬虫采集网站时,解决被封IP的几种方法的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

Python 爬虫使用动态切换ip防止封杀

这篇文章主要介绍了Python 爬虫使用动态切换ip防止封杀的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

XSS绕过技术 XSS插入绕过一些方式总结

我们友情进行XSS检查,偶然跳出个小弹窗,其中我们总结了一些平时可能用到的XSS插入方式,方便我们以后进行快速检查,也提供了一定的思路,其中XSS有反射、存储、DOM这三类,至于具体每个类别的异同之处,本文不做学术介绍,直接介绍实际的插入方式
收藏 0 赞 0 分享

一句话木马后门在防注入中的重生

对于目前流行的sql注入,程序员在编写程序时,都普遍的加入防注入程序,有些防注入程序只要在我们提交一些非法的参数后,就会自动的记录下你的IP地址,提交的非法参数和动作等,同时也把非法提交的数据写入了系统的后缀为ASP的文件中,这也给了我们一些可利用的地方
收藏 0 赞 0 分享

ASP+PHP 标准sql注入语句(完整版)

这里为大家分享一下sql注入的一些语句,很多情况下由于程序员的安全意识薄弱或基本功不足就容易导致sql注入安全问题,建议大家多看一下网上的安全文章,最好的防范就是先学会攻击
收藏 0 赞 0 分享

SQL注入黑客防线网站实例分析

这篇文章主要介绍了SQL注入黑客防线网站实例分析,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多