
Pre-Authentifizierung Remote-Code-Ausführung-Exploit für Craft CMS. Verkettet unbereinigte Sitzungsdatenspeicherung mit unsicherer Deserialisierung, um beliebige Befehle auf anfälligen Servern auszuführen (Versionen 3.x, 4.x, 5.x).
Vorauthentifizierungs-Remote-Code-Ausführung in Craft CMS
Entdeckt und entwickelt von Mohammed Idrees Banyamer
CVE-2025-32432 ist eine kritische Schwachstelle zur Remote-Code-Ausführung (RCE) vor der Authentifizierung, die mehrere Versionen von Craft CMS betrifft. Durch die Verknüpfung von ungesäuberter Sitzungsdatenspeicherung mit einem unsicheren Deserialisierungs-Gadget kann ein nicht authentifizierter Angreifer beliebige Befehle auf dem entfernten Server ausführen.
| Branch | Anfällig bis |
|---|---|
| Craft CMS 3.x | ≤ 3.9.14 |
| Craft CMS 4.x | ≤ 4.14.14 |
| Craft CMS 5.x | ≤ 5.6.16 |
⚠️ Alle älteren Versionen, die das beschriebene Routing-Verhalten aufweisen, sind wahrscheinlich ebenfalls betroffen.
Die Schwachstelle entsteht durch die Verknüpfung zweier unterschiedlicher Schwachstellen im Endpunkt assets/generate-transform:
Altes Routing-Verhalten schreibt rohe Abfrageparameter direkt in die PHP-Sitzungsdatei unter /tmp/sess_<PHPSESSID>, ohne Bereinigung oder Filterung.
Eine Yii-Deserialisierungs-Gadget-Kette (FieldLayoutBehavior → PhpManager) erlaubt einem Angreifer, die Einbindung einer beliebigen Datei zu erzwingen – in diesem Fall die vergiftete Sitzungsdatei.
Kombinierte Auswirkungen: Vollständige Serverkompromittierung, Datenexfiltration, laterale Bewegung und mehr.
requestsurllib3# Installation über die Anforderungsdatei
pip install -r requirements.txt
# Oder direkte Installation
pip install requests urllib3
python exploit.py -u <target_url> -c "<command>" [Optionen]
# Automatische Ausnutzung – Asset-ID wird automatisch erraten
python exploit.py -u https://craft.example.com -c "id"
# Mit bekannter Asset-ID – zuverlässiger und schneller
python exploit.py -u https://craft.example.com -c "cat /etc/passwd" -a 42
# Eigenes Timeout + ausführliche Ausgabe
python exploit.py -u https://craft.example.com -c "uname -a" -t 10 -v
Schritt 1 ──► Sitzungsaufbau
Startseite abrufen → PHPSESSID-Cookie erhalten
Schritt 2 ──► Asset-ID-Auflösung
Über -a-Flag bereitgestellt ODER per Brute-Force (Nicht-404-Erkennung)
Schritt 3 ──► Sitzungsvergiftung
Böswillige GET-Anfrage → rohes PHP in /tmp/sess_<PHPSESSID> injiziert
Schritt 4 ──► RCE-Auslösung
Maßgeschneiderter Deserialisierungs-Payload → PhpManager bindet Sitzungsdatei ein
→ PHP ausgeführt → Systembefehl läuft → Ausgabe zurückgegeben
💡 Die Befehlsausgabe wird ausgegeben (erste 2.000 Zeichen). Für vollständige Interaktion wird eine Reverse-Shell empfohlen.
requirements.txt
requests>=2.31.0
urllib3>=2.0
Dieses Tool ist ausschließlich für Bildungszwecke und autorisierte Sicherheitsbewertungen vorgesehen.
Verwenden Sie es nicht gegen ein System ohne ausdrückliche schriftliche Genehmigung des Systembesitzers.
Der Autor übernimmt keine Haftung für Missbrauch oder Schäden, die durch dieses Tool verursacht werden. Durch die Nutzung dieser Software erklären Sie sich damit einverstanden, dass Sie allein für Ihre Handlungen verantwortlich sind und alle geltenden lokalen, nationalen und internationalen Gesetze einhalten.
| Rolle | Details |
|---|---|
| 🔍 CVE-Entdeckung & ursprünglicher Exploit | Mohammed Idrees Banyamer |
| 🐙 GitHub | @TheMursalin |
| 🤝 Code-Verbesserung | Beiträge der Community willkommen |
⭐ Wenn Sie dies nützlich finden, folgen Sie @TheMursalin für weitere Exploits, Write-ups und Sicherheitstools.
Dieses Projekt wird unter der MIT-Lizenz veröffentlicht – siehe die Datei LICENSE für vollständige Details.
| Flag | Beschreibung | Standard |
|---|
-u, --url | Erforderlich. Basis-URL des Ziels (z. B. https://example.com) | — |
-c, --cmd | Erforderlich. Systembefehl zur Ausführung (z. B. id, whoami) | — |
-a, --asset | Bekannte gültige Asset-ID (beschleunigt die Ausnutzung erheblich) | Keine |
--scan-max | Maximale Asset-ID für Brute-Force, wenn keine ID angegeben wird | 300 |
-t, --timeout | Timeout für Anfragen in Sekunden | 15 |
-v, --verbose | Ausführliche/Debug-Ausgabe aktivieren | Aus |