
Mecanismo de detección de alta fidelidad para RCE en RSC/Next.js (CVE-2025-55182 y CVE-2025-66478)
Una herramienta de línea de comandos para detectar CVE-2025-55182 y CVE-2025-66478 en aplicaciones Next.js que utilizan React Server Components.
Para conocer los detalles técnicos de la vulnerabilidad y la metodología de detección, consulta nuestra entrada del blog: https://slcyber.io/research-center/high-fidelity-detection-mechanism-for-rsc-next-js-rce-cve-2025-55182-cve-2025-66478
De forma predeterminada, el escáner envía una solicitud POST multipart manipulada que contiene un payload de prueba de concepto de RCE que ejecuta una operación matemática determinista (41*271 = 11111). Los hosts vulnerables devuelven el resultado en el encabezado de respuesta X-Action-Redirect como /login?a=11111.
El escáner prueba la ruta raíz (/) de forma predeterminada. Usa --path o --path-file para probar rutas personalizadas. Si no es vulnerable, sigue las redirecciones del mismo host (p. ej., a ) y prueba el destino de la redirección. No se siguen las redirecciones entre orígenes distintos.
//en/El indicador --safe-check utiliza un método de detección alternativo que se basa en indicadores de canal lateral (código de estado 500 con un digest de error específico) sin ejecutar código en el objetivo. Usa este modo cuando no se desee la ejecución de RCE.
El indicador --waf-bypass antepone datos basura aleatorios al cuerpo de la solicitud multipart. Esto puede ayudar a evadir la inspección de contenido del WAF que solo analiza la primera parte de los cuerpos de las solicitudes. El tamaño predeterminado es de 128 KB, configurable mediante --waf-bypass-size. Cuando la evasión de WAF está habilitada, el tiempo de espera se incrementa automáticamente a 20 segundos (a menos que se establezca explícitamente).
El indicador --vercel-waf-bypass utiliza una variante de payload alternativa diseñada específicamente para evadir las protecciones del WAF de Vercel. Utiliza una estructura multipart diferente con un campo de formulario adicional.
El indicador --windows cambia el payload de shell Unix (echo $((41*271))) a PowerShell (powershell -c "41*271") para objetivos que se ejecutan en Windows.
pip install -r requirements.txt
Escanear un solo host:
python3 scanner.py -u https://example.com
Escanear una lista de hosts:
python3 scanner.py -l hosts.txt
Escanear con varios hilos y guardar los resultados:
python3 scanner.py -l hosts.txt -t 20 -o results.json
Escanear con encabezados personalizados:
python3 scanner.py -u https://example.com -H "Authorization: Bearer token" -H "Cookie: session=abc"
Usar detección segura de canal lateral:
python3 scanner.py -u https://example.com --safe-check
Escanear objetivos Windows:
python3 scanner.py -u https://example.com --windows
Escanear con evasión de WAF:
python3 scanner.py -u https://example.com --waf-bypass
Escanear rutas personalizadas:
python3 scanner.py -u https://example.com --path /_next
python3 scanner.py -u https://example.com --path /_next --path /api
python3 scanner.py -u https://example.com --path-file paths.txt
-u, --url Single URL to check
-l, --list File containing hosts (one per line)
-t, --threads Number of concurrent threads (default: 10)
--timeout Request timeout in seconds (default: 10)
-o, --output Output file for results (JSON)
--all-results Save all results, not just vulnerable hosts
-k, --insecure Disable SSL certificate verification
-H, --header Custom header (can be used multiple times)
-v, --verbose Show response details for vulnerable hosts
-q, --quiet Only output vulnerable hosts
--no-color Disable colored output
--safe-check Use safe side-channel detection instead of RCE PoC
--windows Use Windows PowerShell payload instead of Unix shell
--waf-bypass Add junk data to bypass WAF content inspection
--waf-bypass-size Size of junk data in KB (default: 128)
--path Custom path to test (can be used multiple times)
--path-file File containing paths to test (one per line)
El PoC de RCE fue divulgado originalmente por @maple3142 -- estamos increíblemente agradecidos por su trabajo al publicar un PoC funcional.
Esta herramienta se construyó originalmente como una forma segura de detectar el RCE. Esta funcionalidad sigue disponible mediante --safe-check, el modo de "detección segura".
Los resultados se imprimen en la terminal. Cuando se usa -o, los hosts vulnerables se guardan en un archivo JSON que contiene la solicitud y la respuesta HTTP completas para su verificación.