Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
React2Shell — Mi investigación sobre CVE-2025-55182 | Kitploit
Herramientas/GitHubGitHub/i3r1h0n/react2shell
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebPruebas de PenetraciónAprendizaje y EducaciónDesarrollo de Payloads
GitHubi3r1h0n/react2shell

React2Shell

Mi investigación sobre CVE-2025-55182

Ver Repositorio
hace 8 mesesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

React2Shell (CVE-2025-55182)

Resumen

Este repositorio contiene mi investigación sobre CVE-2025-55182, también conocida como la vulnerabilidad React2Shell. El repositorio consta de dos partes principales: stand y exploit.

Referencias

Alguna información sobre esta falla de seguridad:

  • NIST
  • Artículo de HackerOne
  • Resumen de Vercel
  • Artículo de WIZ
  • Página web del autor
  • PoC original

Causa raíz

La vulnerabilidad es básicamente una falta de validación de entrada del usuario. Pero no es tan simple =)

La parte del Cliente React y la parte del Servidor React utilizan el Protocolo React Flight para intercambiar datos. Aquí hay una buena charla al respecto, para que te familiarices rápidamente.

Ejemplo de fragmentos de mensajes del Protocolo React Flight:

root@kitploit:~
{
    "0": (None, '["$1"]'),
    "1": (None, '{"object":"fruit","name":"$2:fruitName"}'),
    "2": (None, '{"fruitName":"cherry"}'),
}

Los fragmentos de RFP pueden referirse entre sí usando el operador $. Cuando los fragmentos se deserializan posteriormente en el servidor, estos enlaces se resuelven. Una cosa clave aquí es que podemos acceder al prototipo del objeto desde él.

Al manipular el prototipo, podemos forzar a V8 a esperar nuestro .then(). El payload resultante puede verse así:

root@kitploit:~
{
    "then": "$1:__proto__:then",
    "status": "resolved_model",
    "reason": -1,
    "value": '{"then": "$B0"}',
    "_response": {
        "_prefix": f"return foo; ",
        "_formData": {
            "get": "$1:constructor:constructor",
        },
    },
}

No profundizaré en los detalles de cómo funciona realmente esta cadena de gadgets; si quieres saber más al respecto, lee un gran análisis aquí por Moritz Sanft.

También puedes ver la comparación de versiones en GitHub, antes y después del parche, si quieres profundizar en esta falla.

Stand

He creado una aplicación simple de react/next.js que usa (ver el archivo stand/package.json):

root@kitploit:~
"dependencies": {
  "next": "16.0.6",
  "react": "19.2.0",
  "react-dom": "19.2.0"
},

Simplemente una página simple con contenido de texto, creada con create-next-app:

Para iniciar, ejecuta esto en el directorio stand:

root@kitploit:~
docker compose up --build -d

Luego navega a http://localhost:3000 en tu navegador.

Exploit

La explotación es sencilla. Solo necesitamos enviar fragmentos RFP especialmente construidos con nuestro payload al servidor mediante una solicitud POST. Consulta exploit/src/main.py. También incluye una verificación simple para saber si el servidor es vulnerable o no; intenta ejecutar un comando whoami; si se excede el tiempo de espera, lo más probable es que el servidor use una versión parcheada.

Puedes ver el payload RFP en exploit/resource/chunk.json.

Antes de ejecutar el exploit, no olvides configurar un listener de netcat y actualizar exploit/resource/config.toml con tu host y puerto, para obtener una reverse shell.

¡Feliz pwning!

Créditos

Gran respeto para Lachlan Davidson, quien descubrió la vulnerabilidad, maple, quien encontró un buen gadget, y también para Moritz Sanft, quien compartió su PoC y escribió un gran análisis.

producido por I3r1h0n.

Descargar herramienta