漏洞概要 关注数(7) 关注此漏洞
缺陷编号: WooYun-2014-69266
漏洞标题: Ecmall某处SQL注入第五弹&一处能引入单引号的地方
相关厂商: ShopEx
漏洞作者: ′雨。
提交时间: 2014-07-22 11:10
公开时间: 2014-10-20 11:12
漏洞类型: SQL注射漏洞
危害等级: 低
自评Rank: 1
漏洞状态: 厂商已经确认
漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 help@wooyun.org
Tags标签: 无
漏洞详情
披露状态:
2014-07-22: 细节已通知厂商并且等待厂商处理中
2014-07-22: 厂商已经确认,细节仅向厂商公开
2014-07-25: 细节向第三方安全合作伙伴开放(绿盟科技、唐朝安全巡航、无声信息)
2014-09-15: 细节向核心白帽子及相关领域专家公开
2014-09-25: 细节向普通白帽子公开
2014-10-05: 细节向实习白帽子公开
2014-10-20: 细节向公众公开
简要描述:
做完作业再看看0618补丁。
非二次注入, 连载了这么多弹 有感情了。
应该是最后一弹了, 看在是最后一弹了 也别再3rank了把。给高点把。
一枚注入 & 另外一处能引入单引号或者转义符 不过也就只能引入这个而已这里不太好利用。
详细说明:
首先还是把我之前发的ecmall的那两个先确认了来下撒?
刚在bbs下的20140618的补丁
0x01 能引入单引号或者转义符的地方
首先来看看my_goods.app.php中的 这函数
省略一点
主要来看这里的
$spec_2 = trim($_POST['spec_2'][$key]);
'sku' => html_script(trim($_POST['sku'][$key])),
这里$key带入到了后面 而且$key是post来的 所以是可控的。
如果这时候我们提交的是字符串 就成了截取字符的了。
因为' 会被ecmall的全局addslashes转义成\'
如果这时候截取第一个字符就成了\
截取第二个字符就是'
引入了转义符 如果 有两个连着的可控的话可以这样
'\','user()#' 之类的就能注入了 可惜这里只有一个可控。
这里spec_2 可以截取 无奈price被过滤了。
stock也可以截取 可是被intval了 sku 也可以截取可是已经是最后一个了。。
然后在edit中调用了这函数。
这里截取第2个字符 成功引入单引号。
截取第一个字符 成功引入转义符。
0x02 能成功的注入。。
首先来看一下ecmall的全局文件
判断gpc是否开启 如果关闭 就调用addslashes_deep来对get post cookie进行转义
这里可以看到对数组中的value进行了addslashes 没有对key进行addslashes。
在my_goods.app.php中
看这函数
对post的foreach 出来后 直接把post里的key 带入到了查询当中。
结合刚才说的数组中的key是不会被addslashes的 所以造成了注入。
调用这函数的地方随便找一处把。
漏洞证明:
见上面 。
修复方案:
过滤 转义
版权声明:转载请注明来源 ′雨。@乌云
漏洞回应
厂商回应:
危害等级:中
漏洞Rank:10
确认时间:2014-07-22 13:27
厂商回复:
谢谢您的支持 ′ 雨。 点个赞
非常感谢您为shopex信息安全做的贡献
我们将尽快修复完善
非常感谢
最新状态:
暂无
漏洞评价:
对本漏洞信息进行评价,以更好的反馈信息的价值,包括信息客观性,内容是否完整以及是否具备学习价值