
Ханипот на Rust, который имитирует уязвимый экземпляр cPanel/WHM для CVE-2026-41940

Honeypot на Rust, имитирующий уязвимый экземпляр cPanel/WHM для CVE-2026-41940 (обход аутентификации cPanel2Shell).
Этот honeypot эмулирует последовательность ответов, используемую сканерами уязвимости cPanel2Shell:
msg_code:[expired_session] на конечных точках токенаАтакующие, прошедшие первоначальный зонд, попадают в поддельную bash-оболочку на основе виртуальной файловой системы в памяти.
cargo build --release
# По умолчанию: порты 2087, 2083 с автоматически сгенерированным TLS
./target/release/cpanel2shell-honeypot
# Пользовательские порты
./target/release/cpanel2shell-honeypot -p 2083,2087
# Отключить TLS
./target/release/cpanel2shell-honeypot --no-tls
# TLS для каждого имени хоста с горячей перезагрузкой
./target/release/cpanel2shell-honeypot --certs-config data/certs.toml
# Все параметры
./target/release/cpanel2shell-honeypot --help
Создайте data/certs.toml (см. 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 # Точка входа, настройка среды выполнения
├── cli.rs # Аргументы командной строки
├── config.rs # Конфигурация приложения
├── router.rs # Определения HTTP-маршрутов
├── capture.rs # Логирование запросов и хранение полезной нагрузки
├── sessions/ # Постоянство сессий
├── handlers/ # Обработчики HTTP-запросов
├── shell/ # Интерпретатор bash и VFS
│ ├── lexer.rs # Токенизатор
│ ├── parser.rs # Рекурсивный нисходящий парсер
│ ├── exec.rs # Исполнитель AST
│ ├── expand.rs # Раскрытие переменных
│ ├── builtins.rs # Встроенные команды оболочки
│ ├── commands.rs # Заглушки внешних команд
│ ├── vfs.rs # Виртуальная файловая система
│ └── init.rs # Начальные данные файловой системы
└── tls/ # Управление TLS-сертификатами
├── config.rs # Конфигурация сертификатов
├── generator.rs # Генерация сертификатов
├── resolver.rs # Разрешение сертификатов по SNI
└── watcher.rs # Горячая перезагрузка файла конфигурации
Поддельная оболочка реализует подмножество bash:
$VAR, ${VAR:-default})$(cmd), `cmd`)Состояние сессии (cwd, env, записи VFS, история) сохраняется между перезапусками через JSON-снимки.
Вся активность атакующего записывается в ./captures/:
| Шаблон файла | Описание |
|---|---|
upload_*.bin | Загруженные файлы |
upload_meta_*.txt | Метаданные загрузок |
post_*.txt | Тела POST-запросов |
cmd_*.txt | Команды терминала |
sessions/*.json | Снимки сессий |
certs/ | Кэшированные TLS-сертификаты |
until/caseMIT