
Proof-of-concept-Exploit für CVE-2025-29927, eine Sicherheitslücke zur Umgehung der Next.js-Middleware. Enthält Versions-Fingerprinting, konfigurierbare Header-Manipulation und Heuristiken zur Erfolgserkennung zum Testen der Authentifizierungsumgehung.
Dieses Repository enthält einen Proof of Concept (PoC) für CVE-2025-29927, eine Schwachstelle in der Next.js-Middleware, die das Umgehen von Authentifizierungs- und Autorisierungsprüfungen durch Header-Manipulation ermöglicht.
Betroffene Versionen: >= 11.1.4, <= 1 3.5.6, > 14.0.0, < 14.2.25, > 15.0.0, < 15.2.3
CVE-ID: CVE-2025-29927
Schweregrad: Hoch (CVSS: 9.1)
Die Schwachstelle existiert in der Ausführung der Middleware-Kette in Next.js, bei der ein Angreifer den x-middleware-subrequest-Header manipulieren kann, um die Sicherheitskontrollen der Middleware zu umgehen. Durch das Erstellen eines bestimmten Header-Werts kann die Middleware dazu gebracht werden, die Anfrage so zu behandeln, als ob sie bereits verarbeitet wurde, wodurch Authentifizierungsprüfungen effektiv umgangen werden.
Dieses Tool wurde getestet auf: Next.js 15.0.0 bis 15.2.2, andere Versionen erfordern möglicherweise Anpassungen.
Installieren Sie die Abhängigkeiten mit:
pip install -r requirements.txt
python poc-cve-2025-29927.py http://example.com/protected-route
usage: poc-cve-2025-29927.py [-h] [-r REPEAT] [-o OUTPUT] [--no-browser] [-f] url
PoC for CVE-2025-29927 - Next.js Middleware Bypass
positional arguments:
url Target URL to test (e.g., http://localhost:3000/admin/dashboard)
options:
-h, --help show this help message and exit
-r REPEAT, --repeat REPEAT
Number of middleware repeats in header (default: 5)
-o OUTPUT, --output OUTPUT
Output file name (default: response.html)
--no-browser Do not open result in browser
-f, --force Skip version check and force exploit attempt
python poc-cve-2025-29927.py http://localhost:3000/admin/dashboard
python poc-cve-2025-29927.py http://target-site.com/admin/dashboard -f
python poc-cve-2025-29927.py http://vulnerable-app.com/protected-page -r 10 -o result.html --no-browser
Das Skript versucht zunächst, die Next.js-Version der Zielanwendung mithilfe verschiedener Erkennungsmethoden zu identifizieren.
Wenn eine verwundbare Version (15.0.0-15.2.2) erkannt wird, fährt es mit dem Exploit fort.
Eine Anfrage wird mit einem speziell konstruierten x-middleware-subrequest-Header gesendet.
Die Antwort wird in einer Datei gespeichert und auf Erfolgsindikatoren analysiert.
Bei Erfolg wird der geschützte Inhalt ohne Authentifizierung zugänglich.
Wenn Sie eine verwundbare Version von Next.js verwenden, aktualisieren Sie auf Version 15.2.3 oder höher, um diese Schwachstelle zu beheben.
Dieses Tool wird nur zu Bildungs- und Sicherheitsforschungszwecken bereitgestellt. Verwenden Sie es nur gegen Anwendungen, die Ihnen gehören oder für die Sie ausdrücklich die Erlaubnis zum Testen haben. Unautorisierte Tests können gegen geltende Gesetze verstoßen.
Dieses Projekt ist unter der MIT-Lizenz lizenziert – siehe die Datei LICENSE für Details.
Heimd411
Sicherheitsforscher
GitHub-Profil
Dieses Repository