
Aplicación Next.js intencionalmente vulnerable que demuestra el bypass de autenticación CVE-2025-29927 mediante evasión de WAF en middleware. Diseñada para investigación de seguridad, laboratorios de pruebas de penetración y demostraciones de divulgación responsable con backend MySQL y autenticación JWT.
Esta es una aplicación vulnerable de Next.js que demuestra CVE-2025-29927, una falla de seguridad identificada en aplicaciones web que utilizan Next.js con manejo inadecuado de entradas o fallas en el control de acceso.
El proyecto utiliza un backend MySQL y autenticación JWT, y está diseñado únicamente para fines educativos y de prueba — como laboratorios de pruebas de penetración, demostraciones de divulgación responsable e investigación de seguridad.
Las contraseñas para las cuentas de prueba en users.csv son "123456" y la clave secreta para la autenticación JWT "JWT_SECRET" se ha agregado al archivo ".env.local" y se ha compartido en este repositorio público a propósito, y no es un token JWT utilizado en producción. Esto simplifica el despliegue y las pruebas.
También puedes reemplazar la clave secreta para el JWT por una que hayas generado, pero el archivo .env debe existir para que la autenticación JWT funcione.
⚠️ Aviso: Este proyecto es intencionalmente vulnerable. NO lo despliegues en entornos de producción. Úsalo solo en configuraciones aisladas o controladas con fines educativos.
Mira la guía completa de configuración y demostración en YouTube aquí sobre cómo configurar este proyecto:
▶️ [https://www.youtube.com/watch?v=Akb3R34QnM8&t=482s]
Mira la demostración completa en YouTube aquí sobre cómo se explota la vulnerabilidad: ▶️ [https://www.youtube.com/watch?v=3OPWodc2lx4]
git clone https://github.com/enochgitgamefied/NextJS-CVE-2025-29927.git
cd NextJS-CVE-2025-29927
npm install
Crea una base de datos MySQL y actualiza los detalles de conexión en:
/database/index.js
La configuración más simple sería usar los archivos CSV compartidos en este repositorio para crear las tablas. Las cuentas de usuario utilizadas usan todas la misma contraseña. La contraseña es "123456". Mira el video de YouTube para obtener todos los detalles e instrucciones paso a paso.
También puedes usar algo como el ejemplo a continuación. Ejemplo:
const pool = mysql.createPool({
host: 'localhost',
user: 'root',
password: 'tucontraseña',
database: 'cve_demo'
});
Luego importa el esquema desde database/schema.sql o ejecuta tu propio script de configuración.
npm run dev
Visita http://localhost:3000 para ver la aplicación en tu navegador.
Esta aplicación contiene un middleware de NextJS que actúa como WAF (firewall de aplicaciones web) y una versión vulnerable de Next 13.4.9 que permite a los atacantes explotar vulnerabilidades relacionadas con bypass de autenticación, inclusión de archivos locales o control de acceso inadecuado. El objetivo es ayudar a los investigadores a entender cómo se puede explotar este CVE y cómo mitigarlo.
Este proyecto está licenciado bajo la Licencia MIT.