当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(24) 关注此漏洞

缺陷编号:wooyun-2014-061860

漏洞标题:国航某站代码执行(防护绕过)

相关厂商:中国国际航空股份有限公司

漏洞作者: 路人甲

提交时间:2014-05-22 12:17

修复时间:2014-07-06 12:19

公开时间:2014-07-06 12:19

漏洞类型:设计缺陷/逻辑错误

危害等级:高

自评Rank:15

漏洞状态:厂商已经确认

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-05-22: 细节已通知厂商并且等待厂商处理中
2014-05-22: 厂商已经确认,细节仅向厂商公开
2014-06-01: 细节向核心白帽子及相关领域专家公开
2014-06-11: 细节向普通白帽子公开
2014-06-21: 细节向实习白帽子公开
2014-07-06: 细节向公众公开

简要描述:

估计是开发人员自己实现的对st2命令执行漏洞的防护,可以被绕过。

详细说明:

估计是开发人员自己实现的对st2命令执行漏洞的防护,可以被绕过。

漏洞证明:

国航订单查询系统使用了st2框架:

11.jpg


使用s2-016进行测试,发现可以redirect:

12.jpg


尝试执行ognl表达式,失败,可以确定是开发人员自己实现了过滤代码,过滤了redirect:${ 这样的字符串,或者是某些waf的防护:

13.jpg


这样可以安全吗?来看看st2这里解析OGNL表达式的代码:

14.jpg


可以看到这个地方程序回去循环查找字符串${ ,找到之后会将它后面的字符串作为OGNL表达式执行,也就是说这个地方并不要求字符串以$开头,只要字符串中含有${,程序就会寻找到它的位置,于是我们可以构造这样的代码redirect:bypass${new java.io.BufferedReader(new java.io.InputStreamReader(new java.lang.ProcessBuilder({'pwd'}).start().getInputStream())).readLine()}
成功执行代码:

15.jpg


修复方案:

还是升级st2框架吧,自己过滤的话,考虑直接过滤redirect:这样的关键字。

版权声明:转载请注明来源 路人甲@乌云


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:20

确认时间:2014-05-22 16:42

厂商回复:

感谢对国航安全的帮助!

最新状态:

暂无