Struts2/XWork 安全漏洞及解决办法Struts2/XWork < 2.2.0 Remote Command Execution Vulnerability

Struts2/XWork < 2.2.0 Remote Command Execution Vulnerability Fix

原文详见:http://www.javaeye.com/topic/720209

因为xwork的OGNL漏洞,经过utf-8转义的“#”即“\u0023”会被XWork解析,并因此带来安全隐患。

攻击者可以根据需要构造任意语句并执行,比如

java.lang.Runtime.getRuntime().exit(1);

java.lang.Runtime.getRuntime().exec(“rm –rf /root”)

等等。

由此带来的安全隐患是巨大的。

因为项目中还用的是Webwork,因此目前针对Struts2的补丁都不适用(因为Struts2依赖于xwork 2.x,而webwork依赖于xwork 1.x),因此只能自己修改xwork 1.x源码并编译一下了。

修改过程如下:

修改xwork 1.2.3 src 里的com.opensymphony.xwork.interceptor.ParametersInterceptor#acceptableName(String name),在方法最前面加上:



Java代码:

  1. boolean foundMatch = false;
  2. foundMatch = name.contains(“\u0023”);
  3. if(foundMatch){
  4. return false;
  5. }


然后用SourceLevel 1.5编译后打成jar替换原来的jar即可。
加载评论框需要翻墙