Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
mysql-mysqldump-tab-path — MySQL Community Server 26.7.0 - 高 - mysqldump --tab パスの残存 - クライアントファイル書き込み | Kitploit
ツール/GitHubGitHub/abraxas/mysql-mysqldump-tab-path
脆弱性分析エクスプロイトウェブアプリケーション悪用情報収集ペネトレーションテストデータベースセキュリティラボと実践
GitHubabraxas/mysql-mysqldump-tab-path

mysql-mysqldump-tab-path

MySQL Community Server 26.7.0 - 高 - mysqldump --tab パスの残存 - クライアントファイル書き込み

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

人気

すべて見る →

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

すべてのツールを探索

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

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

Abraxas Labs - mysql-mysqldump-tab-path

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  mysql-mysqldump-tab-path

mysql-mysqldump-tab-path

クラス: ファイル書き込み (クライアント) 到達範囲: リモート (UI:R)

MySQL Community Server mysqldump 26.7.0 (06a5c1c) - Oracle

mysqldump --tab=DIR は fn_format を使用してテーブルごとに1つの .sql を書き出しますが、MY_REPLACE_DIR は使用しません。/ や .. を含む悪意ある SHOW TABLES の名前はそのディレクトリを保持します。DIR は無視されます。ダンプ UID がそのパスを my_fopen します。

--tab は、.txt がサーバーの INTO OUTFILE を経由するため、同一マシンモードとして文書化されています。.sql は依然としてクライアント側の書き込みです。

IDCVE 未割り当て
クラスファイル書き込み (クライアント --tab .sql)
到達範囲リモート (被害者が攻撃者の MySQL に対して mysqldump --tab を実行; UI:R)
CWECWE-22
CVSSHigh: 8.1 CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:N
製品MySQL Community Server mysqldump
影響バージョン26.7.0 (06a5c1c99c377fc41b2eba1ea244e8b220bdc3c8)
認証被害者が攻撃者の MySQL に対して mysqldump --tab=DIR を実行
ライセンスGNU Affero GPL v3.0
ラボ127.0.0.1 のみ。DIR 外の .sql を目撃。

攻撃者ができること

MySQL プロトコルサーバーを立ち上げます。SHOW TABLES に対して /abs/path または ../outside を返答します。mysqldump --tab=/backup testdb を実行したオペレーターは、ダンプ UID として /abs/path.sql (または cwd からの相対パス) を書き込みます。

その UID が作成できる任意のファイルを上書きします。リモートのファイル名を信頼するバックアップクライアントと同じクラスです。.txt の INTO OUTFILE パスはサーバー側の FILE です。残るのはクライアントの .sql です。

実際の mysqld は / を含むテーブル名を出力しません。残るのはクライアントです。

発見の経緯

mysqldump SHOW TABLES overflow と同じ 26.7.0 の調査です。デフォルトのデーモンは空でした。クライアントツールは依然として SHOW TABLES を信頼していました。オーバーフローは1つの残存物でした。--tab が次でした。

static FILE *open_sql_file_for_table(const char *table, int flags) {
  FILE *res;
  char filename[FN_REFLEN], tmp_path[FN_REFLEN];
  convert_dirname(tmp_path, path, NullS);
  res = my_fopen(fn_format(filename, table, tmp_path, ".sql",
                           MYF(MY_UNPACK_FILENAME | MY_APPEND_EXT)),
                 flags, MYF(MY_WME));
  return res;
}

mysys/mf_format.cc: dirname_part(name) が空でなく、MY_REPLACE_DIR がオフの場合、指定された dir は使用されません。

すでに記録済みの誤った道: 実際の mysqld をオラクルとして扱うこと。SHOW CREATE TABLE の前に SHOW TABLE STATUS で終了すること (.sql は CREATE が成功した後にのみ開かれる)。INTO OUTFILE の .txt を残存物と呼ぶこと。G1 オーバーフローを再び引き起こす 64KiB の名前。

MariaDB CVE-2025-13699 (mariadb-dump のビュー名トラバーサル) ではありません。同じクラスですが、MySQL Community のコピーです。

ラボ

cd lab
./run.sh

イメージ mysql:26.7.0。--tab=/work/tabdir。コントロールスタブテーブル t は work/tabdir/t.sql を書き込みます。トラバーサルスタブテーブル /work/oracle/MYSQL-DUMP-TAB-TRAVERSAL-WITNESS は work/oracle/MYSQL-DUMP-TAB-TRAVERSAL-WITNESS.sql を書き込みます。公開 127.0.0.1:18610 / 18611。ループバックにバインドしてください。

control-sql=yes
traversal-outside=yes
SUCCESS mysql-mysqldump-tab-path ... MYSQL-DUMP-TAB-TRAVERSAL-WITNESS

修正

--tab クライアントファイルに対して fn_format に MY_REPLACE_DIR を渡すか、先にテーブル名の basename を取得してください。--tab=DIR は DIR を意味すべきです。

参考文献

  • github.com/mysql/mysql-server タグ mysql-26.7.0 (06a5c1c99c377fc41b2eba1ea244e8b220bdc3c8)
  • client/mysqldump.cc open_sql_file_for_table
  • mysys/mf_format.cc
  • 姉妹オーバーフローパック: abraxas/mysql-mysqldump-show-tables-overflow
ツールをダウンロード