
Craft CMS 预认证 RCE(CVE-2025-32432)的漏洞利用程序,通过将会话投毒与不安全反序列化相结合,在易受攻击的服务器上执行任意命令。
CVE-2025-32432 是一个严重的预认证远程代码执行(RCE)漏洞,影响 Craft CMS 的多个版本。通过将未清理的会话数据存储与不安全的反序列化小工具链接起来,未经身份验证的攻击者可以在远程服务器上执行任意命令。
| 分支 | 受影响范围 |
|---|---|
| Craft CMS 3.x | ≤ 3.9.14 |
| Craft CMS 4.x | ≤ 4.14.14 |
| Craft CMS 5.x | ≤ 5.6.16 |
⚠️ 所有表现出所述路由行为的旧版本也可能受影响。
该漏洞源于在 assets/generate-transform 端点中链接 两个不同的弱点:
旧路由行为将原始查询参数直接写入 PHP 会话文件 /tmp/sess_<PHPSESSID>,未进行任何清理或过滤。
一个 Yii 反序列化小工具链(FieldLayoutBehavior → PhpManager)允许攻击者强制包含任意文件——在本例中是被投毒的会话文件。
组合影响: 完全服务器入侵、数据窃取、横向移动等。
requestsurllib3# 通过 requirements 文件安装
pip install -r requirements.txt
# 或者直接安装
pip install requests urllib3
python exploit.py -u <目标URL> -c "<命令>" [选项]
# 自动利用 — 自动暴力破解 Asset ID
python exploit.py -u https://craft.example.com -c "id"
# 使用已知 Asset ID — 更可靠且更快
python exploit.py -u https://craft.example.com -c "cat /etc/passwd" -a 42
# 自定义超时 + 详细输出
python exploit.py -u https://craft.example.com -c "uname -a" -t 10 -v
步骤 1 ──► 建立会话
获取首页 → 获得 PHPSESSID cookie
步骤 2 ──► 解析 Asset ID
通过 -a 标志提供 或 暴力破解(非 404 检测)
步骤 3 ──► 会话投毒
恶意 GET 请求 → 原始 PHP 注入到 /tmp/sess_<PHPSESSID>
步骤 4 ──► 触发 RCE
精心构造的反序列化载荷 → PhpManager 包含会话文件
→ PHP 执行 → 系统命令运行 → 输出返回
💡 命令输出会被打印(前 2,000 个字符)。如需完整交互,建议使用反弹 shell。
requirements.txt
requests>=2.31.0
urllib3>=2.0
此工具 仅用于教育目的和授权的安全评估。
未经系统所有者明确书面许可,请勿对任何系统使用此工具。
作者对因使用此工具造成的任何误用或损害 不承担任何责任。使用本软件即表示您同意对自己的行为全权负责,并遵守所有适用的当地、国家和国际法律。
| 角色 | 详情 |
|---|---|
| 🔍 CVE 发现与原始利用 | Mohammed Idrees Banyamer |
| 🐙 GitHub | @TheMursalin |
| 🤝 代码优化 | 欢迎社区贡献 |
⭐ 如果您觉得这个工具有用,请考虑关注 @TheMursalin 以获取更多漏洞、文章和安全工具。
本项目采用 MIT 许可证 发布 — 详见 LICENSE 文件。
| 标志 | 描述 | 默认值 |
|---|
-u, --url | 必需。 目标基础 URL(例如 https://example.com) | — |
-c, --cmd | 必需。 要执行的系统命令(例如 id、whoami) | — |
-a, --asset | 已知有效的 Asset ID(显著加快利用速度) | 无 |
--scan-max | 未提供 ID 时暴力破解的最大 Asset ID | 300 |
-t, --timeout | 请求超时时间(秒) | 15 |
-v, --verbose | 启用详细/调试输出 | 关闭 |