
Applicazione Next.js volutamente vulnerabile che dimostra CVE-2025-29927 (bypass dell'autenticazione basato su middleware) per l'apprendimento e la pratica di bug bounty.
Questo repository contiene un'applicazione web deliberatamente vulnerabile realizzata con Next.js. È progettata per dimostrare e studiare il problema di sicurezza noto come CVE-2025-29927. L'obiettivo di questo progetto è aiutare ricercatori di sicurezza, studenti e cacciatori di bug bounty a comprendere come funziona la vulnerabilità in un ambiente simile a quello reale.
[!CAUTION ] Questa applicazione è intenzionalmente insicura e non dovrebbe mai essere distribuita in produzione.
CVE-2025-29927 è correlato alla gestione impropria della logica delle richieste nelle applicazioni realizzate con Next.js, in particolare nel middleware. Ciò può consentire agli aggressori di:
git clone https://github.com/metasploit403/cve-2025-29927-lab
cd cve-2025-29927-lab
npm install
npm run dev
Alcune route sono intenzionalmente vulnerabili e possono includere
- /api/admin/secret
- /api/internal/health
- /api/private/data
Questi endpoint simulano risorse limitate che non dovrebbero essere accessibili senza una corretta autorizzazione.
npm run dev http://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
Osserva che la tua richiesta viene bloccata, questo perché non hai incluso un cookie nella tua richiesta. Ciò significa che l'endpoint è protetto dal middleware. Il middleware controlla se la tua richiesta ha un cookie e se non lo ha, viene automaticamente bloccata.
Ora aggiungiamo un cookie alla nostra richiesta. Per farlo, apri gli strumenti di sviluppo di Chrome (sto usando Chrome qui, puoi usare qualsiasi browser desideri)
Premi F12 e si apriranno gli strumenti di sviluppo di Chrome
Vai alla scheda console
Nella scheda console digita document.cookie="lab-auth=authenticated"
Ora aggiorna la pagina e osserva che sei loggato
Tieni presente che il middleware controlla se la richiesta contiene un cookie. Se la richiesta ha un cookie, accedi con successo, altrimenti vieni bloccato. La domanda è: COME possiamo bypassare il controllo del middleware e accedere senza fornire un cookie. Questo è ciò che CVE-2025-29927 ci permette di fare
Ora bypassiamo il controllo di autenticazione del middleware con CVE-2025-29927. Il trucco è semplicemente aggiungere questo specifico header:
x-middleware-subrequest: middleware.
Questo header dovrebbe essere usato solo internamente dal framework. Se lo aggiungiamo, il middleware smetterà di controllare se la nostra richiesta ha un cookie e ora qualsiasi endpoint sensibile nella tua applicazione è indifeso.
Per sfruttare questo, usiamo cURL.
curl è uno strumento da riga di comando usato per inviare richieste al server e ricevere risposte
1.Aspettati 401 senza cookie
curl.exe -i http://localhost:3000/api/admin/secret
osserva che il server ha risposto con codice di stato 307 reindirizzamento temporaneo. Poiché non c'è cookie, veniamo reindirizzati alla homepage/alla pagina principale. Ciò significa che non possiamo accedere a meno che non forniamo un cookie.
2.curl.exe -i http://localhost:3000/api/admin/secret -H "x-middleware-subrequest: middleware:middleware:middleware:middleware:middleware"
Ora abbiamo aggiunto "x-middleware-subrequest: middleware:middleware:middleware:middleware:middleware"
Osserva che ora abbiamo accesso senza il cookie. Questo è un bypass completo dell'autenticazione.
Per risolvere problemi come questo in applicazioni reali:
Questo progetto è solo a scopo didattico. Non utilizzare queste tecniche su sistemi che non possiedi o per i quali non hai esplicita autorizzazione al test.
Sentiti libero di:
Se lo trovi utile, considera di mettere una stella al repository.
- Next.js
- Bug Bounty
- Web Security
- CVE-2025-29927
- Middleware Authentication
- Bypass