天天看點

Struts2漏洞2.0.xx或2.3.28.1更新為Struts-2.5.12

搞了好糾結,終于被我搞定了。

1、struts2.0.X更新到struts-2.5.12則删除以下原先WEB-INF/lib中jar包:

路徑:..\xxx\WEB-INF\lib,删除14個jar

commons-fileupload-1.2.1.jar

commons-io-1.4.jar

commons-lang-2.3.jar

commons-logging-1.0.4.jar

freemarker-2.3.8.jar

javassist-3.4.GA.jar

log4j-1.2.9.jar

json-lib-2.1-jdk15-j4.jar

jsonplugin-0.31-j4.jar

ognl-2.6.11.jar

struts2-codebehind-plugin-2.0.9-j4.jar

struts2-core-j4-2.0.9.jar

struts2-spring-plugin-2.0.9-j4.jar

xwork-j4-2.0.4.jar

xerces-2.6.2.jar

struts2.3.28.1更新到struts-2.5.12則删除以下原先WEB-INF/lib中jar包:

路徑:..\xxx\WEB-INF\lib,删除12個jar

commons-fileupload-1.2.1.jar

commons-io-2.2.jar

commons-lang-2.3.jar

commons-lang3-3.2.jar

freemarker-2.3.22.jar

javassist-3.11.0.GA.jar

log4j-1.2.9.jar

ognl-3.0.14.jar

struts2-core-2.3.28.1.jar

struts2-json-plugin-2.3.28.1.jar

struts2-spring-plugin-2.3.28.1.jar

xwork-core-2.3.28.1.jar

xerces-2.6.2.jar

3、将libs.rar壓縮包解壓,添加到WEB-INF/lib中:

路徑:..\xxx\WEB-INF\lib,增加15個jar

commons-fileupload-1.3.3.jar

commons-io-2.4.jar

commons-lang-2.4.jar

commons-lang3-3.6.jar

commons-logging-1.1.3.jar

freemarker-2.3.23.jar

javassist-3.20.0-GA.jar

log4j-1.2-api-2.8.2.jar

log4j-api-2.8.2.jar

log4j-core-2.8.2.jar

json-lib-2.3-jdk15.jar

ognl-3.1.12.jar

struts2-core-2.5.12.jar

struts2-json-plugin-2.5.12.jar

struts2-spring-plugin-2.5.12.jar

4、修改xxx中web.xml配置檔案

路徑:..\xxx\WEB-INF

原内容:

<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.filter.StrutsPrepareAndExecuteFilter</filter-class>

</filter>

5、新增檔案log4j2.xml

路徑xxx\WEB-INF\classes\ log4j2.xml

6、修改xxx中struts.xml配置檔案

路徑:..\xxx\WEB-INF\classes

在原内容的基礎上<struts>标簽裡添加

<constant name="struts.enable.DynamicMethodInvocation"value=" true " />

<constantname="struts.action.excludePattern"value="/dwr/.*,/services/.*"/>

原内容:

<struts>

         <includefile="struts.xml"></include>

</struts>

修改後:

<struts>

         <constantname="struts.enable.DynamicMethodInvocation" value="true" />

         <constant name="struts.action.excludePattern"value="/dwr/.*,/services/.*"/>

        <includefile="struts.xml"></include>

</struts>

7、如下檔案:

struts.xml

檔案申明頭需修改,有<package>标簽的,屬性值加strict-method-invocation="false":

原内容:

<!DOCTYPEstruts PUBLIC  

       "-//Apache Software Foundation//DTD Struts Configuration2.0//EN"  

       "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>

         <package name="xxx" extends="struts-default">

         <xxx></xxx>

         </package>

</struts>

修改後:

<!DOCTYPE struts PUBLIC  

       "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"  

       "http://struts.apache.org/dtds/struts-2.5.dtd">

<struts>

         <packagename="xxx" extends="struts-default" strict-method-invocation="false">

         <xxx></xxx>

         </package>

</struts>

8、

修改檔案:xxx\resource\json_struts2.jsp

原内容:<s:property value="jsonString" escape="false"/>

修改後:<s:property value="jsonString"escapeHtml="false" />

9、查詢JDK版本

直接運作Tomcat,可以正常運作就可以,如果啟動Tomcat後通路不了,則查詢jdk版本。

確定CGS伺服器JDK需1.7以上1.8以下。

繼續閱讀