
Ein Rust-Honeypot, der eine verwundbare cPanel/WHM-Instanz für CVE-2026-41940 simuliert.

Ein Rust-Honeypot, der eine verwundbare cPanel/WHM-Instanz für CVE-2026-41940 (cPanel2Shell-Authentifizierungs-Bypass) simuliert.
Dieser Honeypot emuliert die Antwortsequenz, die von cPanel2Shell-Schwachstellenscannern verwendet wird:
msg_code:[expired_session] auf Token-EndpunktenAngreifer, die über die erste Sondierung hinausgehen, werden in eine gefälschte Bash-Shell verfrachtet, die von einem virtuellen Dateisystem im Speicher unterstützt wird.
cargo build --release
# Standard: Ports 2087, 2083 mit automatisch generiertem TLS
./target/release/cpanel2shell-honeypot
# Benutzerdefinierte Ports
./target/release/cpanel2shell-honeypot -p 2083,2087
# TLS deaktivieren
./target/release/cpanel2shell-honeypot --no-tls
# TLS pro Hostname mit Hot-Reload
./target/release/cpanel2shell-honeypot --certs-config data/certs.toml
# Alle Optionen
./target/release/cpanel2shell-honeypot --help
Erstellen Sie data/certs.toml (siehe 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 # Einstiegspunkt, Laufzeit-Setup
├── cli.rs # Befehlszeilenargumente
├── config.rs # Anwendungskonfiguration
├── router.rs # HTTP-Routendefinitionen
├── capture.rs # Anfrageprotokollierung und Payload-Speicherung
├── sessions/ # Session-Persistenz
├── handlers/ # HTTP-Anfragehandler
├── shell/ # Bash-Interpreter und VFS
│ ├── lexer.rs # Tokenizer
│ ├── parser.rs # Rekursiv-absteigender Parser
│ ├── exec.rs # AST-Ausführer
│ ├── expand.rs # Variablenerweiterung
│ ├── builtins.rs # Shell-Builtins
│ ├── commands.rs # Stubs für externe Befehle
│ ├── vfs.rs # Virtuelles Dateisystem
│ └── init.rs # Dateisystem-Seeddaten
└── tls/ # TLS-Zertifikatsverwaltung
├── config.rs # Zertifikatskonfiguration
├── generator.rs # Zertifikatsgenerierung
├── resolver.rs # SNI-Zertifikatsauflösung
└── watcher.rs # Hot-Reload der Konfigurationsdatei
Die gefälschte Shell implementiert eine Teilmenge von Bash:
$VAR, ${VAR:-default})$(cmd), `cmd`)Der Session-Zustand (cwd, env, VFS-Schreibvorgänge, Verlauf) bleibt über Neustarts hinweg über JSON-Snapshots erhalten.
Alle Angreiferaktivitäten werden in ./captures/ geschrieben:
| Dateimuster | Beschreibung |
|---|---|
upload_*.bin | Hochgeladene Dateien |
upload_meta_*.txt | Upload-Metadaten |
post_*.txt | POST-Anfrage-Bodies |
cmd_*.txt | Terminalbefehle |
sessions/*.json | Session-Snapshots |
certs/ | Zwischengespeicherte TLS-Zertifikate |
until/case-SchlüsselwörterMIT