背景:公司安全部门,扫描到N年前的老系统有高危漏洞,我作为技术负责人,需要处理。
过程:详细看了高危漏洞文档说明,是struts2的远程命令执行漏洞,升级版本可完成修复,通过网上各类帖子的说明,结合自身项目。把升级需要改动的内容罗列如下。
修改struts.xml文件
序号 | 行数 | 原内容 | 修改后内容 |
1 | 第3行 | <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> | <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN" "http://struts.apache.org/dtds/struts-2.5.dtd"> |
2 | 第22行 | <package name="imageupload" extends="json-default"> | <package name="imageupload" extends="json-default" strict-method-invocation="false"> |
修改web.xml文件
序号 | 行数 | 原内容 | 修改后内容 |
1 | 第92-95行 | <filter><filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> | <filter><filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> |
替换jar
序号 | 需要替换的jar | 说明 | 下载地址 |
1 | struts2-config-browser-plugin-2.5.22.jar | struts2-2.5.22版本包 | https://archive.apache.org/dist/struts/2.5.22/ |
2 | struts2-convention-plugin-2.5.22.jar | ||
3 | struts2-core-2.5.22.jar | ||
4 | struts2-json-plugin-2.5.22.jar | ||
5 | struts2-spring-plugin-2.5.22.jar | ||
6 | commons-lang3-3.8.1.jar | 依赖包 | |
7 | freemarker-2.3.28.jar | ||
8 | log4j-api-2.6.2.jar | http://archive.apache.org/dist/logging/log4j/2.6.2 | |
9 | log4j-core-2.6.2.jar | ||
10 | ognl-3.1.26.jar |
创建log4j2.xml
位置:/project/WEB-INF/classes/log4j2.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration status="debug">
<appenders></appenders>
<loggers>
<root level="info">
<appender-ref ref="Console"/>
<appender-ref ref="log"/>
</root>
</loggers>
</configuration>