yuzuki-ayanami/CVE-2025-24813
GitHub: yuzuki-ayanami/CVE-2025-24813
针对 Apache Tomcat CVE-2025-24813 会话反序列化 RCE 漏洞的 PoC 利用工具,通过部分 PUT 写入恶意序列化对象并触发 gadget chain 实现远程代码执行。
Stars: 0 | Forks: 0
CVE-2025-24813
Apache Tomcat - Remote Code Execution via Session Deserialization
Unauthenticated partial PUT + path traversal + gadget-driven deserialization
### 描述
启用了默认 servlet PUT(`readonly=false`)的 Apache Tomcat 实例允许通过部分 HTTP PUT 请求写入文件。通过构造一个从上传目录遍历到会话存储目录(`../sessions/`)的路径,攻击者可以将序列化的 Java 对象植入为 `.session` 文件。下一个引用此 session id 的请求会触发反序列化,从而执行嵌入的 gadget chain。
**要求:**
- 默认 servlet `readonly=false`(非默认配置)
- Tomcat classpath 中存在 gadget chain(例如 CommonsCollections)
- `PUT` 和路径遍历没有被反向代理或 WAF 过滤
### 用法
```
git clone https://github.com/yuzuki-ayanami/CVE-2025-24813
cd CVE-2025-24813
pip install -r requirements.txt
```
基本检查 + 利用(当 ysoserial 不存在时自动编译 Java payload):
```
python cve-2025-24813.py http://target:8080
```
自定义命令:
```
python cve-2025-24813.py http://target:8080 --command 'whoami'
```
ysoserial gadget chain(可靠性更高):
```
python cve-2025-24813.py https://target --ysoserial ysoserial.jar --gadget CommonsCollections6
```
### 前置条件
- Python 3.8+
- `requests`(参见 `requirements.txt`)
- Java JDK(在不使用 ysoserial 时用于自动编译的回退)
- `ysoserial.jar`(可选,提供更可靠的 gadget chain)
### 受影响版本
在默认 servlet 上暴露了部分 PUT 功能的 Apache Tomcat 版本。确切的版本范围取决于 gadget 的可用性——该漏洞是配置与 classpath 的组合问题,而不是受版本限制的软件 bug。
### 致谢
- Yuzuki Ayanami - 改进的 PoC
- [absholi7ly](https://github.com/absholi7ly/POC-CVE-2025-24813) - 原始 exploit
标签:CISA项目, Java反序列化, JS文件枚举, Python, Web报告查看器, 安全PoC, 无后门, 逆向工具