【漏洞预警】Struts 2 被爆远程命令执行漏洞 S2-045

st2

漏洞概述

Apache Struts 2被曝存在远程命令执行漏洞,漏洞编号为S2-045,CVE编号CVE-2017-5638,在使用基于Jakarta插件的文件上传功能时可能存在远程命令执行,导致系统被入侵,漏洞评级为高危。

漏洞详情

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

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

影响范围

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

漏洞分析

漏洞关键点

  1. 基于Jakarta(Jakarta Multipart parser)插件的文件上传功能
  2. 恶意攻击者精心构造Content-Type的值

通过版本比对定位漏洞原因

  1. \core\src\main\java\org\apache\struts2\dispatcher\multipart\MultiPartRequestWrapper.java
  2. \core\src\main\java\org\apache\struts2\dispatcher\multipart\JakartaMultiPartRequest.java
  3. \core\src\main\java\org\apache\struts2\dispatcher\multipart\JakartaStreamMultiPartRequest.java
if (LocalizedTextUtil.findText(this.getClass(), errorKey, defaultLocale, null, new Object[0]) == null) {
 return LocalizedTextUtil.findText(this.getClass(), "struts.messages.error.uploading", defaultLocale, null, new 
Object[] { e.getMessage() });
 } else {
 return LocalizedTextUtil.findText(this.getClass(), errorKey, defaultLocale, null, args);
 }

PoC

https://github.com/rapid7/metasploit-framework/issues/8064

db433cde-02df-11e7-8140-492909b0fab4

036a0422-02f9-11e7-8960-a1e65ed6d7ef

巡风现已支持检测S2-045漏洞,对网上流出的Exp进行了修改并加入到Struts2漏洞检测插件,现支持S2-016、S2-020、S2-DEBUG、S2-017、S2-032、S2-045 漏洞的检测。并且在对漏洞靶场进行测试之后对插件进行了更新推送。

项目地址:https://github.com/ysrc/xunfeng/

815b47e7e5c12ce30fa008bb3359ba7d

测试环境

https://github.com/mottoin/S2-045

修复建议

  1. 如您正在使用Jakarta文件上传插件或者是存在漏洞的Struts 2版本请升级至Struts2安全版本
  2. 使用Servlet过滤器验证Content-Type过滤不匹配的请求multipart/form-data

参考

 

*转载请注明来自MottoIN

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

发表评论

登录后才能评论

联系我们

021-62666911

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

邮件:root@mottoin.com

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

QR code