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
mcpjam-to-root — De la RCE de MCPJam Inspector à root — CVE-2026-23744, divulgation de jeton JupyterLab, exécution du noyau et élévation de privilèges OPSMCP | Kitploit
Outils/GitHubGitHub/itsc1sco/mcpjam-to-root
Escalade de PrivilègesAnalyse des VulnérabilitésExploitationExploitation d'Applications WebPost-ExploitationTests d'IntrusionApprentissage et ÉducationSécurité des API
GitHubitsc1sco/mcpjam-to-root

mcpjam-to-root

De la RCE de MCPJam Inspector à root — CVE-2026-23744, divulgation de jeton JupyterLab, exécution du noyau et élévation de privilèges OPSMCP

Voir le dépôt
il y a 1 jourPas 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

⚠️ Avertissement

Ce dépôt est destiné uniquement à la recherche en sécurité autorisée, aux tests d'intrusion et à des fins éducatives. N'utilisez pas les techniques décrites ici contre des systèmes sans autorisation explicite.


⚡ MCPJam → Root

CVE-2026-23744 MCPJam Inspector JupyterLab Linux Privilege Escalation

De la RCE de MCPJam Inspector au root — CVE-2026-23744, divulgation de jeton JupyterLab, exécution du kernel et élévation de privilèges OPSMCP.

---

📖 Vue d'ensemble

Ce dépôt documente une chaîne d'attaque Linux complète, d'une instance MCPJam Inspector exposée à un accès niveau root.

La chaîne enchaîne des faiblesses à travers l'outillage des développeurs, les services locaux, la gestion des identifiants et l'autorisation applicative :

root@kitploit:~
MCPJam Inspector
       │  CVE-2026-23744
       ▼
     RCE
       │
       ▼
JupyterLab Token
       │
       ▼
Jupyter Kernel
       │
       ▼
     User
       │
       ▼
  OPSMCP API
       │
       ▼
Hidden Admin Tool
       │
       ▼
Root Credential
       │
       ▼
     root

[!WARNING] Ce dépôt est destiné uniquement à la recherche en sécurité autorisée, aux tests d'intrusion et à des fins éducatives. Les adresses cibles, identifiants, jetons et autres valeurs spécifiques à l'environnement tout au long de ce document sont expurgés ou remplacés par des espaces réservés de laboratoire.


📑 Table des matières

  • 🎯 Chaîne d'attaque
  • 🔎 Énumération
  • 💥 CVE-2026-23744 — RCE MCPJam Inspector
  • 🕵️ Énumération interne
  • 🔐 Divulgation du jeton JupyterLab
  • 🧠 Exécution du kernel JupyterLab
  • 📂 Code source d'OPSMCP
  • 🚨 Fonction administrative cachée
  • 🔑 Divulgation de l'identifiant root
  • 👑 Root
  • 🗺️ Chaîne d'attaque complète
  • 🧩 Résumé des vulnérabilités
  • 🛡️ Remédiation
  • 🔍 Détection
  • 💡 Points clés
  • 📚 Références

🎯 Chaîne d'attaque


🔎 Énumération

La reconnaissance initiale se concentre sur l'identification des services exposés à l'extérieur.

root@kitploit:~
nmap -sC -sV -oN nmap_initial.txt TARGET

Un scan TCP complet peut ensuite être effectué :

root@kitploit:~
nmap -p- --min-rate 5000 -oN nmap_full.txt TARGET

Services externes pertinents :

PortServiceRôle
22SSHAdministration à distance
6274MCPJam InspectorSurface d'attaque initiale

Services liés uniquement à localhost :

PortServicePrivilège
8888JupyterLabUtilisateur
5000OPSMCProot

L'instance MCPJam Inspector accessible depuis l'extérieur sur le port 6274 devient le point d'entrée initial.


💥 CVE-2026-23744 — RCE MCPJam Inspector

L'instance MCPJam Inspector exposée est affectée par CVE-2026-23744.

MCPJam Inspector est principalement conçu comme une interface de développement et de test pour les serveurs MCP. La vulnérabilité devient particulièrement dangereuse lorsque cette interface est exposée à un réseau non fiable — un flux de configuration vulnérable permet à des données contrôlées par l'attaquant d'atteindre un chemin d'exécution de commandes.

root@kitploit:~
Remote Request
      │
      ▼
MCP Server Configuration
      │
      ▼
Command Execution
      │
      ▼
Initial Shell

La vulnérabilité affecte les versions de MCPJam Inspector jusqu'à la 1.4.2 incluse. Pour des tests autorisés, une preuve de concept publique peut être utilisée pour valider la vulnérabilité contre l'environnement cible.

Après une exploitation réussie, confirmez le contexte d'exécution :

root@kitploit:~
id
whoami
hostname

🕵️ Énumération interne

Une fois le premier point d'appui obtenu, les services locaux deviennent visibles.

root@kitploit:~
ss -tlnp
ps aux | grep -E 'jupyter|python|node'
root@kitploit:~
                    Network
                       │
                       ▼
              MCPJam Inspector
                   :6274
                       │
                       ▼
                 Initial RCE
                       │
             ┌─────────┴─────────┐
             ▼                   ▼
        JupyterLab             OPSMCP
        :8888/local            :5000/local
             │                   │
             ▼                   ▼
            User                root

La différence de privilèges entre les deux applications internes est particulièrement intéressante.


🔐 Divulgation du jeton JupyterLab

Le processus JupyterLab a été démarré avec son jeton d'authentification directement sur la ligne de commande :

root@kitploit:~
--ServerApp.token=<JUPYTER_TOKEN>

La ligne de commande peut être inspectée via :

root@kitploit:~
ps aux | grep jupyter
# or
cat /proc/<PID>/cmdline

Ceci illustre un problème courant de gestion des secrets :

root@kitploit:~
Secret → Command-line argument → Process metadata → Local credential disclosure

Le jeton récupéré fournit un accès à l'API Jupyter locale.


🧠 Exécution du kernel JupyterLab

Jupyter expose une API REST pour gérer les kernels. Après s'être authentifié avec le jeton récupéré, un kernel peut être créé via :

root@kitploit:~
POST /api/kernels

La réponse contient un UUID de kernel. Les kernels Jupyter communiquent via des WebSockets :

root@kitploit:~
/api/kernels/<KERNEL_ID>/channels

Le protocole de messagerie Jupyter utilise un message execute_request pour exécuter du code Python :

root@kitploit:~
{
  "header": { "msg_type": "execute_request" },
  "content": { "code": "<AUTHORIZED_LAB_CODE>" }
}

Cela établit une exécution Python sous l'identité du service Jupyter — dans cet environnement, le kernel s'exécute en tant qu'utilisateur.

root@kitploit:~
MCPJam RCE → JupyterLab → User

📂 Code source d'OPSMCP

Avec un shell utilisateur disponible, l'étape suivante consiste à examiner les applications installées localement. L'application OPSMCP se trouve sous :

root@kitploit:~
/opt/opsmcp/

L'examen du code source révèle un identifiant API intégré :

root@kitploit:~
VALID_API_KEY = "<REDACTED_OPSMCP_API_KEY>"

L'application gère également deux collections d'outils :

Outils visibles

  • ops.system_status
  • ops.list_services
  • ops.check_disk
  • ops.view_logs

Outils cachés

  • ops._admin_dump
  • ops._debug_mode

Les fonctions administratives sont particulièrement intéressantes car elles ne sont pas renvoyées par l'énumération normale des outils.

Non documenté ne signifie pas inaccessible.

Le backend enregistre toujours les outils cachés et accepte leurs noms via le mécanisme générique d'exécution d'outils.


🚨 Fonction administrative cachée

L'application authentifie les requêtes à l'aide d'une clé API :

root@kitploit:~
X-API-Key: <OPSMCP_API_KEY>

Une fois authentifié, le point de terminaison d'exécution d'outils vérifie uniquement si la fonction demandée existe — pas si l'appelant est autorisé à l'exécuter.

Ce qui se passe :

root@kitploit:~
API Key → Authenticated → Tool exists? → Execute

Ce qui devrait se passer :

root@kitploit:~
API Key → Authenticated → Permission check → Allowed → Execute
                                            └ Denied  → 403

La fonction administrative cachée peut accéder à des ressources sensibles appartenant à root.


🔑 Divulgation de l'identifiant root

L'outil administratif accepte une cible décrivant les informations demandées. Une ressource prise en charge est la clé SSH de root :

root@kitploit:~
{
  "name": "ops._admin_dump",
  "arguments": {
    "target": "ssh_keys",
    "confirm": true
  }
}

L'application lit ensuite la clé privée SSH appartenant à root, ce qui est possible car OPSMCP s'exécute en tant que root et peut lire /root/*. L'application devient donc une primitive de divulgation d'identifiants.


👑 Root

Après avoir récupéré l'identifiant SSH du laboratoire autorisé, stockez-le avec des permissions restrictives :

root@kitploit:~
chmod 600 <ROOT_KEY>

Vérifiez le contexte d'authentification résultant :

root@kitploit:~
whoami
id

Niveau de privilège final : root 🎉


🗺️ Chaîne d'attaque complète

root@kitploit:~
┌──────────────────────────────┐
│       MCPJam Inspector       │
│          TCP/6274            │
└──────────────┬───────────────┘
               │ CVE-2026-23744
               ▼
┌──────────────────────────────┐
│          Initial RCE         │
└──────────────┬───────────────┘
               ▼
┌──────────────────────────────┐
│          JupyterLab          │
│        127.0.0.1:8888        │
└──────────────┬───────────────┘
               │ Token disclosure
               ▼
┌──────────────────────────────┐
│       Jupyter Kernel         │
│        WebSocket RCE         │
└──────────────┬───────────────┘
               ▼
             User
               │ Source review
               ▼
┌──────────────────────────────┐
│           OPSMCP             │
│        127.0.0.1:5000        │
│             root             │
└──────────────┬───────────────┘
               │ API key + hidden tool
               ▼
┌──────────────────────────────┐
│    Root Credential Leak      │
└──────────────┬───────────────┘
               ▼
              root

🧩 Résumé des vulnérabilités


🛡️ Remédiation

MCPJam Inspector
  • Mettez à jour vers une version corrigée.
  • Conservez les interfaces Inspector liées à localhost autant que possible.
  • Exigez une authentification pour les déploiements à distance.
  • Validez les entrées de configuration MCP.
  • Exécutez le service sous un compte dédié à faibles privilèges.
JupyterLab
  • Protégez à la fois l'interface web et l'API.
  • Restreignez l'accès WebSocket des kernels.
  • Évitez de transmettre des secrets d'authentification via les arguments de ligne de commande.
  • Exécutez Jupyter avec le moindre privilège.
  • Renouvelez les jetons exposés.
OPSMCP
  • Supprimez les identifiants API codés en dur.
  • Utilisez une solution de gestion des secrets.
  • Implémentez une autorisation par outil.
  • Supprimez les fonctionnalités administratives cachées de la production.
  • Ne renvoyez jamais de clés privées via une API.
  • Exécutez le service sous un compte non privilégié.
SSH
  • Renouvelez les clés compromises.
  • Utilisez des permissions restrictives sur les clés privées.
  • Minimisez l'accès SSH direct à root.
  • Surveillez les événements d'authentification root.

🔍 Détection

Système

💡 Points clés

01 — L'outillage des développeurs est une surface d'attaque Les outils conçus pour le développement local peuvent devenir des vulnérabilités critiques lorsqu'ils sont exposés à des réseaux non fiables.

02 — Les jetons Jupyter sont des identifiants puissants L'accès à un jeton Jupyter peut fournir bien plus qu'un accès à l'interface utilisateur — les API de kernels peuvent fournir une exécution de code arbitraire.

03 — Caché ne signifie pas sécurisé Un point de terminaison non documenté n'est pas un mécanisme d'autorisation.

04 — Le code source est précieux en post-exploitation Le code source d'une application peut révéler immédiatement des mécanismes d'authentification, des secrets, des fonctionnalités cachées et des limites de privilèges.

05 — Le moindre privilège peut casser les chaînes d'attaque Si OPSMCP s'était exécuté sous un compte de service non privilégié, l'impact final aurait été considérablement réduit.


📚 Références

  • CVE-2026-23744 — Exécution de code à distance de MCPJam Inspector
  • Documentation JupyterLab — Architecture des kernels et de l'API
  • OWASP — Moindre privilège
  • OWASP — Gestion des secrets

⚠️ Avertissement

Ce dépôt est destiné uniquement à la recherche en sécurité autorisée, aux tests d'intrusion et à des fins éducatives. N'utilisez pas les techniques décrites ici contre des systèmes sans autorisation explicite.


⚡ MCPJam → RCE → Jupyter → User → OPSMCP → root ⚡

Télécharger l’outil
ÉtapePhase
1MCPJam Inspector exposé sur le réseau
2CVE-2026-23744 exploitée
3RCE initiale obtenue
4Jeton JupyterLab divulgué
5Exécution du kernel Jupyter
6Shell au niveau utilisateur
7Revue du code source d'OPSMCP
8Identifiant API codé en dur découvert
9Fonctionnalité administrative cachée abusée
10Identifiant root divulgué
11root
#FaiblesseImpact
1MCPJam Inspector exposéSurface d'attaque à distance
2CVE-2026-23744RCE initiale
3Jeton dans les arguments de processusDivulgation d'identifiants
4Accès au kernel JupyterExécution de code au niveau utilisateur
5Code source de l'application lisibleDécouverte d'identifiants
6Clé API OPSMCP codée en durContournement de l'authentification API
7Fonctionnalité admin cachéeOpération privilégiée
8OPSMCP s'exécutant en tant que rootCompromission totale du système
À surveiller
MCPJamChangements de configuration inattendus · processus enfants suspects · clients distants inhabituels
JupyterLabUtilisation inattendue du jeton · création inattendue de kernels · connexions WebSocket anormales · processus shell lancés par les kernels
OPSMCPInvocation d'outils non documentés · requêtes liées aux identifiants · clients API inattendus · opérations administratives
SSHConnexions root inattendues · nouvelles clés SSH · sources d'authentification inhabituelles