漏洞概要 关注数(55) 关注此漏洞
缺陷编号: WooYun-2013-26458
漏洞标题: ecshop最新版本前台二次注入系列(2)
相关厂商: ShopEx
漏洞作者: blue
提交时间: 2013-06-21 07:55
公开时间: 2013-09-19 07:56
漏洞类型: SQL注射漏洞
危害等级: 高
自评Rank: 20
漏洞状态: 厂商已经确认
漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 help@wooyun.org
Tags标签: sql注射漏洞利用技巧 二次注入
漏洞详情
披露状态:
2013-06-21: 细节已通知厂商并且等待厂商处理中
2013-06-21: 厂商已经确认,细节仅向厂商公开
2013-06-24: 细节向第三方安全合作伙伴开放(绿盟科技、唐朝安全巡航、无声信息)
2013-08-15: 细节向核心白帽子及相关领域专家公开
2013-08-25: 细节向普通白帽子公开
2013-09-04: 细节向实习白帽子公开
2013-09-19: 细节向公众公开
简要描述:
二次注入第二枚,这个点的注入内容至少进出数据库6次才最终到达了注入结果页面,当然全程可控。
详细说明:
先上注入结果图:
SQL注入流程:
1.插入注入代码(goods_attr)至订单商品(/wholesale.php可以插入,即商品批发页面,这里的goods_attr和http://**.**.**.**/bugs/wooyun-2010-026421里goods_attr_id是不同的,之前的漏洞即正常在商品页面加入购物车是不能控制goods_attr的,当时goods_attr从数据库商品属性表读取)。
2.将1生成的订单在用户中心订单查看页执行“放回购物车”操作。
3.查看购物车页面,注入代码执行
代码分析:
1./includes/lib_order.php get_cart_goods()方法(读取购物车的商品),1626行起
2. /wholesale.php 160行起(将商品提交到购物车,实际上是提交到了$_SESSION)
3./wholesale.php 380行起(act=='submit_order'), 将$_SESSION里的数据写入订单
4.到3为止,已经可以将注入代码写到订单商品表(order_goods)里了,接下来就是进入购物车数据表,在用户中心查看订单时有个"放回购物车"操作,可以将订单商品放到购物车数据表(cart)里,然后在查看购物车页面/flow.php即能看到注入结果了(见1的代码分析)
/includes/lib_transaction.php return_to_cart方法 854行起
漏洞证明:
修复方案:
/includes/lib_order.php get_cart_goods()方法对goods_attr过滤
版权声明:转载请注明来源 blue@乌云
漏洞回应
厂商回应:
危害等级:高
漏洞Rank:15
确认时间:2013-06-21 11:00
厂商回复:
非常感谢您为shopex信息安全做的贡献
我们将尽快修复
非常感谢
最新状态:
暂无
漏洞评价:
对本漏洞信息进行评价,以更好的反馈信息的价值,包括信息客观性,内容是否完整以及是否具备学习价值