Struts2 漏洞 升级方案 更换jar包清单
近日,安恒信息安全研究院WEBIN实验室高级安全研究员nike.zheng发现著名J2EE框架——Struts2存在远程代码执行的漏洞,Struts2官方已经确认该漏洞(S2-045,S2-046),并定级为高危漏洞。S2-046(CNNVD编号:CNNVD-201703-152; CVE编号:CVE-2017-5638)
漏洞的报告者来自三家:qualcomm(高通)、dbappsecurity(杭州安恒)、HPE(惠普企业)。
漏洞概要
Apache Struts 2 2.3.32之前的2 2.3.x版本和2.5.10.1之前的2.5.x版本中的Jakarta Multipart解析器存在安全漏洞,该漏洞源于程序没有正确处理文件上传。攻击者可以通过构造HTTP请求头中的Content-Type值可能造成远程任意代码执行。
受影响的软件版本为:Struts 2.3.5 - Struts2.3.31, Struts 2.5 - Struts 2.5.10
S2-045漏洞影响
攻击者可以通过构造HTTP请求头中的Content-Type值可能造成远程代码执行。
漏洞描述
使用Jakarta插件处理文件上传操作时可能导致远程代码执行漏洞。
S2-046漏洞影响(更新)
触发条件
上传文件的大小(由Content-Length头指定)大于Struts2允许的最大大小(2GB)。
header中的Content-Disposition中包含空字节。
文件名内容构造恶意的OGNL内容。
修复建议
严格过滤 Content-Type 、filename里的内容,严禁ognl表达式相关字段。
如果您使用基于Jakarta插件,请升级到Apache Struts 2.3.32或2.5.10.1版本。(强烈推荐)
我们项目用到的为Struts2.3.31版本的jar包,现在更新到2.3.32,具体jar包清单如下:
共9个jar包
freemarker-2.3.22.jar
log4j-1.2.14.jar
ognl-3.0.19.jar
struts2-convention-plugin-2.3.32.jar
struts2-core-2.3.32.jar
struts2-json-plugin-2.3.32.jar
struts2-junit-plugin-2.3.32.jar
struts2-spring-plugin-2.3.32.jar
xwork-core-2.3.32.jar