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

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

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

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

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

Категории

Все категории
Loading categories
Nginx-chain-Rift-Poolslip — PoC цепочки RCE в nginx, не зависящей от ASLR, объединяющий утечку через переполнение чтения кучи PoolSlip (CVE-2026-9256) с переполнением rift (CVE-2026-42945) для достижения system() на стандартном nginx. | Kitploit
Инструменты/GitHubGitHub/y198nt/nginx-chain-rift-poolslip
Криминалистика памятиАнализ уязвимостейЭксплуатацияОбратная инженерияЭксплуатация веб-приложенийТестирование на ПроникновениеОбучение и ОбразованиеРазработка Полезной Нагрузки

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться
Эксплуатация Бинарных Файлов
Лаборатории и Практика
GitHuby198nt/nginx-chain-rift-poolslip

Nginx-chain-Rift-Poolslip

PoC цепочки RCE в nginx, не зависящей от ASLR, объединяющий утечку через переполнение чтения кучи PoolSlip (CVE-2026-9256) с переполнением rift (CVE-2026-42945) для достижения system() на стандартном nginx.

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

nginx PoolSlip × Rift — ASLR-независимая RCE-цепочка

Первая публичная цепочка из двух недавно раскрытых багов движка rewrite в nginx, объединённых в единый ASLR-независимый удалённый system() на штатном официальном образе nginx:1.30.0 Docker (Debian 13, glibc 2.41) — без захардкоженных адресов, без перезапуска nginx, ~90 % на свежий worker.

  • CVE-2026-9256 "PoolSlip" — перечитывание за границей heap через $args → утечка живых libc + heap.
  • CVE-2026-42945 "rift" — переполнение heap через is_args (только URL-безопасные байты) → 2-байтная частичная перезапись указателя очистки limit_conn → ngx_destroy_pool проходит по нему → system(cmd).

Оба — это одно и то же двухпроходное несоответствие is_args, направленное на два стока. Полный технический разбор: Writeup


Раскрытие и безопасность

  • Обе CVE уже пропатчены и активно эксплуатируются в дикой природе. Обновитесь до nginx 1.30.2 (stable) или 1.31.1 (mainline) — учтите, что 1.30.1 исправляет rift, но всё ещё уязвим к PoolSlip, поэтому только 1.30.2 закрывает оба. NGINX Plus: R36 P5 / R32 P7 / R37.0.1.1.
  • Это опубликовано только для обучения и авторизованного тестирования. Оно работает против встроенной локальной лаборатории Docker — не направляйте его на инфраструктуру, которой вы не владеете или на которую у вас нет письменного разрешения на тестирование.
CVEпсевдонимуязвимыеисправлено (nginx OSS)
CVE-2026-42945rift0.6.27 – 1.30.01.30.1 / 1.31.0
CVE-2026-9256PoolSlip0.1.17 – 1.30.1 + 1.31.01.30.2 / 1.31.1

Что в репозитории

ФайлНазначение
nginx.confПравдоподобный конфиг API-шлюза (цель — limit_conn, rewrite миграции v1→v2, прокси загрузки, деградированная страница поиска). Без настройки аллокатора.
run.shПоднимает локальную лабораторию: штатный nginx:1.30.0, обслуживающий nginx.conf, плюс медленный upstream, на хосте :19322.
exp_official.pyПолная цепочка: утечка PoolSlip → вывод libc/heap → spray → groom → частичная перезапись rift → system().

Требования

  • Docker, Python 3 (для запуска exp_official.py), curl, Linux x86-64.
  • Лаборатория полностью самодостаточна / офлайн — run.sh использует perl (уже есть в штатном образе nginx) для медленного upstream, так что нет дополнительных пакетов, нет файла slow_backend и не нужен интернет. Сам бинарник nginx остаётся штатным.
  • Опционально: чтобы пройти сессии gdb в WRITEUP.md, зайдите через docker exec и выполните apt-get install gdb file binutils, затем загрузите gef.

Запуск

git clone https://github.com/y198nt/Nginx-chain-Rift-Poolslip
cd Nginx-chain-Rift-Poolslip

bash run.sh                                          # stock nginx:1.30.0 on http://127.0.0.1:19322
python3 exp_official.py --cmd 'id > /tmp/rce_proof'  # leak → overwrite → system()
docker exec nginx-rift-official cat /tmp/rce_proof   # → uid=101(nginx) ...

exp_official.py — одноразовый (~90 % на свежий worker): он утекает один раз и стреляет один раз. Если файл-доказательство пуст, groom промахнулся на слот — просто запустите заново.

docker rm -f nginx-rift-official      # tear the lab down

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

  1. Утечка (PoolSlip). rewrite ^/search/((.*))$ /lookup?$1$2 заставляет проход копирования установить r->args.len за буфером; деградированная страница /search отражает $args в соседний heap. После короткого прогрева указатель libpcre-cluster (фиксированный 0xb0ad08 ниже libc) и указатель heap оседают на стабильных смещениях → libc_base и heap_base, ничего захардкоженного.
  2. Запись (rift). Переполнение rift может выдавать только URL-безопасные байты, поэтому полный 48-битный адрес записывается ~0,9 % времени при ASLR. Вместо этого мы перезаписываем только младшие 2 байта уже валидного указателя очистки limit_conn — ASLR-случайные старшие байты остаются нетронутыми → ASLR-независимо.
  3. Выстрел. Указатель перенаправляется в распылённый ngx_pool_cleanup_t{handler=&system, data=cmd, next=0}; закрытие жертвы запускает обход очистки в ngx_destroy_pool → system(cmd).

Смотрите Writeup для полного вывода, сессий gdb и тупиков/поворотов.

Меры защиты и обнаружение

  • Патч (обновление до 1.30.2 / 1.31.1) — единственное реальное исправление.
  • Запись срабатывает только через rewrite, чья замена содержит ? и ссылается на PCRE-захват ($1/$2), или на шаблон вложенного захвата вроде ^/x/((.*))$ → /y?$1$2. Проверьте конфиги на такие случаи и переработайте проблемный rewrite/set до патча.
  • Отражённый $args (или любая переменная, производная от запроса, возвращаемая обратно) — это то, что превращает перечитывание в утечку информации — не отражайте аргументы запроса дословно.
  • Сигналы WAF / логов: потоки %2B/+ в пути URI (GET /search/+++…), 503 от деградированной страницы, отражающей длинный $args, и штормы SIGSEGV/перезапусков worker.

Благодарности и ссылки

  • Оригинальные PoC компонентов: DepthFirstDisclosures/Nginx-Rift (rift).
  • Рекомендации вендора — CVE-2026-42945 (rift) и CVE-2026-9256 (PoolSlip), F5/nginx.
  • Связывание, ASLR-независимая техника и порт на Debian glibc-2.41: этот репозиторий.
Скачать инструмент