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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2026-33032 — Одного пропущенного вызова функции при регистрации маршрута было достаточно, чтобы превратить интерфейс MCP в шлюз для неаутентифицированного удалённого выполнения кода (RCE). | Kitploit
Инструменты/GitHubGitHub/keraattin/cve-2026-33032
РазведкаСканеры уязвимостейЭксплуатацияВеб-безопасностьСетевая безопасностьТестирование на ПроникновениеБезопасность API
GitHubkeraattin/cve-2026-33032

CVE-2026-33032

Одного пропущенного вызова функции при регистрации маршрута было достаточно, чтобы превратить интерфейс MCP в шлюз для неаутентифицированного удалённого выполнения кода (RCE).

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

Популярное

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

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

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

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

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

CVE-2026-33032 / MCPwn

CVE CVSS Status Affected License Python

Неразрушающий инструмент обнаружения для обхода аутентификации MCP в nginx-ui, известного публично как MCPwn. Позволяет за два HTTP-запроса без аутентификации получить полный контроль над любым экземпляром nginx-ui, работающим на уязвимой версии.

Содержание

  1. Краткие факты
  2. Обзор уязвимости
  3. Технический анализ
  4. Стратегия обнаружения
  5. Установка
  6. Использование
  7. Пример вывода
  8. Связка с CVE-2026-27944
  9. Устранение
  10. Ответственное использование
  11. Ссылки
  12. Лицензия

Краткие факты

Обзор уязвимости

nginx-ui предоставляет интерфейс Model Context Protocol (MCP), который позволяет аутентифицированному оператору управлять разрушительными инструментами, такими как редактирование конфигурации nginx, команды перезапуска и операции резервного копирования, через JSON-RPC.

Конечная точка /mcp защищена промежуточным ПО AuthRequired(), в то время как её парная конечная точка /mcp_message, которая фактически принимает вызовы инструментов, была развёрнута без этого промежуточного ПО. Любой клиент, который может получить доступ к веб-интерфейсу по сети, может:

  1. Открыть поток Server Sent Events (SSE) к /mcp и получить новый sessionID без предъявления каких-либо учётных данных.
  2. Использовать этот sessionID для вызова любого зарегистрированного MCP-инструмента, отправив POST-запрос к /mcp_message, по-прежнему без аутентификации.

Атакующий получает полный контроль над процессом nginx: редактирует серверные блоки для перенаправления трафика, извлекает закрытые ключи TLS через чтение путей, перезагружает или останавливает nginx, а также внедряет постоянные бэкдоры.

Технический анализ

Первопричина на уровне кода

root@kitploit:~
// уязвимая версия (до 2.3.4)
r.GET("/mcp",          AuthRequired(), mcpHandler)
r.POST("/mcp_message", mcpMessageHandler)    // отсутствует промежуточное ПО

// исправлено в 2.3.4
r.GET("/mcp",          AuthRequired(), mcpHandler)
r.POST("/mcp_message", AuthRequired(), mcpMessageHandler)

Одного пропущенного вызова функции при регистрации маршрута было достаточно, чтобы превратить интерфейс MCP в шлюз неаутентифицированного RCE.

Схема атаки от начала до конца

root@kitploit:~
  Атакующий                              nginx-ui (<2.3.4)
     |   1) GET /mcp  (без аутентификации)     |
     | -------------------------------------->  |
     |   2) event: endpoint data: /mcp_message?sessionID=XYZ
     | <--------------------------------------  |
     |   3) POST /mcp_message?sessionID=XYZ     |
     |      тело: JSON-RPC call_tool "nginx_reload" или
     |             "edit_config {...}"          |
     | -------------------------------------->  |
     |   4) 200 OK; инструмент выполнен с полными привилегиями
     | <--------------------------------------  |

Матрица воздействия

Стратегия обнаружения

Этот репозиторий намеренно избегает любых разрушительных действий. Детектор использует только методы MCP, доступные для чтения (tools/list). Логика:

root@kitploit:~
> Шаг 1  Определение nginx-ui через
>         GET /               (HTML-заголовок, JS-бандлы)
>         GET /api/settings   (JSON со ссылками на ключи nginx-ui)
>         Извлечение версии через заголовок / регулярное выражение в теле
> Шаг 2  Открытие SSE-потока к /mcp
>         Извлечение первого sessionID из события "endpoint"
> Шаг 3  POST /mcp_message?sessionID=<id>
>         Тело: {"jsonrpc":"2.0","method":"tools/list","params":{}}
>         Без заголовка Authorization
> Шаг 4  Уязвим, если статус 200 и тело содержит манифест инструментов
>         Исправлен, если статус 401 / 403 / 404
>         Неопределённо в остальных случаях

Почему это безопасно

Метод JSON-RPC tools/list доступен только для чтения. Он перечисляет, какие инструменты известны MCP-серверу, но не вызывает ни один из них. Скрипт отказывается отправлять любые другие методы и никогда не формирует полезные нагрузки для разрушительных инструментов.

Установка

root@kitploit:~
git clone https://github.com/your-org/CVE-2026-33032-detector.git
cd CVE-2026-33032-detector
python3 --version      # 3.9 или новее
# Сторонние пакеты не требуются.

Для компонента Nmap NSE скопируйте nginx-ui-mcpwn.nse в локальный каталог скриптов и обновите базу данных скриптов:

root@kitploit:~
cp nginx-ui-mcpwn.nse /usr/share/nmap/scripts/
sudo nmap --script-updatedb

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

Python-детектор

root@kitploit:~
# Одиночная цель
python3 detect_nginx_ui_mcpwn.py --target https://nginx-ui.internal

# Массовое сканирование из файла
python3 detect_nginx_ui_mcpwn.py --targets targets.txt --workers 20

# Вывод в формате JSON (NDJSON), подходящий для передачи в jq
python3 detect_nginx_ui_mcpwn.py --target 10.0.0.5:9000 --json | jq .

Справочник по параметрам командной строки:

Nmap NSE

root@kitploit:~
nmap -p 80,443,9000 --script nginx-ui-mcpwn 10.0.0.0/24
nmap -p 443 --script nginx-ui-mcpwn --script-args "nginx-ui-mcpwn.timeout=8" host.example.com

Пример вывода

Человекочитаемый формат

root@kitploit:~
 _   _       _                  _    _  ___   __  __  ____ ____
| \ | | __ _(_)_ __ __  __     | |  | ||_ _| |  \/  |/ ___|  _ \__      ___ __
|  \| |/ _` | | '_ \\ \/ /_____| |  | | | |  | |\/| | |   | |_) \ \ /\ / / '_ \
| |\  | (_| | | | | |>  <|_____| |__| | | |  | |  | | |___|  __/ \ V  V /| | | |
|_| \_|\__, |_|_| |_/_/\_\     |_____|_||___| |_|  |_|\____|_|     \_/\_/ |_| |_|
       |___/

  CVE-2026-33032 nginx-ui MCPwn Детектор > неразрушающий

[!] УЯЗВИМ https://nginx-ui.internal версия=2.3.2 доказательство=status=200; body_preview={"jsonrpc":"2.0","id":"...","result":{"tools":[{"name":"edit_config",...
[+] ИСПРАВЛЕН https://nginx-ui-patched:9000 версия=2.3.4 доказательство=status=401; body_preview={"error":"unauthorized"}
[.] не nginx-ui https://example.com доказательство=отрицательный fingerprint

Итог: 1/3 целей помечены как уязвимые

NDJSON

root@kitploit:~
{"target":"https://nginx-ui.internal","reachable":true,"is_nginx_ui":true,"mcp_endpoint_present":true,"session_id_obtained":true,"mcp_message_unauthenticated":true,"vulnerable":true,"nginx_ui_version":"2.3.2","evidence":"status=200; body_preview=...","error":null}

Nmap

root@kitploit:~
PORT     STATE SERVICE
9000/tcp open  http
| nginx-ui-mcpwn:
|   status: VULNERABLE
|   version: 2.3.2
|   session_id: abc123
|_  evidence: tools/list accepted without credentials

Связка с CVE-2026-27944

CVE-2026-27944 (неаутентифицированная загрузка /api/backup, которая раскрывает ключ AES в заголовке X-Backup-Security) хорошо сочетается с MCPwn: архив резервной копии раскрывает node_secret, который можно использовать для аутентификации к /mcp даже после выхода исправления для 33032, пока операторы не сменят секрет.

Сопутствующий детектор для 27944 находится в соседнем каталоге этого исследовательского проекта.

Устранение

  1. Обновите nginx-ui до версии 2.3.4 или новее.
  2. Смените node_secret, хэши паролей администратора и любые закрытые ключи TLS, которые были доступны процессу nginx-ui.
  3. Ограничьте доступ к nginx-ui выделенной VLAN для управления, VPN или обратным прокси, который обеспечивает аутентификацию до того, как маршрут /mcp_message станет доступен.
  4. Проверьте историю конфигурации nginx (Git или резервные копии) на предмет неожиданных директив upstream / proxy_pass / ssl_certificate, добавленных в период воздействия.

Ответственное использование

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

Ссылки

  • NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-33032
  • Picus Security (анализ MCPwn): https://www.picussecurity.com/resource/blog/cve-2026-33032-mcpwn-how-a-missing-middleware-call-in-nginx-ui-hands-attackers-full-web-server-takeover
  • Security Affairs: https://securityaffairs.com/190841/hacking/cve-2026-33032-severe-nginx-ui-bug-grants-unauthenticated-server-access.html
  • BleepingComputer: https://www.bleepingcomputer.com/news/security/critical-nginx-ui-auth-bypass-flaw-now-actively-exploited-in-the-wild/
  • Исходный проект: https://github.com/0xjacky/nginx-ui

Лицензия

Выпущено под лицензией MIT. Смотрите заголовки отдельных скриптов для уведомлений по каждому файлу.

Скачать инструмент
ПолеЗначение
CVE IDCVE-2026-33032
ПсевдонимMCPwn
CVSS 3.19.8 / Критический (AV:N / AC:L / PR:N / UI:N / S:U / C:H/I:H/A:H)
CWECWE-306 Отсутствие аутентификации для критической функции
Затронутый продуктnginx-ui (github.com/0xjacky/nginx-ui)
Затронутые версииВсе версии до 2.3.4
Исправленная версия2.3.4
Статус эксплуатацииАктивная эксплуатация в дикой природе (Picus Security, Recorded Future)
Доступность в Shodan~2 689 экземпляров, доступных из интернета
Дата публикации2026-04-15
MCP-инструментЭффект на сервер nginx
edit_configПерезапись произвольных серверных блоков, вставка апстрима атакующего
reload_nginxПрименение конфигурации атакующего без ручных действий
stop_nginxОтказ в обслуживании
read_fileЭкфильтрация закрытых ключей TLS, учётных данных из смонтированных путей
create_certПеревыпуск TLS-сертификатов под контролем атакующего
list_backups / downloadВыгрузка полной резервной копии nginx-ui, включая node_secret и хэши
ФлагНазначение
--targetОдиночный URL или host[:port]
--targetsФайл с целями, разделёнными переводами строки
--timeoutHTTP-таймаут, по умолчанию 10 секунд
--workersПараллельные рабочие процессы для массовых сканирований, по умолчанию 10
--verify-tlsВключить проверку TLS-сертификатов (по умолчанию выключена)
--jsonВывод в формате NDJSON, одна запись на цель
--no-bannerПодавить ASCII-баннер