[公开漏洞]国航某站代码执行(防护绕过)

来源:WooYun 浏览:647次 时间:2014-07-06
做网站找雨过天晴工作室
国航某站代码执行(防护绕过) 相关厂商: 中国国际航空股份有限公司 漏洞作者:路人甲 提交时间:2014-05-22 12:17 公开时间:2014-07-06 12:19 漏洞类型:设计缺陷/逻辑错误 危害等级:高 自评Rank:15 漏洞状态: 厂商已经确认 漏洞来源:http://www.wooyun.org Tags标签: 设计缺陷/边界绕过 漏洞详情 披露状态:

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

厂商回复:

感谢对国航安全的帮助!

最新状态:

暂无