
Preuve de concept d'exploitation pour CVE-2025-29927, une vulnérabilité de contournement du middleware Next.js. Comprend l'empreinte de version, la manipulation configurable des en-têtes et des heuristiques de détection de succès pour tester le contournement d'authentification.
Ce dépôt contient une preuve de concept (PoC) pour CVE-2025-29927, une vulnérabilité dans le middleware Next.js qui permet de contourner les contrôles d'authentification et d'autorisation via la manipulation d'en-têtes.
Versions affectées : >= 11.1.4, <= 1 3.5.6, > 14.0.0, < 14.2.25, > 15.0.0, < 15.2.3
ID CVE : CVE-2025-29927
Sévérité : Élevée (CVSS : 9.1)
La vulnérabilité réside dans l'exécution de la chaîne de middleware dans Next.js, où un attaquant peut manipuler l'en-tête x-middleware-subrequest pour contourner les contrôles de sécurité du middleware. En créant une valeur d'en-tête spécifique, le middleware peut être trompé en traitant la requête comme si elle avait déjà été traitée, contournant ainsi les contrôles d'authentification.
Cet outil a été testé sur : Next.js 15.0.0 à 15.2.2, d'autres versions peuvent nécessiter des modifications.
Installez les dépendances avec :
pip install -r requirements.txt
python poc-cve-2025-29927.py http://exemple.com/route-protegee
usage: poc-cve-2025-29927.py [-h] [-r REPEAT] [-o OUTPUT] [--no-browser] [-f] url
PoC pour CVE-2025-29927 - Contournement du middleware Next.js
arguments positionnels :
url URL cible à tester (ex. http://localhost:3000/admin/dashboard)
options :
-h, --help Affiche ce message d'aide et quitte
-r REPEAT, --repeat REPEAT
Nombre de répétitions du middleware dans l'en-tête (par défaut : 5)
-o OUTPUT, --output OUTPUT
Nom du fichier de sortie (par défaut : response.html)
--no-browser N'ouvre pas le résultat dans le navigateur
-f, --force Ignore la vérification de version et force la tentative d'exploitation
python poc-cve-2025-29927.py http://localhost:3000/admin/dashboard
python poc-cve-2025-29927.py http://site-cible.com/admin/dashboard -f
python poc-cve-2025-29927.py http://application-vulnerable.com/page-protegee -r 10 -o resultat.html --no-browser
Le script commence par tenter de déterminer l'empreinte numérique de la version Next.js de l'application cible en utilisant différentes méthodes de détection.
Si une version vulnérable est détectée (15.0.0-15.2.2), il poursuit avec l'exploitation.
Une requête est envoyée avec un en-tête x-middleware-subrequest spécialement conçu.
La réponse est sauvegardée dans un fichier et analysée pour trouver des indicateurs de succès.
En cas de succès, le contenu protégé sera accessible sans authentification.
Si vous exécutez une version vulnérable de Next.js, mettez à niveau vers la version 15.2.3 ou ultérieure pour corriger cette vulnérabilité.
Cet outil est fourni uniquement à des fins de recherche pédagogique et de sécurité. Utilisez-le uniquement sur des applications que vous possédez ou pour lesquelles vous avez une autorisation explicite de test. Les tests non autorisés peuvent enfreindre les lois applicables.
Ce projet est sous licence MIT - voir le fichier LICENSE pour plus de détails.
Heimd411
Chercheur en sécurité
Profil GitHub
Ce dépôt