今天复现一下Struts2 S2-046 远程代码执行漏洞,如果攻击者能够控制 Content-Type 头部以及 Content-Disposition 中的 filename 参数,他们就可以向 filename 注入一个恶意的 OGNL 表达式(注意需要 \x00截断),…
在使用基于Jakarta插件的文件上传功能时,满足以下条件,会触发远程命令执行漏洞。 1.上传文件的大小(由Content-Length头指定)大于Struts2允许的最大大小(2GB)。 2.文件名内容构造恶意的OGNL内容。 本次S2-046漏洞远程命令执行漏洞需满足以上条件,而S2-045的漏洞只需要Content-Type一个点就可以进行远程命令执行。 对于...
跟进addFileSkippedError()可以看到, buildErrorMessage()抛出异常时调用了filename,这个filename就是通过Content-Disposition传递的filename。而buildErrorMessage()就是漏洞触发点,传递来的filename被解析,形成了漏洞。 而在JakartaMultiPartRequest数据流中,在判断长度后,抛出的异常中并没有包含文件名解析,如下图。所以...
修复方案依然与 S2-045 相同,升级至 2.3.32 或者 2.5.10.1 版本即可防御针对这两个漏洞攻击。 S2-046 Struts2 是一个基于 MVC 设计模式的 Web 应用框架,它本质上相当于一个 servlet,在 MVC 设计模式中,Struts2 作为控制器 (Controller) 来建立模型与视图的数据交互。Struts2 的使用范围及其广泛,国内外均有...
如果已经按照之前S2-045漏洞的修复要求将Struts 2升级到了最新版本,就不会受本次安全公告中所述漏洞的影响。 安恒信息再次提示您,使用明鉴Web应用弱点扫描器和网站安全监测平台的用户升级到最新策略版本可以帮助您查找漏洞是否存在,另外以下措施可以有效防范Struts2 S2-045和S2-046漏洞:...
Apache Struts2 远程代码执行漏洞(S2-046 ) 技术分析与防护方案 发布时间:2017 年 3 月 22 日 综述 3 月 21 日凌晨,Apache Struts2 官方发布了一条安全公告,该公告指出 Apache Struts2 的Jakarta Multipart parser 插件存在远程代码执行漏洞,漏洞 编号为 CVE-2017-5638。攻击者可以通过设置 Content-Disposition ...
https://cwiki.apache.org/confluence/display/WW/S2-046 https://xz.aliyun.com/t/221 漏洞环境 执行如下命令启动struts2 2.3.30: docker-compose up -d 环境启动后,访问http://your-ip:8080即可看到上传页面。 漏洞复现 与s2-045类似,但是输入点在文件上传的filename值位置,并需要使用\x00截断。 由于需...
S2-046漏洞和S2-045漏洞非常相似,都是由报错信息带入了buildErrorMessage这个方法造成的。 但是这次存在两个触发点。 Content-Length 的长度值超长 Content-Disposition的filename存在空字节 0x01 漏洞分析 Content-Length 的长度值超长 这个漏洞需要在strust.xml中加入 <constant name="struts.multipart.parser" value...
这是一个针对 Struts2 S2-046, S2-045漏洞封杀的防火墙脚本。 首先分析 S2-046, S2-045 漏洞攻击的原理。测试代码如下: 代码语言:javascript 代码运行次数:0 运行 AI代码解释 #! /usr/bin/env python # encoding:utf-8 import urllib2 import sys from poster.encode import multipart_encode from poster.str...
项目验收通过半年之后, 甲方找了一些网络砖家用工具扫描我司做的社保卡申领系统, 找到了struts2漏洞S2-046, 真是服了, 只知道struts2有bug, 现在才知道它漏洞。 砖家们给出了修复建议: 方法一:升级Struts2至Struts 2.3.20.2,2.3.24.2,2.3.28.1版本修复该漏洞。(注:更新地址: ...