Zuverlässiger CVE-2025-32432 Pre-Auth-RCE-Exploit für Craft CMS 3.x/4.x/5.x, funktioniert dort, wo andere öffentliche PoCs versagen
Autor: P34NUT2
Schwachstelle: Remote Code Execution (Pre-Authenticated) in Craft CMS
CVE: CVE-2025-32432
Ziel: Jede verwundbare Craft CMS-Instanz (3.x / 4.x / 5.x) — getestet auf Hack The Box: Orion
Dieses Tool wird ausschließlich für Bildungszwecke und autorisierte Penetrationstests in kontrollierten Umgebungen wie Hack The Box, TryHackMe oder privaten Labors bereitgestellt, die Sie besitzen oder für die Sie eine ausdrückliche schriftliche Genehmigung zum Testen haben.
Die unbefugte Nutzung dieses Tools gegen Systeme, die Sie nicht besitzen oder für die Sie keine ausdrückliche Genehmigung zum Testen haben, ist illegal gemäß dem Computer Fraud and Abuse Act (CFAA), der EU-Richtlinie über Angriffe auf Informationssysteme und vergleichbaren Gesetzen in den meisten Rechtsordnungen weltweit.
Der Autor übernimmt keine Verantwortung oder Haftung für jeglichen Missbrauch, Schaden oder rechtliche Konsequenzen, die sich aus der Nutzung dieser Software ergeben. Nutzen Sie sie verantwortungsvoll und ethisch.
Die meisten öffentlichen PoCs für CVE-2025-32432 scheitern an realen Zielen wie HTB: Orion aufgrund von:
&, , )><Dieser Exploit wurde von Grund auf neu entwickelt, um diese Zuverlässigkeitsprobleme zu lösen. Er behandelt URL-Kodierung ordnungsgemäß, automatisiert die dynamische Token-Extraktion und verwendet Base64-Wrapper-Pipelines, um eine zuverlässige Ausführung gegen jede verwundbare Craft CMS-Instanz zu erreichen — validiert gegen reale Deployments und bewiesen auf HTB Orion.
| Schritt | Aktion | Beschreibung |
|---|---|---|
| 1 | Session- & CSRF-Beschaffung | Extrahiert CraftSessionId, CRAFT_CSRF_TOKEN und dynamisches CSRF_TOKEN vom Admin-Endpunkt |
| 2 | Asset-ID-Erkennung | Brute-Forcing gültiger Asset-IDs, die für die Transform-Generierungs-Payload erforderlich sind |
| 3 | Session-Pfad-Leak | Injiziert ein Guzzle-Objekt, um phpinfo() auszulösen und session.save_path dynamisch auszulesen |
| 4 | Session-Poisoning | Injiziert eine URL-kodierte PHP-Webshell-Payload in die aktive Session-Datei |
| 5 | RCE-Trigger | Deserialisiert die vergiftete Session, um beliebige Systembefehle auszuführen |
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
| Flag | Lange Option | Erforderlich | Beschreibung |
|---|---|---|---|
-u | --url | ✅ Ja | Ziel-Basis-URL (z. B. http://example.com) |
-c | --cmd | ✅ Ja | Befehl, der auf dem entfernten Ziel ausgeführt werden soll |
-a | --asset | ❌ Nein | Bekannte gültige Asset-ID (beschleunigt die Ausführung) |
-s | --scan-max | ❌ Nein | Maximaler Asset-ID-Brute-Force-Bereich (Standard: 300) |
1. Grundlegende Befehlsausführung
python3 craftcms_rce_exploit_php.py -u http://example.com -c "whoami"
2. Mit bekannter Asset-ID (schneller)
python3 craftcms_rce_exploit_php.py -u http://example.com -a 1 -c "id"
3. Kodierte Payload (empfohlen für Sonderzeichen)
Um zu verhindern, dass Sonderzeichen durch HTTP-Parser verändert oder während der Session-Verarbeitung abgeschnitten werden, kodieren Sie Ihren Befehl vor der Übergabe in Base64:
# Step 1 — encode your command locally
echo -n "YOUR_COMMAND_HERE" | base64
# Step 2 — pass the encoded string through the script
python3 craftcms_rce_exploit_php.py -u http://example.com -c "echo <BASE64_STRING> | base64 -d | sh"
4. Reverse Shell über Base64-Wrapper
python3 craftcms_rce_exploit_php.py -u http://target.htb -c "echo <B64_PAYLOAD> | base64 -d | bash"
Wenn Sie ein Systemadministrator oder Entwickler sind, der Craft CMS betreibt, wenden Sie die folgenden Gegenmaßnahmen an:
/actions/*) durch Firewall-Regeln oder Middleware.Dieses Projekt ist nur für Bildungs- und autorisierte Testzwecke lizenziert. Siehe LICENSE für Details.