Struts2漏洞笔
source link: https://zhzhdoai.github.io/2020/12/25/Struts2%E6%BC%8F%E6%B4%9E%E7%AC%94%E8%AE%B0%E4%B9%8BS2-004/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
Struts2漏洞笔记之S2-004 - osword's blog
Struts2漏_
495 字
5 分钟
64 次
以/srtuts
最为访问路径前缀能够进行目录穿越造成任意tomcat容器文件读取或任意目录读取.
测试环境:struts2 2.1.2 tomcat 8.5.0
Struts 2.0.0 - 2.0.11.2
Struts 2.1.0 - 2.1.2
https://cwiki.apache.org/confluence/display/WW/S2-004
漏洞点发生在过滤器FilterDispatcher::doFilter中,也是struts2执行Action操作的入口。当匹配的mapping为null,如果用户以”/struts”路由开头去访问web服务,会找寻静态文件。分析mapping返回的执行逻辑,DefaultActionMapper::dropExtension
中只要当前用户访问中在末尾不带有符号/
就能够返回null
.
if语句满足mapping==null
就能够进文件读取,满足路由以/struts
开头,进入FilterDispatcher::findStaticResource
读取静态文件。findInputStream为读取路径内容,该处文件读取会对路径进行一次URL解码.最后调用ClassLoaderUtil.getResourceAsStream
读取文件内容.
需要注意最后会对ifModifiedSince
字段判断,这里可以由于直接获取http头可控,可以直接构造http头If-Modified-Since: 0
绕过
所以最后POC构造需要对/
进行二次URL编码,第一次tomcat解码获得/ => %2f
,利用%2f
能够绕过mapping对象路由判断逻辑中的indexof
对/
匹配,也能够绕过对结尾.class
匹配,最后在文件读取之前被再一次解码,成功读取目录或文件内容,
/Struts2_004_war_exploded/struts/..%252f..%252f..%252f..%252f..%252fclasses%252f
由于getResource限制了tomcat容器目录,只能读取当前容器目录下的文件,如class文件读取
具体可见:https://www.bbsmax.com/A/KE5Q6PRLdL/
/Struts2_004_war_exploded/struts/..%252f..%252f..%252f..%252f..%252fclasses%252fAction%252fLoginAction.class%252f
修复版本:Struts 2.0.12 or Struts 2.1.6
DefaultStaticContentLoader::findStaticResource
新版修复中会先获取一次resourceUrl(返回可读取的资源路径),调用endWith
匹配路径末尾是否和resourceUrl
可读资源路径末尾匹配,防御了路径穿越.
Recommend
-
72
利用Struts2漏洞突破360与云锁防护 時光老人你可不可以走慢點...
-
45
Struts2著名RCE漏洞引发的十年之思
-
5
STRUTS2的getClassLoader漏洞利用 阿里巴巴安全中心...
-
8
struts2最近几个漏洞分析&稳定利用payload genxor
-
34
Struts2-057,2018/8/22刚爆发的一个struts2的远程代码执行漏洞,网上已经有很多复现的文章了,这里并不打算对漏洞做复现,只是在代码层面研究漏洞。 官方对这次漏洞的描述是: 1.定义XML配置时如果namespace值未设置...
-
32
最近两年ST2-OGNL方面的漏洞已经渐渐淡出大家的视线,但我觉得作为曾经红极一时的经典系列RCE漏洞,对于ST2和OGNL有一个深入的认知对于代码审计和漏洞挖掘者是十分重要的,所以这篇文章对ST2中由于OGNL造成的RCE漏洞的成因、修复方案一一...
-
20
Struts2 S2-061漏洞分析(CVE-2020-17530) 文章首发于安恒信息安全研究院公众号: Struts2 S2-061漏洞分析(CVE-2020-17530) 在这里实名diss某字节安全公众...
-
11
Struts2 漏洞整理 密码保护:Struts2 漏洞整理 这是一篇受密码保护的文章,您需要提供访问密码: 密码: ...
-
5
Struts2 漏洞整理Struts2 漏洞整理 2020-04-30 15:38:17
-
3
Struts2漏洞笔记之S2-003 - osword's blog Stru_ 2020年12月24日 晚上 946...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK