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

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

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

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

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

Категории

Все категории
Loading categories
CVE2026-42926 — Контролируемая лаборатория инъекции HTTP/2-фреймов NGINX для валидации патча CVE-2026-42926 и исследований в области защиты. | Kitploit
Инструменты/GitHubGitHub/ikarolaborda/cve2026-42926
Оборонительные ИнструментыАнализ уязвимостейАудит конфигурацииВеб-безопасностьОбучение и ОбразованиеЛаборатории и Практика
GitHubikarolaborda/cve2026-42926

CVE2026-42926

Контролируемая лаборатория инъекции HTTP/2-фреймов NGINX для валидации патча CVE-2026-42926 и исследований в области защиты.

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

Популярное

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

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

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

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

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

CVE-2026-42926 NGINX HTTP/2 Frame Injection Lab

Контролируемая лаборатория по кибербезопасности для валидации и сравнения поведения, связанного с CVE-2026-42926 — проблемой внедрения (инъекции) HTTP/2-фреймов, затрагивающей определённые версии NGINX при использовании уязвимой конфигурации прокси.

Этот репозиторий предназначен только для оборонительных исследований, проверки исправлений, аудита конфигурации и контролируемого лабораторного воспроизведения.

Классификация: Внедрение HTTP/2-фреймов Затронутые версии: NGINX 1.29.4 – 1.30.0 Исправленные версии: NGINX 1.30.1+ / 1.31.0+

Предупреждение по безопасности

Используйте этот проект только в изолированной лабораторной среде, которая вам принадлежит или на тестирование которой у вас есть явное разрешение.

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

Рекомендуемая изоляция:

  • Локальная виртуальная машина
  • Одноразовый контейнер
  • Частный тестовый хост
  • Немаршрутизируемая лабораторная сеть

Что делает эта лаборатория

Лаборатория проверяет, соответствуют ли целевой бинарный файл NGINX и конфигурация условиям, необходимым для воспроизведения проблемы, отправляет специально сформированный запрос на тестовый location и анализирует контролируемый логгер upstream на предмет признаков того, что внедрённые байты, похожие на HTTP/2-фреймы, достигли upstream-стороны.

Обычная схема валидации:

  1. Запустите ту же уязвимую прокси-конфигурацию с уязвимой сборкой NGINX.
  2. Запустите ту же уязвимую прокси-конфигурацию с исправленной сборкой NGINX.
  3. Сравните свидетельства upstream и вердикты скрипта.

Ожидаемый результат:

  • Уязвимая сборка: могут наблюдаться признаки внедрения.
  • Исправленная сборка: никаких признаков внедрения наблюдаться не должно.

Содержимое репозитория

Требования

  • Среда командной строки Linux или macOS
  • bash
  • python3
  • php
  • Расширение PHP cURL
  • Тестовые бинарные файлы NGINX для версий, которые вы хотите сравнить
  • Разрешение на привязку настроенного порта прослушивания NGINX

Для контейнеризированного рабочего процесса:

  • Docker
  • Docker Compose v2

Пример конфигурации слушает порт 80, что обычно требует привилегий root. Для непривилегированной локальной лаборатории измените listen 80; в nginx_vulnerable.conf на доступный высокий порт, например 8080, и используйте соответствующий целевой URL в команде PHP.

Настройка

Сделайте скрипты исполняемыми:

root@kitploit:~
chmod +x nginx_config_verify.sh run_lab_comparison.sh

Убедитесь, что PHP поддерживает cURL:

root@kitploit:~
php -m | grep -i curl

Проверьте, что каждый бинарный файл NGINX может вывести свою версию:

root@kitploit:~
/path/to/nginx -V

Конфигурация лаборатории

Предоставленный файл nginx_vulnerable.conf содержит необходимый тестовый шаблон:

root@kitploit:~
location /exploit {
    proxy_pass http://127.0.0.1:8081;
    proxy_http_version 2;
    proxy_set_body $request_body;
    proxy_set_header Host $host;
    proxy_set_header Content-Length $content_length;
}

Важные детали:

  • proxy_http_version 2 включает проксирование HTTP/2 к логгеру upstream.
  • proxy_set_body $request_body использует тело запроса, контролируемое клиентом.
  • client_max_body_size 20m позволяет передавать сформированное тело запроса размером 16 МиБ, используемое скриптом валидации.
  • Логгер upstream по умолчанию слушает на 127.0.0.1:8081.

Docker-специфичная конфигурация в docker/nginx_vulnerable.docker.conf сохраняет тот же уязвимый шаблон прокси, но слушает на контейнерном порту 8080 и проксирует к имени сервиса Compose upstream:8081.

Быстрый старт в Docker: Лаборатория NGINX 1.29.4

Dockerfile собирает NGINX 1.29.4 из исходников и устанавливает инструментарий PHP/Python, необходимый для лаборатории. Затем Compose запускает три сервиса из одного образа:

  • upstream: логгер сырых HTTP/2-фреймов
  • nginx: уязвимый NGINX 1.29.4, использующий docker/nginx_vulnerable.docker.conf
  • runner: одноразовая команда валидации PHP

Соберите образ лаборатории:

root@kitploit:~
docker compose build

Запустите логгер upstream и уязвимый NGINX:

root@kitploit:~
docker compose up -d upstream nginx

Проверьте встроенную версию NGINX:

root@kitploit:~
docker compose exec nginx nginx -V

Запустите скрипт валидации внутри сети Compose:

root@kitploit:~
docker compose --profile run run --rm runner

Runner использует следующие аргументы внутри контейнера:

root@kitploit:~
php /lab/cve_2026_42926_lab.php \
  http://nginx:8080/exploit \
  /lab/upstream_logs \
  /lab/nginx_config_verify.sh \
  /usr/local/nginx/sbin/nginx \
  /lab/docker/nginx_vulnerable.docker.conf \
  /exploit

Сгенерированные логи upstream записываются в директорию хоста:

root@kitploit:~
./upstream_logs/

Сервис NGINX также доступен с хоста по адресу:

root@kitploit:~
http://localhost:8080/version

Остановите и удалите контейнеры лаборатории:

root@kitploit:~
docker compose down

Быстрый старт: Одиночный запуск валидации

Запустите контролируемый логгер upstream:

root@kitploit:~
python3 upstream_frame_logger.py 8081 ./upstream_logs

В другом терминале запустите NGINX с примером конфигурации:

root@kitploit:~
/path/to/nginx -c "$PWD/nginx_vulnerable.conf"

Запустите скрипт валидации:

root@kitploit:~
php cve_2026_42926_lab.php \
  http://localhost/exploit \
  ./upstream_logs \
  ./nginx_config_verify.sh \
  /path/to/nginx \
  "$PWD/nginx_vulnerable.conf" \
  /exploit

Остановите NGINX после запуска:

root@kitploit:~
/path/to/nginx -s stop

Если вы изменили порт прослушивания NGINX, обновите первый аргумент. Например:

root@kitploit:~
php cve_2026_42926_lab.php http://localhost:8080/exploit ./upstream_logs ./nginx_config_verify.sh /path/to/nginx "$PWD/nginx_vulnerable.conf" /exploit

Быстрый старт: Сравнение уязвимой и исправленной версий

Задайте пути к двум бинарным файлам NGINX и запустите сборочный скрипт сравнения:

root@kitploit:~
VULNERABLE_NGINX=/usr/local/nginx_1.29.4/sbin/nginx \
PATCHED_NGINX=/usr/local/nginx_1.30.1/sbin/nginx \
bash run_lab_comparison.sh

Опциональные переопределения конфигурации:

root@kitploit:~
VULNERABLE_NGINX=/path/to/vulnerable/nginx \
PATCHED_NGINX=/path/to/patched/nginx \
VULNERABLE_CONFIG="$PWD/nginx_vulnerable.conf" \
PATCHED_CONFIG="$PWD/nginx_vulnerable.conf" \
bash run_lab_comparison.sh

Скрипт сравнения записывает:

  • vulnerable_result.txt
  • patched_result.txt
  • upstream_logs_vulnerable/
  • upstream_logs_patched/

Ручная проверка конфигурации

Используйте nginx_config_verify.sh напрямую, когда нужно просто проверить, содержит ли конфигурация уязвимый шаблон:

root@kitploit:~
./nginx_config_verify.sh /path/to/nginx "$PWD/nginx_vulnerable.conf" /exploit

Вспомогательный скрипт проверяет:

  • proxy_http_version 2
  • proxy_set_body с переменной
  • client_max_body_size не менее 16 МиБ

Аргументы скрипта

cve_2026_42926_lab.php принимает позиционные аргументы:

root@kitploit:~
php cve_2026_42926_lab.php <target_url> <upstream_log_dir> <config_script> <nginx_binary> <nginx_config> <location> [version_url]

Значения по умолчанию:

Вердикты и коды выхода

cve_2026_42926_lab.php возвращает один из трёх вердиктов:

Положительное свидетельство требует, чтобы скрипт сопоставил метку запуска, наблюдаемый заголовок фрейма upstream, флаг внедрённого фрейма и затронутую версию NGINX.

Артефакты вывода

Логгер upstream записывает JSON-файлы с именами вида:

root@kitploit:~
frames_<timestamp>.json

Каждый лог содержит разобранные метаданные HTTP/2-фрейма, выдержки из полезной нагрузки, смещения байтов, флаги обнаружения внедрения и поля корреляции запуска.

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

Устранение неполадок

Если PHP-скрипт сообщает, что вспомогательный скрипт конфигурации не является исполняемым, выполните:

root@kitploit:~
chmod +x nginx_config_verify.sh

Если запрос возвращает 413 Request Entity Too Large, увеличьте client_max_body_size как минимум до 16m; в примере конфигурации используется 20m.

Если логи upstream не создаются, проверьте, что:

  • upstream_frame_logger.py запущен.
  • NGINX проксирует на 127.0.0.1:8081.
  • Целевой URL указывает на настроенный слушатель NGINX.
  • Запрос дошёл до location /exploit.

Если NGINX не может привязаться к порту 80, либо запустите его с соответствующими привилегиями в лабораторной среде, либо измените конфигурацию на высокий порт, например 8080.

Если результат сравнения неопределён, проверьте vulnerable_result.txt, patched_result.txt и соответствующие директории логов upstream на предмет невыполненного предусловия.

Лицензия

Этот проект лицензирован по MIT-лицензии. Подробности см. в LICENSE.

Скачать инструмент
ФайлОписание
README.mdДокументация проекта.
LICENSEЛицензия MIT.
DockerfileСоздаёт самодостаточный образ лаборатории с NGINX 1.29.4, PHP CLI/cURL, Python и скриптами проекта.
docker-compose.ymlЗапускает уязвимый сервис NGINX, логгер upstream-фреймов и опциональный валидационный runner.
cve_2026_42926_lab.phpОсновной скрипт валидации лаборатории. Проверяет предусловия версии/конфигурации, отправляет специально сформированный запрос, анализирует логи upstream и выносит вердикт.
nginx_vulnerable.confПример конфигурации NGINX, содержащий уязвимый шаблон проксирования, используемый для сравнения уязвимой и исправленной версий.
docker/nginx_vulnerable.docker.confDocker-специфичная конфигурация NGINX, использующая тот же уязвимый шаблон и обнаружение сервисов Compose.
nginx_config_verify.shВспомогательный скрипт, проверяющий, содержит ли целевая конфигурация NGINX требуемый уязвимый шаблон прокси.
upstream_frame_logger.pyКонтролируемый логгер сырых HTTP/2-фреймов upstream, используемый для захвата и анализа фреймов, полученных от NGINX.
run_lab_comparison.shОркестрирует сравнительные запуски уязвимой и исправленной версий.
.dockerignoreИсключает сгенерированные логи и метаданные IDE из контекста сборки Docker.
АргументЗначение по умолчанию
target_urlhttp://localhost/exploit
upstream_log_dir./upstream_logs
config_script./nginx_config_verify.sh
nginx_binarynginx
nginx_config/etc/nginx/nginx.conf
location/exploit
version_urlhttp://localhost/version
ВердиктЗначениеКод выхода
positiveОбнаружены признаки внедрения фреймов, и они коррелированы с запуском.0
negativeПредусловия выполнены, признаков внедрения не обнаружено.1
inconclusiveНе выполнены одно или несколько предусловий или проверок свидетельств.2