漏洞概要 关注数(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标签: 无
漏洞详情
披露状态:
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
厂商回复:
感谢对国航安全的帮助!
最新状态:
暂无