2014-05-22:细节已通知厂商并且等待厂商处理中
2014-05-22:厂商已经确认,细节仅向厂商公开
2014-06-01:细节向核心白帽子及相关领域专家公开
2014-06-11:细节向普通白帽子公开
2014-06-21:细节向实习白帽子公开
2014-07-06:细节向公众公开
估计是开发人员自己实现的对st2命令执行漏洞的防护,可以被绕过。
详细说明:估计是开发人员自己实现的对st2命令执行漏洞的防护,可以被绕过。
国航订单查询系统使用了st2框架:
使用s2-016进行测试,发现可以redirect:
尝试执行ognl表达式,失败,可以确定是开发人员自己实现了过滤代码,过滤了redirect:${ 这样的字符串,或者是某些waf的防护:
这样可以安全吗?来看看st2这里解析OGNL表达式的代码:
可以看到这个地方程序回去循环查找字符串${ ,找到之后会将它后面的字符串作为OGNL表达式执行,也就是说这个地方并不要求字符串以$开头,只要字符串中含有${,程序就会寻找到它的位置,于是我们可以构造这样的代码redirect:bypass${new java.io.BufferedReader(new java.io.InputStreamReader(new java.lang.ProcessBuilder({'pwd'}).start().getInputStream())).readLine()}
成功执行代码:
还是升级st2框架吧,自己过滤的话,考虑直接过滤redirect:这样的关键字。
版权声明:转载请注明来源 路人甲@乌云 漏洞回应 厂商回应:危害等级:高
漏洞Rank:20
确认时间:2014-05-22 16:42
厂商回复:感谢对国航安全的帮助!
最新状态:暂无