
Absichtlich anfällige Next.js-Anwendung, die CVE-2025-29927 (Middleware-basierte Authentifizierungsumgehung) zum Lernen und für Bug-Bounty-Übungen demonstriert.
Dieses Repository enthält eine bewusst verwundbare Webanwendung, die mit Next.js erstellt wurde. Sie soll die Sicherheitslücke CVE-2025-29927 demonstrieren und untersuchen. Ziel dieses Projekts ist es, Sicherheitsforschern, Studenten und Bug-Bounty-Jägern zu helfen, zu verstehen, wie die Schwachstelle in einer realitätsnahen Umgebung funktioniert.
[!CAUTION ] Diese Anwendung ist absichtlich unsicher und sollte niemals in der Produktion eingesetzt werden.
CVE-2025-29927 betrifft die fehlerhafte Verarbeitung der Request-Logik in Anwendungen, die mit Next.js erstellt wurden, insbesondere in der Middleware. Dies kann Angreifern Folgendes ermöglichen:
git clone https://github.com/metasploit403/cve-2025-29927-lab
cd cve-2025-29927-lab
npm install
npm run dev
Einige Routen sind absichtlich verwundbar und können Folgendes umfassen:
- /api/admin/secret
- /api/internal/health
- /api/private/data
Diese Endpunkte simulieren eingeschränkte Ressourcen, die ohne entsprechende Autorisierung nicht zugänglich sein sollten.
1.Angenommen, Sie haben das Repository erfolgreich geklont
2.Starten Sie npm run dev
3.Dadurch wird Ihr Projekt lokal ausgeführt
4.Öffnen Sie einen Browser Ihrer Wahl, z.B. Chrome, und geben Sie http://localhost:3000 ein
5.Versuchen Sie, auf einen der 3 API-Endpunkte zuzugreifen
- /api/admin/secret
- /api/internal/health
- /api/private/data
6.Versuchen Sie es nun mit einem beliebigen Endpunkt
- http://localhost:3000/api/admin/secret
- http://localhost:3000/api/internal/health
- http://localhost:3000/api/private/data
7.Beobachten Sie, dass Ihre Anfrage blockiert wird. Dies liegt daran, dass Sie kein cookie in Ihrer Anfrage enthalten haben. Dies bedeutet, dass der Endpunkt durch die Middleware geschützt ist. Die Middleware prüft, ob Ihre Anfrage ein Cookie enthält, und wenn nicht, wird sie automatisch blockiert
8.Fügen wir nun der Anfrage ein cookie hinzu. Öffnen Sie dazu die Chrome-Entwicklertools (ich verwende hier den Chrome-Browser, Sie können jeden beliebigen Browser verwenden)
9.Drücken Sie F12, und die Chrome-Entwicklertools werden geöffnet
10.Wechseln Sie zum Tab Konsole
11.Geben Sie im Konsolen-Tab document.cookie="lab-auth=authenticated" ein
12.Aktualisieren Sie nun die Seite und beobachten Sie, dass Sie eingeloggt sind
Beachten Sie, dass die Middleware prüft, ob die Anfrage ein Cookie enthält. Wenn die Anfrage ein Cookie hat, werden Sie erfolgreich angemeldet, andernfalls werden Sie blockiert. Die Frage ist: WIE können wir die Middleware-Prüfung umgehen und uns ohne Cookie anmelden? Das ermöglicht uns CVE-2025-29927.
Umgehen wir nun die Middleware-Authentifizierungsprüfung mit CVE-2025-29927. Der Trick besteht lediglich darin, diesen spezifischen Header hinzuzufügen: x-middleware-subrequest: middleware. Dieser Header soll nur intern vom Framework verwendet werden. Wenn wir ihn hinzufügen, wird die middleware nicht mehr prüfen, ob unsere Anfrage ein Cookie hat, und jeder sensible Endpunkt in Ihrer Anwendung ist schutzlos.
Um dies auszunutzen, verwenden wir cURL.
curl ist ein Befehlszeilentool, das verwendet wird, um Anfragen an einen Server zu senden und eine Antwort zu erhalten.
1.Erwarten Sie 401 ohne Cookie
curl.exe -i http://localhost:3000/api/admin/secret
Beobachten Sie, dass der Server mit dem Statuscode 307 Temporary Redirect antwortet. Da kein Cookie vorhanden ist, werden wir zur Startseite/root page weitergeleitet. Das bedeutet, wir können uns nicht anmelden, es sei denn, wir stellen ein Cookie bereit.
2.curl.exe -i http://localhost:3000/api/admin/secret -H "x-middleware-subrequest: middleware:middleware:middleware:middleware:middleware"
Jetzt haben wir "x-middleware-subrequest: middleware:middleware:middleware:middleware:middleware" hinzugefügt.
Beobachten Sie, dass wir nun ohne Cookie Zugang zur Anmeldung haben. Dies ist ein vollständiger Auth-Bypass.
Um Probleme wie dieses in echten Anwendungen zu beheben:
Dieses Projekt dient nur zu Bildungszwecken. Verwenden Sie diese Techniken nicht auf Systemen, die Ihnen nicht gehören oder für die Sie keine ausdrückliche Erlaubnis zum Testen haben.
Fühlen Sie sich frei:
Wenn Sie dies nützlich finden, erwägen Sie, das Repository zu markieren.
- Next.js
- Bug Bounty
- Web Security
- CVE-2025-29927
- Middleware Authentication
- Bypass