
Un honeypot in Rust che simula un'istanza vulnerabile di cPanel/WHM per CVE-2026-41940

Un honeypot in Rust che simula un'istanza vulnerabile di cPanel/WHM per CVE-2026-41940 (bypass dell'autenticazione cPanel2Shell).
Questo honeypot emula la sequenza di risposte utilizzata dagli scanner di vulnerabilità cPanel2Shell:
msg_code:[expired_session] sugli endpoint dei tokenGli attaccanti che superano la sonda iniziale vengono inseriti in una shell bash fittizia supportata da un filesystem virtuale in memoria.
cargo build --release
# Predefinito: porte 2087, 2083 con TLS generato automaticamente
./target/release/cpanel2shell-honeypot
# Porte personalizzate
./target/release/cpanel2shell-honeypot -p 2083,2087
# Disabilita TLS
./target/release/cpanel2shell-honeypot --no-tls
# TLS per nome host con hot-reload
./target/release/cpanel2shell-honeypot --certs-config data/certs.toml
# Tutte le opzioni
./target/release/cpanel2shell-honeypot --help
Crea data/certs.toml (vedi data/certs.example.toml):
default = "auto"
[auto]
cache_dir = "./captures/certs"
key_type = "ecdsa-p256"
validity_days = 365
issuer_cn = "Let's Encrypt Authority X3"
[[host]]
sni = "cpanel.example.com"
cert = "/etc/honeypot/certs/cpanel.pem"
key = "/etc/honeypot/certs/cpanel.key"
src/
├── main.rs # Punto di ingresso, configurazione del runtime
├── cli.rs # Argomenti della riga di comando
├── config.rs # Configurazione dell'applicazione
├── router.rs # Definizioni delle route HTTP
├── capture.rs # Registrazione delle richieste e archiviazione dei payload
├── sessions/ # Persistenza delle sessioni
├── handlers/ # Gestori delle richieste HTTP
├── shell/ # Interprete bash e VFS
│ ├── lexer.rs # Tokenizzatore
│ ├── parser.rs # Parser a discesa ricorsiva
│ ├── exec.rs # Esecutore AST
│ ├── expand.rs # Espansione delle variabili
│ ├── builtins.rs # Builtin della shell
│ ├── commands.rs # Stub dei comandi esterni
│ ├── vfs.rs # Filesystem virtuale
│ └── init.rs # Dati seed del filesystem
└── tls/ # Gestione dei certificati TLS
├── config.rs # Configurazione dei certificati
├── generator.rs # Generazione dei certificati
├── resolver.rs # Risoluzione dei certificati SNI
└── watcher.rs # Hot-reload del file di configurazione
La shell fittizia implementa un sottoinsieme di bash:
$VAR, ${VAR:-default})$(cmd), `cmd`)Lo stato della sessione (cwd, env, scritture VFS, cronologia) persiste tra i riavvii tramite snapshot JSON.
Tutta l'attività degli attaccanti viene scritta in ./captures/:
| Modello di File | Descrizione |
|---|---|
upload_*.bin | File caricati |
upload_meta_*.txt | Metadati degli upload |
post_*.txt | Corpi delle richieste POST |
cmd_*.txt | Comandi di terminale |
sessions/*.json | Snapshot delle sessioni |
certs/ | Certificati TLS memorizzati nella cache |
until/caseMIT