`
竹临仙
  • 浏览: 36843 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

struts漏洞

    博客分类:
  • SSH
 
阅读更多

最近struts漏洞特别火,于是参考例子把自己之前的项目试了一遍,全部都有这个问题。

比如项目中一个有权限路径:http://10.196.144.205:8080/kms/menuAction!getAccountMenu.action

然后输入下面的路径:

http://10.196.144.205:8080/kms/menuAction!getAccountMenu.action?('\u0023_memberAccess[\'allowStaticMethodAccess\']')(meh)=true&(aaa)(('\u0023context[\'xwork.MethodAccessor.denyMethodExecution\']\u003d\u0023foo')(\u0023foo\u003dnew%20java.lang.Boolean("false")))&(asdf)(('\u0023rt.exit(1)')(\u0023rt\u003d@java.lang.Runtime@getRuntime()))=1

类似于 java.lang.Runtime.getRuntime().exit(1);  就直接可以把tomcat停掉。所以只有有权限就可以执行任何DOS命令。

解决办法:

Struct 2 安全漏洞 可以通过升级Struct 到2.3.15.1以上版本解决
目前在2.3版本上做了升级测试(struct升级到最新的2.3.15.1),针对CMS升级步骤如下:
1.增加 aspectjweaver-1.6.1.jar 和 commons-lang3-3.1.jar
2.替换  struts-core-2.1.6.jar,struts-dwr-plugin-2.1.6.jar , struts2-junit-plugin-2.1.8.1.jar,struts2-spring-

plugin-2.1.6.jar ,struts2-tiles-plugin-2.3.15.1.jar成最新的2.3.15.1版本
3.xwork-2.1.2.jar 替换为xwork-core-2.3.15.1.jar ,ognl-2.6.11.jar替换为ognl-3.0.6.jar
4.web.xml做如下修改:
一、<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
</filter>
 
修改为:
 
 <filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
            <init-param>
             <param-name>struts.action.extension</param-name>
             <param-value>action</param-value>
           </init-param>
</filter>
 
二、去掉<filter>
<filter-name>struts2-cleanup</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ActionContextCleanUp
</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>struts2-cleanup</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
 
5.tomcat 最好使用6.0.16以上版本

6.追加:
jsonplugin-0.34.jar 替换成 struts2-json-plugin-2.3.15.1.jar

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics