一、升级版本
1、确定Struts版本
找到Struts应用根路径(D:apache-tomcat-7.0.103webappsstruts2-showcase),然后找到root_dirWEB-INFlibstruts2-core-x.x.x.jar,其中x.x.x即为版本号,如图:Struts版本为2.3.37。
2、下载新版Struts库并校验SHA256
原本2.3以下版本的用户请下载2.3.37或以上的包,原本2.5以上版本的用户请下载2.5.22或以上的包。
通过官方链接下载Struts库需要到外网,无法下载的用户可前往官网下载最新版。
下载后,使用certutil命令校验文件的SHA256值,确保下载正确。
3、备份旧版Struts库
备份root_dirWEB-INFlib目录。
4、删除旧版Struts库
删除root_dirWEB-INFlib中的旧版Struts库。
5、替换新版Struts库
将下载并校验过的新版Struts库复制到root_dirWEB-INFlib中。
6、验证修复结果
确保系统正常运行,并验证漏洞是否已被修复。
二、覆盖JAR包
1、下载压缩包
下载指定压缩包,并将其后缀名改为zip。
2、解压文件
解压得到三个文件夹,添加到漏洞系统的src目录下。
3、修改web.xml
在web.xml文件中添加指定的listener代码。
4、发布项目并重启服务器
发布项目并重启服务器以使更改生效。
三、修改Struts2源码
1、反编译Struts2源码
找到项目中的struts2-core-2.2.3.jar,反编译得到源码。
2、修改源码
在eclipse中新建一个java项目,导入反编译的源码。
修改orgapachestruts2dispatchermapperDefaultActionMapper.java文件中的handleSpecialParameters方法,加入特定代码段。
3、导出新项目
将修改后的项目导出成jar包。
4、替换原jar包中的类
用新项目中的7个类替换掉原先struts2-core-2.2.3.jar中的7个类。
四、结合上述第2和第3种方式
1、反编译Struts2源码
同第3步,反编译得到源码,导入到一个新的项目中。
2、下载并解压压缩包
下载第2步中的压缩包,解压之后得到三个文件,添加到新项目的orgapachestruts2dispatchermapper包中。
3、修改源码并导出项目
修改orgapachestruts2dispatchermapperDefaultActionMapper.java文件中的handleSpecialParameters方法,加入特定代码段。
保存并导出项目成jar包。
4、替换原jar包中的类
用新项目中的7个类替换原jar包中的相应类,加入新包repair,并将替换后的jar复制到项目中。
这四种方式基本能处理所有项目的S2-016漏洞,需要注意的是,更新Struts版本可能出现兼容性问题,导致业务无法正常运行,因此在升级前建议备份旧版Struts项目目录。
各位小伙伴们,我刚刚为大家分享了有关struts漏洞修复的知识,希望对你们有所帮助。如果您还有其他相关问题需要解决,欢迎随时提出哦!
本文来源于互联网,如若侵权,请联系管理员删除,本文链接:https://www.9969.net/90748.html