
Un honeypot en Rust qui simule une instance cPanel/WHM vulnérable pour CVE-2026-41940

Un honeypot en Rust qui simule une instance cPanel/WHM vulnérable pour la CVE-2026-41940 (contournement d'authentification cPanel2Shell).
Ce honeypot émule la séquence de réponses utilisée par les scanners de vulnérabilité cPanel2Shell :
msg_code:[expired_session] sur les points de terminaison de jetonLes attaquants qui poursuivent au-delà de la sonde initiale sont placés dans un faux shell bash adossé à un système de fichiers virtuel en mémoire.
cargo build --release
# Par défaut : ports 2087, 2083 avec TLS auto-généré
./target/release/cpanel2shell-honeypot
# Ports personnalisés
./target/release/cpanel2shell-honeypot -p 2083,2087
# Désactiver TLS
./target/release/cpanel2shell-honeypot --no-tls
# TLS par nom d'hôte avec rechargement à chaud
./target/release/cpanel2shell-honeypot --certs-config data/certs.toml
# Toutes les options
./target/release/cpanel2shell-honeypot --help
Créez data/certs.toml (voir 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 # Point d'entrée, configuration du runtime
├── cli.rs # Arguments de ligne de commande
├── config.rs # Configuration de l'application
├── router.rs # Définitions des routes HTTP
├── capture.rs # Journalisation des requêtes et stockage des charges utiles
├── sessions/ # Persistance des sessions
├── handlers/ # Gestionnaires de requêtes HTTP
├── shell/ # Interpréteur bash et VFS
│ ├── lexer.rs # Analyseur lexical
│ ├── parser.rs # Analyseur syntaxique descendant
│ ├── exec.rs # Exécuteur d'AST
│ ├── expand.rs # Expansion des variables
│ ├── builtins.rs # Commandes internes du shell
│ ├── commands.rs # Stubs de commandes externes
│ ├── vfs.rs # Système de fichiers virtuel
│ └── init.rs # Données d'initialisation du système de fichiers
└── tls/ # Gestion des certificats TLS
├── config.rs # Configuration des certificats
├── generator.rs # Génération des certificats
├── resolver.rs # Résolution des certificats SNI
└── watcher.rs # Rechargement à chaud du fichier de configuration
Le faux shell implémente un sous-ensemble de bash :
$VAR, ${VAR:-default})$(cmd), `cmd`)L'état de session (répertoire courant, environnement, écritures VFS, historique) persiste entre les redémarrages via des instantanés JSON.
Toute l'activité des attaquants est écrite dans ./captures/ :
| Modèle de fichier | Description |
|---|---|
upload_*.bin | Fichiers téléversés |
upload_meta_*.txt | Métadonnées de téléversement |
post_*.txt | Corps des requêtes POST |
cmd_*.txt | Commandes terminal |
sessions/*.json | Instantanés de session |
certs/ | Certificats TLS en cache |
until/caseMIT