2016年4月21日Struts2官方发布两个CVE,其中CVE-2016-3081(S2-032)官方评级为高。
主要原因为在用户开启动态方法调用的情况下,会被攻击者实现远程代码执行攻击。
具体的漏洞分析网上已经有很多了,详细内容请参考:
http://blog.nsfocus.net/tech/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/2016/04/26/Struts2%E6%96%B9%E6%B3%95%E8%B0%83%E7%94%A8%E8%BF%9C%E7%A8%8B%E4%BB%A3%E7%A0%81%E6%89%A7%E8%A1%8C%E6%BC%8F%E6%B4%9E-CVE-2016-3081-%E5%88%86%E6%9E%90.html
截止到目前为止给出的修复建议为:
1. 关闭动态方法调用: 修改 Struts2 的配置文件,将“struts.enable.DynamicMethodInvocation” 设置为 false,如 <constant name="struts.enable.DynamicMethodInvocation" value="false" />; =“struts.enable.dynamicmethodinvocation”> 2.如条件允许前提下,可升级 Struts 版本至 Struts 2.3.20.2, Struts 2.3.24.2 或者 Struts 2.3.28.1 来修复漏洞,可进入此链接进行下载: https://struts.apache.org/download.cgi#struts23281
在没办法使用漏洞利用POC的情况下,通过判断以下两个信息来判断自己是否中招应该也可以的
(1)判断Struts2 的配置文件,将“struts.enable.DynamicMethodInvocation” 设置为true
(2)判断Struts2的版本是否在受影响版本的范围中
由以上信息确认到struts2版本既不在Struts 2.3.20.2, Struts 2.3.24.2 或者 Struts 2.3.28.1范围内,同时
struts.enable.DynamicMethodInvocation的设置又为true,以此判断已中招。
(若判断法方法哪位大神觉得不妥,欢迎拍砖指正)