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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
MongoBleed-exploit — MongoBleed (CVE-2025-14847) Lab & PoC : A complete educational environment to reproduce the critical unauthenticated memory leak in MongoDB. Includes a vulnerable Docker container with multi-database seeding (PII, API keys) and a Python exploit to demonstrate data extraction. Ideal for security research and awareness. 1-day analysis. | Kitploit
ツール/GitHubGitHub/eljoamy/mongobleed-exploit
Memory ForensicsVulnerability AnalysisExploitationCTFPenetration TestingLearning & EducationDatabase SecurityLabs & Practice

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →

概要

MongoBleed (CVE-2025-14847) Lab & PoC : A complete educational environment to reproduce the critical unauthenticated memory leak in MongoDB. Includes a vulnerable Docker container with multi-database seeding (PII, API keys) and a Python exploit to demonstrate data extraction. Ideal for security research and awareness. 1-day analysis.

GitHub
eljoamy/mongobleed-exploit

MongoBleed-exploit

リポジトリを見る
27ヶ月前未レビュー
共有

CVE-2025-14847: MongoBleed ラボ

Python      MongoDB      Docker

目次

  1. はじめに
  2. 脆弱性の詳細
    • 動作の仕組み
  3. 影響
  4. ラボの構成
  5. 前提条件
  6. インストールと使用方法
    • 1. 環境の起動
    • 2. 依存関係のインストール
    • 3. ラボのセットアップ確認(任意)
    • 4. エクスプロイトの実行
  7. エクスプロイトの解説
  8. 対策
  9. ライセンス
  10. 免責事項
  11. 参考情報
  12. 作者

はじめに

このラボは、MongoDB の致命的な脆弱性である MongoBleed(CVE-2025-14847)を再現・分析するために設計されています。この欠陥により、認証されていない攻撃者が、圧縮メッセージの不適切な処理が原因で、サーバーのメモリから機密データを読み取ることが可能になります。

この環境には、漏えいの重大性を実証するため、ダミーの機密データ(PII、API キー、金融記録)が投入された脆弱な MongoDB インスタンスが含まれています。

脆弱性の詳細

CVE ID: CVE-2025-14847
名称: MongoBleed
コンポーネント: Wire Protocol (OP_COMPRESSED)
影響を受けるバージョン: MongoDB 6.0.x < 6.0.27、7.0.x < 7.0.28、8.0.x < 8.0.17(その他) URL: クリックしてください -> NVD CVE-2025-14847

動作の仕組み

この脆弱性は、MongoDB が zlib 圧縮アルゴリズムを使用した OP_COMPRESSED メッセージを処理する方法に起因します。

  1. サイズの不一致: 攻撃者は、ヘッダー内の uncompressed_size フィールドを、実際の展開後データサイズよりも意図的にはるかに大きな値に設定した圧縮メッセージを送信します。
  2. メモリ割り当て: サーバーは、この水増しされた uncompressed_size に基づいてメモリバッファを割り当てます。
  3. 部分書き込み: zlib 展開機は、実際の(小さな)ペイロードをこのバッファの先頭に書き込みます。バッファの残りの部分は初期化されないままとなり、以前の操作からの残存データ(RAM アーティファクト)を含みます。
  4. 漏えい: サーバーがこのバッファを BSON ドキュメントとして解析しようとすると、有効なデータを越えて初期化されていないメモリを読み取ります。パーサーがエラー(発生する可能性が高い)に遭遇した場合、エラーメッセージ内の「不正な」データをクライアントに返す可能性があります。

影響

  • 認証なしのアクセス: この攻撃には有効な資格情報は必要ありません。
  • 情報漏えい: 攻撃者は、現在 MongoDB プロセスメモリ内にあるあらゆるものを抽出できます。例:
    • 認証資格情報(平文のパスワードまたはハッシュ)
    • 他のデータベース/コレクションからのデータ
    • サーバー設定と環境変数
    • アクティブなセッショントークン

ラボの構成

ラボは以下で構成されています:

  • 脆弱なサービス: MongoDB 6.0.10(Docker コンテナ)
  • 認証: 有効(admin / secretpassword)
  • データ投入: 実際の Cloud Infrastructure SaaS 環境をシミュレートする 3 つの異なるデータベースにデータを投入する初期化スクリプト(init-mongo.js):
    • dbmongotesting: コア基盤データ
      • compute_instances: 機密メタデータ(User Data スクリプト、API キー)
      • deployment_secrets: 高価値ターゲット(K8s トークン、CI/CD キー、Slack Webhook)
    • identity_provider: ユーザー ID 管理
      • users: ユーザー資格情報、パスワードハッシュ(Argon2)、MFA バックアップコード(平文で漏えい)
    • system_audit: ログと監視
      • query_logs: 過去のクエリが含まれ、一部には漏えいした資格情報(例: AWS キー)が含まれます
  • エクスプロイト: リバースエンジニアリングされたプロトコル攻撃を実装した Python スクリプト(exploit.py)

前提条件

  • Docker
  • Docker Compose
  • Python 3

インストールと使用方法

1. 環境の起動

脆弱なコンテナを起動します。これにより、データベースが自動的に作成され、データが投入されます。

root@kitploit:~
docker-compose up -d

データベースが初期化され、データが読み込まれるまで約 10〜15 秒待ちます。

注記: 以前にこのラボを実行したことがある場合は、ボリュームをリセットして最新のデータ構造を読み込んでください:

root@kitploit:~
docker-compose down -v
docker-compose up -d

2. 依存関係のインストール

必要な依存関係は、従来の requirements.txt または最新の pyproject.toml のいずれかを使用して pip でインストールできます。

オプション A: requirements.txt を使用(標準)

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

オプション B: pyproject.toml を使用(最新) これにより、プロジェクトとその依存関係が現在の環境にインストールされます。

root@kitploit:~
pip install .

3. ラボのセットアップ確認(任意)

データベースに到達可能であり、データが正しく投入されていることを確認するための検証スクリプトを用意しています。

root@kitploit:~
python verify_lab.py

このスクリプトは、管理者資格情報を使用して、sensitive_db、legacy_crm などのデータベースの存在を確認します。

4. エクスプロイトの実行

Python スクリプトを実行してサーバーを攻撃します。この手順では資格情報は不要であり、この脆弱性が認証なしで利用可能であることを実証します。

root@kitploit:~
python exploit.py --host localhost --port 27017 --min 100 --max 5000

エクスプロイトの解説

このスクリプトは以下の手順を実行します:

  1. 悪意のある BSON ペイロードを構築します。
  2. それを圧縮し、偽の水増しサイズを設定した OP_COMPRESSED ヘッダーでラップします。
  3. ターゲットサーバーに送信します。
  4. エラーレスポンスを待ち受けます。
  5. サーバーの応答(メモリリーク由来)内で見つかった可読テキストを表示します。

期待される出力: さまざまなオフセットでリークが検出されたことを示す出力と、その後ろに検出されたシークレットの要約が表示されるはずです。

root@kitploit:~
[*] MongoBleed Exploit (Custom Implementation)
[*] Target: localhost:27017
[*] Scanning memory offsets 100 to 5000...
[+] Offset 120  | ... dbmongotesting ... compute_instances ...
[+] Offset 145  | ... field name 'AKIAIOSFODNN7EXAMPLE' is not valid ... [!] FOUND AKIA
[+] Offset 210  | ... "token": "eyJhbGciOiJSUzI1NiIsImtpZCI6Ik16UTBOVFZ... [!] FOUND token

[*] Scan completed in 12.45s
[*] Total bytes leaked: 4502
[*] Unique fragments: 156

[*] Secrets Summary:
[!] Found pattern: AKIA
[!] Found pattern: token
[!] Found pattern: password

対策

本番環境でこの脆弱性を修正するには:

  1. アップグレード: MongoDB をパッチ適用済みバージョン(例: 6.0.27+、7.0.28+、8.0.17+)に更新します。
  2. ネットワーク制限: MongoDB のポート(27017)がパブリックインターネットに公開されないようにします。

ライセンス

このプロジェクトは MIT ライセンスの下で提供されています。詳細は LICENSE ファイルを参照してください。

免責事項

この資料は教育および研究目的のみを対象としています。このエクスプロイトを、所有していない、または明示的なテスト許可を得ていないシステムに対して使用しないでください。作者は、この情報またはツールの誤用について一切の責任を負いません。

参考情報

  • 露出した MongoDB インスタンスを MongoBleed で悪用する: ローカルラボのウォークスルー
  • CVE-2025-1623

作者

ElJoamy
Joseph Meneses (ElJoamy)

バックエンドおよび AI 開発者 · サイバーセキュリティエンジニア · DBA · ペネトレーションテスター

ツールをダウンロード