本文标签:ECSHOP,过滤不严
影响版本: 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;
- }
在flow.php中存在可控的输入源
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
|