Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2026-33032 — Uma única chamada de função ausente no registro de rotas foi suficiente para transformar a interface MCP em um gateway de RCE não autenticado. | Kitploit
Ferramentas/GitHubGitHub/keraattin/cve-2026-33032
ReconhecimentoScanners de VulnerabilidadesExploraçãoSegurança WebSegurança de RedeTestes de PenetraçãoSegurança de API
GitHubkeraattin/cve-2026-33032

CVE-2026-33032

Uma única chamada de função ausente no registro de rotas foi suficiente para transformar a interface MCP em um gateway de RCE não autenticado.

Ver Repositório
5há 4 mesesAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

CVE-2026-33032 / MCPwn

CVE CVSS Status Affected License Python

Ferramenta de detecção não destrutiva para a bypass de autenticação MCP do nginx-ui conhecida publicamente como MCPwn. Permite a tomada de controlo não autenticada de qualquer instância nginx-ui a executar uma versão vulnerável, através de dois pedidos HTTP.

Índice

  1. Factos Rápidos
  2. Visão Geral da Vulnerabilidade
  3. Análise Técnica Aprofundada
  4. Estratégia de Deteção
  5. Instalação
  6. Utilização
  7. Exemplo de Saída
  8. Encadear com CVE-2026-27944
  9. Remediação
  10. Utilização Responsável
  11. Referências
  12. Licença

Factos Rápidos

Visão Geral da Vulnerabilidade

O nginx-ui expõe uma interface Model Context Protocol (MCP) que permite a um operador autenticado acionar ferramentas destrutivas, como edições de configuração do nginx, comandos de reinício e operações de backup, através de JSON-RPC.

O endpoint /mcp é protegido pelo middleware AuthRequired(), enquanto o seu endpoint emparelhado /mcp_message, que na realidade recebe as invocações das ferramentas, foi implementado sem o middleware. Qualquer cliente que consiga alcançar a interface através da rede pode:

  1. Abrir um stream Server Sent Events (SSE) para /mcp e receber um sessionID novo sem apresentar qualquer credencial.
  2. Usar esse sessionID para invocar qualquer ferramenta MCP registada, fazendo POST para /mcp_message, ainda sem autenticação.

O atacante obtém controlo total do processo nginx: editar blocos de servidor para redirecionar tráfego, extrair chaves privadas TLS através de leituras de caminhos, recarregar ou parar o nginx, e implantar backdoors persistentes.

Análise Técnica Aprofundada

Causa raiz ao nível do código

root@kitploit:~
// vulnerável (pré-2.3.4)
r.GET("/mcp",          AuthRequired(), mcpHandler)
r.POST("/mcp_message", mcpMessageHandler)    // middleware em falta

// corrigido em 2.3.4
r.GET("/mcp",          AuthRequired(), mcpHandler)
r.POST("/mcp_message", AuthRequired(), mcpMessageHandler)

Uma única chamada de função em falta no registo da rota foi suficiente para transformar a interface MCP num portal de RCE não autenticado.

Esboço do ataque de ponta a ponta

root@kitploit:~
  Atacante                              nginx-ui (<2.3.4)
     |   1) GET /mcp  (sem auth)               |
     | -------------------------------------->  |
     |   2) event: endpoint data: /mcp_message?sessionID=XYZ
     | <--------------------------------------  |
     |   3) POST /mcp_message?sessionID=XYZ     |
     |      body: JSON-RPC call_tool "nginx_reload" ou
     |             "edit_config {...}"          |
     | -------------------------------------->  |
     |   4) 200 OK; ferramenta executada com privilégios totais
     | <--------------------------------------  |

Matriz de impacto

Estratégia de Deteção

Este repositório evita intencionalmente qualquer ação destrutiva. O detetor usa apenas métodos MCP de leitura (tools/list). A lógica:

root@kitploit:~
> Passo 1  Identificar nginx-ui através de
>         GET /               (título HTML, bundles JS)
>         GET /api/settings   (JSON com referências a chaves do nginx-ui)
>         Extrair versão via regex no cabeçalho / corpo
> Passo 2  Abrir stream SSE para /mcp
>         Analisar o primeiro sessionID do evento "endpoint"
> Passo 3  POST /mcp_message?sessionID=<id>
>         Body: {"jsonrpc":"2.0","method":"tools/list","params":{}}
>         Sem cabeçalho Authorization
> Passo 4  Vulnerável se status 200 e o corpo contiver um manifesto de ferramentas
>         Corrigido se status 401 / 403 / 404
>         Inconclusivo caso contrário

Porque é seguro

O método JSON-RPC tools/list é apenas de leitura. Enumera as ferramentas que o servidor MCP conhece, mas não invoca nenhuma delas. O script recusa-se a fazer POST de qualquer outro método e nunca constrói payloads para ferramentas destrutivas.

Instalação

root@kitploit:~
git clone https://github.com/your-org/CVE-2026-33032-detector.git
cd CVE-2026-33032-detector
python3 --version      # 3.9 ou mais recente
# Não são necessários pacotes de terceiros.

Para o componente Nmap NSE, copie nginx-ui-mcpwn.nse para o seu diretório local de scripts e atualize a base de dados de scripts:

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

Utilização

Detetor Python

root@kitploit:~
# Alvo único
python3 detect_nginx_ui_mcpwn.py --target https://nginx-ui.internal

# Análise em massa a partir de ficheiro
python3 detect_nginx_ui_mcpwn.py --targets targets.txt --workers 20

# Saída JSON (NDJSON) adequada para canalizar para jq
python3 detect_nginx_ui_mcpwn.py --target 10.0.0.5:9000 --json | jq .

Referência da linha de comandos:

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

Exemplo de Saída

Legível por humanos

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

  Detetor CVE-2026-33032 nginx-ui MCPwn > não destrutivo

[!] VULNERÁVEL https://nginx-ui.internal versão=2.3.2 evidência=status=200; body_preview={"jsonrpc":"2.0","id":"...","result":{"tools":[{"name":"edit_config",...
[+] corrigido https://nginx-ui-patched:9000 versão=2.3.4 evidência=status=401; body_preview={"error":"unauthorized"}
[.] não é nginx-ui https://example.com evidência=identificação negativa

Resumo: 1/3 alvos sinalizados como vulneráveis

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: VULNERÁVEL
|   version: 2.3.2
|   session_id: abc123
|_  evidence: tools/list aceite sem credenciais

Encadear com CVE-2026-27944

CVE-2026-27944 (o download não autenticado de /api/backup que expõe a chave AES no cabeçalho X-Backup-Security) encadeia-se perfeitamente com o MCPwn: o arquivo de backup expõe o node_secret, que pode ser usado para autenticar em /mcp mesmo depois de a correção para 33032 ser aplicada, até os operadores rodarem o segredo.

O detetor complementar para 27944 vive num diretório irmão deste projeto de investigação.

Remediação

  1. Atualize o nginx-ui para 2.3.4 ou posterior.
  2. Rode o node_secret, os hashes das palavras-passe de administrador e quaisquer chaves privadas TLS que estivessem acessíveis ao processo nginx-ui.
  3. Restrinja a exposição do nginx-ui a uma VLAN de gestão, VPN ou proxy reverso que imponha autenticação antes de a rota /mcp_message ser alcançável.
  4. Reveja o histórico de configuração do nginx (Git ou backup) para detetar diretivas inesperadas de upstream / proxy_pass / ssl_certificate introduzidas na janela de exposição.

Utilização Responsável

Esta ferramenta é publicada para ajudar defensores a identificar instâncias sem correção dentro de ambientes que estão autorizados a testar. Não a utilize contra sistemas que não possui ou para os quais não tem permissão explícita de avaliação. Os autores declinam toda a responsabilidade por uso indevido.

Referências

  • NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-33032
  • Picus Security (análise do 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/
  • Projeto upstream: https://github.com/0xjacky/nginx-ui

Licença

Publicado sob a Licença MIT. Consulte os cabeçalhos individuais dos scripts para avisos por ficheiro.

Baixar ferramenta
CampoValor
ID CVECVE-2026-33032
AliasMCPwn
CVSS 3.19.8 / Crítico (AV:N / AC:L / PR:N / UI:N / S:U / C:H/I:H/A:H)
CWECWE-306 Falta de Autenticação para Função Crítica
Produto afetadonginx-ui (github.com/0xjacky/nginx-ui)
Versões afetadasTodas as versões anteriores a 2.3.4
Versão corrigida2.3.4
Estado de exploraçãoAtiva no terreno (Picus Security, Recorded Future)
Exposição no Shodan~2.689 instâncias expostas à Internet
Data de publicação2026-04-15
Ferramenta MCPEfeito no servidor nginx
edit_configReescrever blocos de servidor arbitrários, inserir upstream do atacante
reload_nginxAplicar configuração do atacante sem ação manual
stop_nginxNegação de serviço
read_fileExfiltrar chaves privadas TLS, credenciais de caminhos montados
create_certReemitir certificados TLS sob controlo do atacante
list_backups / downloadDescarregar o backup completo do nginx-ui, incluindo node_secret e hashes
FlagFinalidade
--targetURL único ou host[:porta]
--targetsFicheiro de alvos separados por nova linha
--timeoutTimeout HTTP, padrão 10 segundos
--workersTrabalhadores concorrentes para análises em massa, padrão 10
--verify-tlsImpor verificação do certificado TLS (desativada por padrão)
--jsonEmitir NDJSON, um registo por alvo
--no-bannerSuprimir o banner ASCII