struts2升级2.3.32或2.5.10.1
漏洞年年有,最近特别多。2017年3月6日,Apache Struts2被曝存在远程命令执行漏洞,漏洞编号:S2-045,CVE编号:CVE-2017-5638,官方评级为高危,该漏洞是由于在使用基于Jakarta插件的文件上传功能条件下,恶意用户可以通过修改HTTP请求头中的Content-Type值来触发该漏洞,进而执行任意系统命令,导致系统被黑客入侵。漏洞分析请移步:
建议
如果这个版本在Struts2.3.5 到 Struts2.3.31 以及 Struts2.5 到 Struts2.5.10之间则存在漏洞,请升级到struts 2.3.32或2.5.10.1版本
升级struts2.3.32比较简单,更换对应jar即可
升级struts2.5.10.1比较麻烦,需要注意:
(1) strutsPrepareAndExecuteFilter路径变了:
(2) struts.xml文件中的版本得变成2.5
<!DOCTYPE strutsPUBLIC "-//ApacheSoftware Foundation//DTD Struts Configuration 2.5//EN" ".5.dtd">
(3) 使用通配符是找不到对应的action,需要设置:
<global-allowed-methods>regex:.*</global-allowed-methods>,最好是全局设置:
注意:package中的设置排列是按一定顺序排列的,如何乱排启动会报错的,到时候可自行根据提示信息按要求排序。
(4) struts的标签改变,目前发现的有:<s:property escape=”false”/>,escape换成了escapeHtml;<s:iteratorid=””></s:iterator>,id换成var;
(5) 升级后使用的是log4j2,而不是log4j,需要log4j-api-2.7.jar和
log4j-core-2.7.jar,并且配置 log4j2.xml
(6) 升级后jdk需要1.7以上
更换对应jar包: