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

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

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

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

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

Категории

Все категории
Loading categories
Инструменты/GitHubGitHub/andrei-dr/cpanel-cve-2026-41940-ioc
Оборонительные ИнструментыСканеры уязвимостейВеб-безопасностьАутентификацияРеагирование на ИнцидентыАнализ Журналов
GitHubandrei-dr/cpanel-cve-2026-41940-ioc

cpanel-cve-2026-41940-ioc

CVE-2026-41940 cPanel/WHM auth bypass IOC сканер — исправляет ложные срабатывания в вышестоящем скрипте обнаружения, добавляет перекрёстную корреляцию журналов

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

Популярное

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

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

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

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

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

IOC-сканер CVE-2026-41940

Скрипт обнаружения обхода аутентификации cPanel/WHM (CVE-2026-41940), затрагивающего все версии cPanel после 11.40.

Это переработка исходного скрипта обнаружения cPanel с исправлениями ложных срабатываний и добавленной корреляцией журналов.

Что он делает

Сканирует /var/cpanel/sessions/raw/ на предмет файлов сессий с признаками эксплуатации через инъекцию перевода строки, затем сверяет подозрительные IP и токены сессий с журналами доступа/входа/ошибок cPanel. Также сканирует access_log на предмет исторической эксплуатации, когда файл сессии уже истёк или был удалён.

Исправления относительно исходного скрипта

  1. Убрано сломанное многострочное регулярное выражение pass, которое давало ложные срабатывания на каждой аутентифицированной сессии в продакшене (регулярка совпадает с любым полем pass=, за которым следует другая строка, а это каждая файл сессии).
  2. Обобщено обнаружение инъекций до method=badpass origin + ЛЮБОЙ атрибут после аутентификации вместо узкой комбинации token_denied + cp_security_token. Ловит варианты PoC, в которых опущен token_denied.
  3. Трёхуровневая серьёзность на основе наблюдаемого результата, а не бинарного флага:
    • CRITICAL — инъецированный токен наблюдался с 2xx/3xx в access_log (эксплуатация успешна), или историческая эксплуатация найдена в access_log после истечения сессии
    • HIGH — запись инъекции прошла, но токен так и не появился в access_log (подготовлено, всё ещё может быть использовано)
    • MEDIUM — токен был испробован, но каждый запрос получал 4xx/5xx (сервер заблокировал)
  4. Масштабированные рекомендации по устранению — CRITICAL/HIGH запускает полное реагирование на инцидент; только MEDIUM означает, что сервер устоял, и получает более лёгкие шаги очистки.
  5. Сверка как по cpsessid, так и по IP, извлечённым из попаданий в access_log по инъецированному токену, что ловит смену IP атакующим после инъекции.
  6. Обнаружение только по access_log — ловит эксплуатацию, когда файл сессии истёк или был удалён, путём корреляции неудачных попыток входа (POST /login/?login_only=1 -> 401) с последующим успешным использованием токена cpsess с того же IP.
  7. Режим --extended для более глубокого сканирования журналов по дополнительным источникам.

Быстрый запуск (без клонирования)

root@kitploit:~
# Bash — работает везде, без зависимостей
bash <(curl -fsSL https://raw.githubusercontent.com/AndreiG6/cpanel-cve-2026-41940-ioc/main/ioc.sh)

# Python — быстрее на больших каталогах сессий, поддерживает --json
curl -fsSLo /tmp/ioc.py https://raw.githubusercontent.com/AndreiG6/cpanel-cve-2026-41940-ioc/main/ioc.py
python3 /tmp/ioc.py

# Расширенное сканирование (любой вариант)
bash <(curl -fsSL https://raw.githubusercontent.com/AndreiG6/cpanel-cve-2026-41940-ioc/main/ioc.sh) --extended
python3 /tmp/ioc.py --extended

# Проверка кода выхода после запуска ($? = 0 чисто, 1 найдены IOC, 2 ошибка окружения)
echo $?

Флаги curl: -f завершаться с ошибкой при HTTP-ошибках вместо передачи страницы ошибки в bash, -s тихий режим (без прогресс-бара), -S всё равно показывать ошибки несмотря на -s, -L следовать перенаправлениям.

JSON-вывод (только Python)

Вариант на Python поддерживает --json для структурированного вывода, который можно передать в jq, отправить в SIEM или обработать программно.

root@kitploit:~
# Полный JSON-вывод
python3 ioc.py --json

# Только сводные счётчики
python3 ioc.py --json | jq '.counts'

# Список всех находок CRITICAL
python3 ioc.py --json | jq '[.findings[] | select(.severity == "CRITICAL")]'

# Извлечь уникальные IP атакующих
python3 ioc.py --json | jq '.suspect_ips[]'

# Показать находки с их исходными IP (для блокировок в файрволе)
python3 ioc.py --json | jq '[.findings[] | {severity, source_ip, token: .cp_security_token}]'

# Получить все IP с успешным использованием токена (для немедленной блокировки)
python3 ioc.py --json | jq '[.findings[] | select(.severity == "CRITICAL") | .source_ip] | unique'

# Передать данные перекрёстной сверки для конкретного IP
python3 ioc.py --json | jq '.cross_ref[.suspect_ips[0]]'

Пример структуры JSON:

root@kitploit:~
{
  "findings": [
    {
      "severity": "CRITICAL",
      "file": "/var/cpanel/sessions/raw/:Q3f8Ag2epeBuTaIZ",
      "verdict": "Injected token used successfully (2xx/3xx in access_log)",
      "origin": "address=203.0.113.50,app=whostmgrd,method=badpass",
      "source_ip": "203.0.113.50",
      "user": "root",
      "hasroot": "1",
      "tfa_verified": "0",
      "cp_security_token": "/cpsess04396539398",
      "token_denied": "1",
      "successful_internal_auth_with_timestamp": "9999999999",
      "token_hits": [
        "203.0.113.50 - root [04/30/2026:12:12:01 -0000] \"GET /cpsess04396539398/json-api/version HTTP/1.1\" 200 0 ..."
      ]
    },
    {
      "severity": "MEDIUM",
      "file": "/var/cpanel/sessions/raw/:2TDiaHwh_r8qOH5y",
      "verdict": "Injection landed; token was tried but BLOCKED (all 4xx/5xx)",
      "source_ip": "198.51.100.23",
      "cp_security_token": "/cpsess5637704041",
      "token_hits": [
        "198.51.100.23 - root [04/30/2026:04:08:09 -0000] \"GET /cpsess5637704041/json-api/version HTTP/1.1\" 403 0 ..."
      ]
    },
    {
      "severity": "CRITICAL",
      "file": null,
      "verdict": "Injected cpsess token used with 2xx/3xx after failed login; session expired or purged",
      "source_ip": "203.0.113.99",
      "cp_security_token": "/cpsess8705792557",
      "token_hits": ["..."]
    }
  ],
  "counts": {"critical": 2, "high": 15, "medium": 71, "warning": 0},
  "suspect_ips": ["203.0.113.50", "198.51.100.23", "203.0.113.99"],
  "suspect_ips_omitted": 0,
  "cross_ref": {
    "203.0.113.50": {
      "cpanel_access_log": ["...last 5 lines..."],
      "cpanel_login_log": ["..."]
    }
  },
  "advisory": "https://support.cpanel.net/hc/en-us/articles/40073787579671"
}

Использование (локальная копия)

root@kitploit:~
git clone https://github.com/AndreiG6/cpanel-cve-2026-41940-ioc.git
cd cpanel-cve-2026-41940-ioc

# Вариант на Bash
bash ioc.sh                # по умолчанию (CRITICAL/HIGH развёрнуты, MEDIUM/WARNING только счётчики)
bash ioc.sh -v             # подробный (развернуть все находки)
bash ioc.sh --extended     # подробный + более глубокие журналы + все IP в перекрёстной сверке

# Вариант на Python (та же логика обнаружения, быстрее, структурированный вывод)
python3 ioc.py             # по умолчанию (такое же сворачивание, как в bash)
python3 ioc.py -v          # подробный
python3 ioc.py --extended  # подробный + более глубокие журналы
python3 ioc.py --json      # структурированный JSON (всегда включает все находки)

Должен запускаться от root на целевом сервере cPanel. Вариант на Python требует Python 3.6+ (поставляется с CentOS 7 / CloudLinux 7+).

Коды выхода

КодЗначение
0Индикаторы не найдены
1Обнаружены IOC
2Ошибка окружения (не сервер cPanel)

Ссылки

  • Рекомендации cPanel
  • CVE-2026-41940: Обход аутентификации через инъекцию перевода строки в обработке сессий cPanel

Лицензия

MIT

Скачать инструмент