
Bu laboratuvar ortamını sıfırdan kendim oluşturdum. Next.js uygulaması içerisinde giriş, ana sayfa ve admin sayfalarını hazırladım. Middleware ile yetkilendirme mekanizmasını kurduktan sonra Burp Suite kullanarak CVE-2025-29927 zafiyetini kontrollü ortamda gösterdim.
In Next.js-Anwendungen führt Middleware Kontrollen wie Authentifizierung und Autorisierung durch, bevor Anfragen die Anwendung erreichen.
Bei der Schwachstelle CVE-2025-29927 kann Middleware die Anfrage in einigen Fällen aufgrund des speziell hinzugefügten HTTP-Headers x-middleware-subrequest als verifiziert akzeptieren. Dies kann dazu führen, dass nicht autorisierte Benutzer auf geschützte Seiten zugreifen.
In diesem Projekt habe ich die Schwachstelle CVE-2025-29927, die Next.js-Anwendungen betrifft, in einer von mir mit Docker erstellten Laborumgebung demonstriert.
Ich habe die Laborumgebung selbst von Grund auf erstellt. Ich habe mit Next.js die Login-, Index- und Admin-Seiten vorbereitet. Anschließend habe ich mit Middleware eine Zugriffskontrolle für die Admin-Seite hinzugefügt.
Ich habe mit Burp Suite HTTP-Anfragen abgefangen, den Header x-middleware-subrequest hinzugefügt und den Zugriff auf die Admin-Seite ohne Autorisierung demonstriert, indem ich die Middleware-Prüfung umgangen habe.
.
├── pages
│ ├── admin.js
│ ├── index.js
│ └── login.js
├── middleware.js
├── Dockerfile
├── package.json
└── README.md
Bevor Sie das Projekt ausführen, müssen die folgenden Programme installiert sein.
Laden Sie das Repository auf Ihren Computer herunter.
git clone https://github.com/berraesen/nextjs-middleware-auth-bypass-lab.git
Wechseln Sie in den Ordner.
cd nextjs-middleware-auth-bypass-lab
Erstellen Sie das Docker-Image.
docker build -t nextjs-auth-bypass .
Starten Sie den Container.
docker run -d -p 3000:3000 --name nextjs-lab nextjs-auth-bypass
Öffnen Sie im Browser die folgende Adresse.
http://localhost:3000
Das Projekt enthält die folgenden Seiten.
Der Zugriff auf die Admin-Seite wird über Middleware kontrolliert.
Versuchen Sie zunächst, über den Browser auf die Seite /admin zuzugreifen.
Da Sie nicht autorisiert sind, werden Sie zur Login-Seite weitergeleitet.
Fangen Sie die Anfrage mit Burp Suite ab.
Fügen Sie der Anfrage den folgenden HTTP-Header hinzu.
x-middleware-subrequest: middleware
Senden Sie die Anfrage erneut.
Wenn die Middleware-Prüfung umgangen wird, ist ersichtlich, dass auf die Admin-Seite zugegriffen werden kann.
Nach Abschluss der Installation:
İstemci
│
▼
HTTP Request
│
▼
Next.js Middleware
│
├──────────────► Normal İstek
│ │
│ ▼
│ Yetki Kontrolü
│ │
│ ▼
│ Login Sayfasına Yönlendirme
│
▼
x-middleware-subrequest
Header Eklendi
│
▼
Middleware Kontrolü Atlandı
│
▼
Admin Sayfasına Erişim
Um diese Schwachstelle zu beheben, wird empfohlen, betroffene Next.js-Versionen durch aktuelle Versionen zu ersetzen.
Außerdem sollte die Autorisierung nicht nur über Middleware erfolgen; auf der Serverseite sollten ebenfalls zusätzliche Zugriffskontrollen implementiert werden.