
Автоматизированный сканер и инструментарий для пост-эксплуатации для CVE-2026-41940 — обход аутентификации root через cPanel и WHM с помощью CRLF-инъекции в session-файл
English | فارسی (Persian)
██████╗██████╗ █████╗ ███╗ ██╗███████╗██╗
██╔════╝██╔══██╗██╔══██╗████╗ ██║██╔════╝██║
██║ ██████╔╝███████║██╔██╗ ██║█████╗ ██║
██║ ██╔═══╝ ██╔══██║██║╚██╗██║██╔══╝ ██║
╚██████╗██║ ██║ ██║██║ ╚████║███████╗███████╗
╚═════╝╚═╝ ╚═╝ ╚═╝╚═╝ ╚═══╝╚══════╝╚══════╝
██████╗██╗ ██╗███████╗
██╔════╝██║ ██║██╔════╝
██║ ██║ ██║█████╗
██║ ╚██╗ ██╔╝██╔══╝
╚██████╗ ╚████╔╝ ███████╗
╚═════╝ ╚═══╝ ╚══════╝
███████╗██╗ ██╗██████╗ ██╗ ██████╗ ██╗████████╗
██╔════╝╚██╗██╔╝██╔══██╗██║ ██╔═══██╗██║╚══██╔══╝
█████╗ ╚███╔╝ ██████╔╝██║ ██║ ██║██║ ██║
██╔══╝ ██╔██╗ ██╔═══╝ ██║ ██║ ██║██║ ██║
███████╗██╔╝ ██╗██║ ███████╗╚██████╔╝██║ ██║
╚══════╝╚═╝ ╚═╝╚═╝ ╚══════╝ ╚═════╝ ╚═╝ ╚═╝
Автоматизированный сканер и набор инструментов для пост-эксплуатации уязвимости CVE-2026-41940 — обход аутентификации root в cPanel и WHM через CRLF-инъекцию в файле сессии.
CPANEL CVE EXPLOIT — это однофайловый инструмент на Python, предназначенный для авторизованных тестов безопасности серверов cPanel и WHM, уязвимых для CVE-2026-41940.
Уязвимость позволяет неаутентифицированному удалённому злоумышленнику отравить файлы сессий WHM через CRLF-инъекцию в заголовке Authorization: Basic, обходя аутентификацию и получая доступ к WHM с правами root без действительных учётных данных.
| Свойство | Значение |
|---|---|
| CVE | CVE-2026-41940 |
| Серьёзность | Критическая |
| CVSS | 10.0 |
| Вектор атаки | Сеть / без аутентификации |
| Влияние | Полный доступ к WHM с правами root |
| Порт по умолчанию | 2087 (WHM) |
| Статус | Подтверждена эксплуатация в реальных условиях (апрель 2026) |
В уязвимых версиях cPanel и WHM функция saveSession() в Session.pm вызывает filter_sessiondata() после записи файла сессии на диск. Злоумышленник может внедрить символы CRLF (\r\n) через HTTP-заголовок Authorization: Basic, которые записываются непосредственно в файл сессии на диске — минуя санитизацию.
Инструмент использует полезную нагрузку в кодировке Base64, которая декодируется в:
root:x
successful_internal_auth_with_timestamp=9999999999
user=root
tfa_verified=1
hasroot=1
Эти поля имитируют полностью аутентифицированную сессию root в WHM, включая обход 2FA (tfa_verified=1) и флаг привилегий root (hasroot=1).
Компания cPanel переместила вызов filter_sessiondata() так, чтобы он выполнялся до операции записи сессии в Session.pm.
Цепочка эксплуатации состоит из 5 этапов (этапы 0–4):
flowchart TD
A[Этап 0: Обнаружение канонического хоста] --> B[Этап 1: Получение предварительной сессии]
B --> C[Этап 2: CRLF-инъекция через заголовок Authorization]
C --> D[Этап 3: Распространение сессии через do_token_denied]
D --> E[Этап 4: Подтверждение доступа root через json-api/version]
E --> F{Уязвим?}
F -->|Да| G[Пост-эксплуатационные действия / Интерактивная оболочка]
F -->|Нет| H[Пропустить цель]
A -.- A1["GET /openid_connect/cpanelid → редирект 307 раскрывает реальное имя хоста"]
B -.- B1["POST /login/?login_only=1 → кука whostmgrsession"]
C -.- C1["GET / + отравленный Basic auth → токен /cpsessXXXXXXXXXX"]
D -.- D1["GET /scripts2/listaccts → сброс сырой сессии в кеш"]
E -.- E1["GET /cpsessXXX/json-api/version → HTTP 200 + версия в JSON"]
| Этап | Конечная точка | Назначение |
|---|---|---|
| 0 | /openid_connect/cpanelid | Автоматическое обнаружение канонического имени хоста через редирект 307 |
| 1 | /login/?login_only=1 | Получение предварительной куки whostmgrsession с неверными учётными данными |
| 2 | / | Инъекция заголовка Authorization: Basic, отравленного CRLF, в файл сессии |
| 3 | /scripts2/listaccts | Запуск механизма do_token_denied для сброса сессии в кеш |
| 4 | /{token}/json-api/version | Подтверждение доступа root — HTTP 200 с версией в JSON |
| Возможность | Описание |
|---|---|
| Сканирование одной цели | Полная цепочка эксплуатации по одному URL WHM |
| Массовое сканирование | Многопоточное сканирование из файла или stdin |
| Определение версии | Автоматическое сравнение исправленных и уязвимых версий |
| Пост-эксплуатационное API | Смена пароля, выполнение команд, список аккаунтов, создание пользователей |
| Интерактивная оболочка | Встроенная оболочка WHM с правами root с чтением файлов и командами API |
| Вход через Selenium | Автоматическое внедрение куки сессии в Chrome/Firefox |
| Ручной вход в браузере | JavaScript-фрагменты для консоли для ручного входа в WHM |
| Проверка RCE | Быстрая верификация id / uname -a после обхода |
| Экспорт в JSON | Сохранение всех результатов в структурированный JSON-отчёт |
| Готовность к конвейерам | Работа с httpx, subfinder, shodan и конвейерами awk |
| Только стандартная библиотека | Для базовой функциональности не требуется pip-зависимостей |
| Цветной вывод | Логирование этапов в реальном времени с индикаторами серьёзности |
| Ветка | Исправлено в | Статус |
|---|---|---|
| 11.110.x | 11.110.0.97 | Уязвимо ниже исправления |
| 11.118.x | 11.118.0.63 | Уязвимо ниже исправления |
| 11.126.x | 11.126.0.54 | Уязвимо ниже исправления |
| 11.132.x | 11.132.0.29 | Уязвимо ниже исправления |
| 11.134.x | 11.134.0.20 | Уязвимо ниже исправления |
| 11.136.x | 11.136.0.5 | Уязвимо ниже исправления |
Примечание: Цели, работающие на исправленных сборках, автоматически отмечаются и пропускаются при сканировании.
| Пакет | Назначение |
|---|---|
selenium | Автоматический вход в браузер (--selenium) |
| Chrome / Firefox | Движок браузера для Selenium |
pip install -r requirements.txt # опционально — только selenium
git clone https://github.com/YOUR_USERNAME/cpanel-cve-exploit.git
cd cpanel-cve-exploit
Этап сборки не требуется. Запускайте напрямую:
python3 test-cve.py --help
# Сканирование одной цели WHM
python3 test-cve.py -u https://target.com:2087