Apache Struts2(S2-045)漏洞
漏洞编号:
CVE-2017-5638
影响范围:
影响的软件版本
Struts2.3.5 至 Struts2.3.31
Struts2.5 至 Struts2.5.10
详细信息
漏洞详情:
Struts2是第二代基于Model-View-Controller(MVC)模型的java企业级web应用框架,并成为当时国内外较为流行的容器软件中间件。jakarta是apache组织下的一套Java解决方案的开源软件的名称,包括很多子项目。Struts就是jakarta的紧密关联项目。Struts2框架中基于JakartaMultipart parser的文件上传模块在处理文件上传(multipart)的请求时候对异常信息做了捕获,并对异常信息做了OGNL表达式处理。但在在判断content-type不正确的时候会抛出异常并且带上Content-Type属性值,可通过精心构造附带OGNL表达的URL导致远程代码执行。
验证方法:
在向服务器发出的http请求报文中,修改Content-Type字段:
Content-Type:%{#context[‘com.opensymphony.xwork2.dispatcher.HttpServletResponse’].addHeader(‘vul’,’vul’)}.multipart/form-data,如返回response报文中存在vul:vul字段项则表明存在漏洞。
风险评估:
该漏洞的影响面较大,使用上述受影响的strtus2框架版本的网站都有被攻击的风险。由于之前struts2的高危漏洞暴露的较多,有很大一部分的网站都升级到了Struts2.3.5以上版本,这些网站都面临被攻击的风险。
安全建议
补丁更新:
apache官方已经针对该漏洞发布了版本更新用来修补这个漏洞,下列版本不受此漏洞影响:
Struts2 2.3.2 https://cwiki.apache.org/confluence/display/WW/Version+Notes+2.3.32
Struts2 2.5.10.1 https://cwiki.apache.org/confluence/display/WW/Version+Notes+2.5.10.1
厂商公告:https://cwiki.apache.org/confluence/display/WW/S2-045
临时解决办法:
严格过滤 Content-Type 里的内容,严禁ognl表达式相关字段。
参考信息: