ECSHOP php商城系统过滤不严导致SQL注入漏洞
发布时间:2011-10-10 00:03:17 作者:佚名
我要评论
ECSHOP是一款开源免费的网上商店系统。由专业的开发团队升级维护,为您提供及时高效的技术支持,您还可以根据自己的商务特征对ECSHOP进行定制,增加自己商城的特色功能
影响版本:
ECSHOP 2.7.2 Release 0604
程序介绍:
ECSHOP是一款开源免费的网上商店系统。由专业的开发团队升级维护,为您提供及时高效的技术支持,您还可以根据自己的商务特征对ECSHOP进行定制,增加自己商城的特色功能。
漏洞分析:
在include_libcommon.php中存在如下函数
其中$id没有经过严格过滤就直接进入了SQL查询,导致一个SQL注射漏洞。
在系统的lib_order.php中存在一个该函数的调用
在flow.php中存在可控的输入源
$package->package_id来源于输入
解决方案:
厂商补丁
ECSHOP
----------
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:
http://www.ecshop.com
信息来源:
来源: WooYun
ECSHOP 2.7.2 Release 0604
程序介绍:
ECSHOP是一款开源免费的网上商店系统。由专业的开发团队升级维护,为您提供及时高效的技术支持,您还可以根据自己的商务特征对ECSHOP进行定制,增加自己商城的特色功能。
漏洞分析:
在include_libcommon.php中存在如下函数
PHP Code复制内容到剪贴板
- function get_package_info($id)
- {
- global $ecs, $db,$_CFG;
- $now = gmtime();
- $sql = "SELECT act_id AS id, act_name AS package_name, goods_id , goods_name, start_time, end_time, act_desc, ext_info".
- " FROM " . $GLOBALS['ecs']->table('goods_activity') .
- " WHERE act_id='$id' AND act_type = " . GAT_PACKAGE;
- $package = $db->GetRow($sql);
- /* 将时间转成可阅读格式 */
- if ($package['start_time'] <= $now && $package['end_time'] >= $now)
- {
- $package['is_on_sale'] = "1";
- }
- else
- {
- $package['is_on_sale'] = "0";
- }
- $package['start_time'] = local_date('Y-m-d H:i', $package['start_time']);
- $package['end_time'] = local_date('Y-m-d H:i', $package['end_time']);
- $row = unserialize($package['ext_info']);
- unset($package['ext_info']);
- if ($row)
- {
- foreach ($row as $key=>$val)
- {
- $package[$key] = $val;
- }
- }
- $sql = "SELECT pg.package_id, pg.goods_id, pg.goods_number, pg.admin_id, ".
- " g.goods_sn, g.goods_name, g.market_price, g.goods_thumb, g.is_real, ".
- " IFNULL(mp.user_price, g.shop_price * '$_SESSION[discount]') AS rank_price " .
- " FROM " . $GLOBALS['ecs']->table('package_goods') . " AS pg ".
- " LEFT JOIN ". $GLOBALS['ecs']->table('goods') . " AS g ".
- " ON g.goods_id = pg.goods_id ".
- " LEFT JOIN " . $GLOBALS['ecs']->table('member_price') . " AS mp ".
- "ON mp.goods_id = g.goods_id AND mp.user_rank = '$_SESSION[user_rank]' ".
- " WHERE pg.package_id = " . $id. " ".
- " ORDER BY pg.package_id, pg.goods_id";
- $goods_res = $GLOBALS['db']->getAll($sql);
- $market_price = 0;
其中$id没有经过严格过滤就直接进入了SQL查询,导致一个SQL注射漏洞。
在系统的lib_order.php中存在一个该函数的调用
PHP Code复制内容到剪贴板
- function add_package_to_cart($package_id, $num = 1)
- {
- $GLOBALS['err']->clean();
- /* 取得礼包信息 */
- $package = get_package_info($package_id);
- if (emptyempty($package))
- {
- $GLOBALS['err']->add($GLOBALS['_LANG']['goods_not_exists'], ERR_NOT_EXISTS);
- return false;
- }
PHP Code复制内容到剪贴板
- $package = $json->decode($_POST['package_info']);
- /* 如果是一步购物,先清空购物车 */
- if ($_CFG['one_step_buy'] == '1')
- {
- clear_cart();
- }
- /* 商品数量是否合法 */
- if (!is_numeric($package->number) || intval($package->number) <= 0)
- {
- $result['error'] = 1;
- $result['message'] = $_LANG['invalid_number'];
- }
- else
- {
- /* 添加到购物车 */
- if (add_package_to_cart($package->package_id, $package->number))
- {
- if ($_CFG['cart_confirm'] > 2)
$package->package_id来源于输入
解决方案:
厂商补丁
ECSHOP
----------
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:
http://www.ecshop.com
信息来源:
来源: WooYun
相关文章
本文来介绍一下thinkphp官方修复的一个getshell漏洞,框架对控制器没有进行足够的检测导致的一处getshell,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随2018-12-12记 FineUI 官方论坛discuz所遭受的一次真实网络攻击
这篇文章主要介绍了记 FineUI 官方论坛discuz所遭受的一次真实网络攻击,需要的朋友可以参考下2018-11-30- 这篇文章主要介绍了Linux 下多种反弹 shell 方法,需要的朋友可以参考下2017-09-06
- 这篇文章主要为大家介绍了基于反射的XSS攻击,主要依靠站点服务端返回脚本,在客户端触发执行从而发起Web攻击,需要的朋友可以参考下2017-05-20
- 这篇文章主要介绍了SQL注入黑客防线网站实例分析,需要的朋友可以参考下2017-05-19
- 这里为大家分享一下sql注入的一些语句,很多情况下由于程序员的安全意识薄弱或基本功不足就容易导致sql注入安全问题,建议大家多看一下网上的安全文章,最好的防范就是先学2017-05-19
- 对于目前流行的sql注入,程序员在编写程序时,都普遍的加入防注入程序,有些防注入程序只要在我们提交一些非法的参数后,就会自动的记录下你的IP地址,提交的非法参数和动作等,2017-04-29
- 我们友情进行XSS检查,偶然跳出个小弹窗,其中我们总结了一些平时可能用到的XSS插入方式,方便我们以后进行快速检查,也提供了一定的思路,其中XSS有反射、存储、DOM这三类2016-12-27
- 这篇文章主要介绍了Python 爬虫使用动态切换ip防止封杀的相关资料,需要的朋友可以参考下2016-10-08
- 这篇文章主要介绍了使用爬虫采集网站时,解决被封IP的几种方法的相关资料,需要的朋友可以参考下2016-10-08



最新评论