关于struts2漏洞(升级struts到最新版本)
由于struts旧版本爆出多个高危漏洞,对于安全性考虑需对struts升级到最新版本。
升级过程中遇到很多坑,经过一段时间的盘查发现,其实这个升级很简单。
我升级的是struts2.5.16,当前官网里面的最新版,以后就不晓得了。。。。咳咳
第一步:找jar包,为什么要找jar包?因为我维护的是老项目,如果你的不是请看最下面。
这是一个很蛋疼的过程,因为看网上升级的方法,替换的jar包都不是很明确,五花八门。进过我逐一排查,反正试了蛮久,最后一下就搞定了。
替换的jar包如下
asm-5.2.jar asm-commons-5.2.jar asm-tree-5.2.jar commons-fileupload-1.3.3.jar
commons-io-2.5.jar commons-lang3-3.6.jar commons-logging-1.1.3.jar
freemarker-2.3.26-incubating.jar javassist-3.20.0-GA.jar log4j-api-2.10.0.jar
ognl-3.1.15.jar struts2-core-2.5.16.jar
删除原来的旧包同上,xwork-core-2.3.16.3.jar这个也需要一并删除,最新版集成了该jar包
第二步:修改web.xml
旧版中:路径如下
新版中:路径如下
将 <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
替换成<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
第三步:修改struts.xml
1.改掉头部
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
".5.dtd">
2.将action设置动态访问
<constant name="struts.enable.DynamicMethodInvocation" value="true" />
3.package后面加一个strict-method-invocation="false"
<package name="GameWebsite" namespace="/" extends="struts-default" strict-method-invocation="false">
三步做完了需要将tomcat里面的项目删除重新发布
页面访问如果可以访问后台则替换成功。
如果报错404,500,之类的,你需要跟据项目的结构替换jar包,或者增加配置,配置sturts.xml
struts升级很多坑,我也是从里面刚爬出来。爬出来发现,其实分分钟能搞定的事搞了这么久!!!
作者吐槽:老项目都会存在这个问题,那些自己导jar包的项目,如果你的项目使用了maven,那么就不会有这种麻烦了,直接改下版本号搞定!