使用的是MultiPartRequest接口的方法,而这个接口在S2-066中是由JakartaMultiPartRequest实现。使用下面这个poc进行目录穿越并断点检测一下: 发现目录穿越失败,文件没有放在指定目录下。分析源码: 参数覆盖原本想用../../z126.txt,方法的输入参数确实也是这样接收的,但在这个方法中struts2会对文件名进行截断,最终输出的...
使用的是MultiPartRequest接口的方法,而这个接口在S2-066中是由JakartaMultiPartRequest实现。使用下面这个poc进行目录穿越并断点检测一下: 发现目录穿越失败,文件没有放在指定目录下。分析源码: 参数覆盖原本想用../../z126.txt,方法的输入参数确实也是这样接收的,但在这个方法中struts2会对文件名进行截断,最终输出的...
▌漏洞分析 1. 漏洞POC 没有特定的路径,根据具体环境代码 2. 代码分析 参数污染 在org.apache.struts2.interceptor.FileUploadInterceptor#intercept 方法中有使用上传添加请求参数 通过注释,可以了解该类为文件上传的拦截器,将文件上传相关的参数添加至 HttpParameters 对象中。 可以了解到,FileUploadInterceptor 会获取 ...
图5 com.opensymphony.xwork2.util.OgnlValueStack#setValue 根据网上的PoC,我们可以了解到,需要将context的xwork.MethodAccessor.denyMethodExecution值设置为false。现在我们来分析一下原因:在 Struts2 启动时,系统默认将Object.class的方法访问器设置为XWorkMethodAccessor对象,具体如图6所示。 图6 com.opensymphony.xwork...
最后的最后,我们看一下利用POC的请求包再TreeMap的顺序和最终上传结果吧~~~ 成功跨文件上传。 PS:最后说一嘴实战利用吧,这个漏洞得针对于各个系统来利用,没法像前面的那些表达式注入哐哐RCE,算是个漏洞利用的知识点吧。 参考文章: https://trganda.github.io/notes/security/vulnerabilities/apache-struts/Apache-St...
使用下面这个poc进行目录穿越并断点检测一下: 发现目录穿越失败,文件没有放在指定目录下。分析源码: 参数覆盖原本想用../../z126.txt,方法的输入参数确实也是这样接收的,但在这个方法中struts2会对文件名进行截断,最终输出的文件名会变为 z126.txt,文件也就不会出现目录穿越的现象。因此目录穿越不是发生在这里,...
1. 漏洞POC 没有特定的路径,根据具体环境代码2. 代码分析 参数污染 在org.apache.struts2.interceptor.FileUploadInterceptor#intercept 方法中有使用上传添加请求参数通过注释,可以了解该类为文件上传的拦截器,将文件上传相关的参数添加至 HttpParameters 对象中。 可以了解到,FileUploadInterceptor 会获取 3 个参数,也就...
使用的是MultiPartRequest接口的方法,而这个接口在S2-066中是由JakartaMultiPartRequest实现。使用下面这个poc进行目录穿越并断点检测一下: 发现目录穿越失败,文件没有放在指定目录下。分析源码: 参数覆盖原本想用../../z126.txt,方法的输入参数确实也是这样接收的,但在这个方法中struts2会对文件名进行截断,最终输出的...
漏洞类型 : 远程代码执行(2) CVSS v2 : -- CVSS v3 : 9.8(CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H) 影响范围 涉及厂商 : apache 涉及产品 : struts 影响对象数量级 : 影响十万级 可利用性 在野利用 : 是 POC公开 :
12 月 11 日に初めて攻撃の概念実証(PoC)が公開され、広く利用されるようになりました。その後、12 月 12 日に攻撃が試行されました(図 1)。CVE について CVE-2023-50164 は、Java EE Web アプリケーションの開発および構築に広く使用されているオープン・ソース・フレームワークであ...