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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
mysql-mysqlbinlog-raw-path — MySQL Community Server 26.7.0 - 高 - mysqlbinlog --raw Rotate パス残留 - クライアントファイル書き込み | Kitploit
ツール/GitHubGitHub/abraxas/mysql-mysqlbinlog-raw-path
脆弱性分析コード分析エクスプロイトウェブアプリケーション悪用ペネトレーションテストラボと実践
GitHubabraxas/mysql-mysqlbinlog-raw-path

mysql-mysqlbinlog-raw-path

MySQL Community Server 26.7.0 - 高 - mysqlbinlog --raw Rotate パス残留 - クライアントファイル書き込み

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

人気

すべて見る →

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

すべてのツールを探索

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

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

Abraxas Labs - mysql-mysqlbinlog-raw-path

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

mysql-mysqlbinlog-raw-path

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

MySQL Community Server mysqlbinlog 26.7.0 (06a5c1c) - Oracle

mysqlbinlog --raw --read-from-remote-server は Rotate イベントの new_log_ident をベース名チェックなしで log_file_name にコピーする。次の FORMAT_DESCRIPTION イベントがそのパスを my_fopen し、BINLOG_MAGIC とイベントを書き込む。/ を含む本物の Rotate ident を送信する悪意あるダンプは、クライアントの UID でそのファイルを書き込む。

--raw はドキュメント化されたリモート binlog ファイル コピーである。残された問題は、ident をパスとして扱っていることだ。

IDCVE 未割当
クラスファイル書き込み (クライアント --raw BINLOG_MAGIC)
到達性リモート (被害者が攻撃者のダンプに対して mysqlbinlog --raw -R を実行; 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 mysqlbinlog
影響バージョン26.7.0 (06a5c1c99c377fc41b2eba1ea244e8b220bdc3c8)
認証被害者が攻撃者のダンプに対して mysqlbinlog --raw -R を実行
ライセンスGNU Affero GPL v3.0
ラボ127.0.0.1 のみ。BINLOG_MAGIC を含む証拠ファイル。ファイル書き込みであり、RCE ではない。

攻撃者ができること

MySQL プロトコルサーバーを立ち上げる。COM_BINLOG_DUMP を送信する。ダンプが停止しないよう、一致する偽の Rotate (タイムスタンプ 0、ident が要求されたログ名と等しい) を送信する。ident が /abs/path である本物の Rotate (タイムスタンプ != 0) を送信する。FORMAT_DESCRIPTION イベントを送信する。

mysqlbinlog --raw -R ... mysql-bin.000001 を実行したオペレーターは、クライアントの UID で /abs/path を書き込む。内容は binlog バイト列 (\xfebin と FD イベント) であり、任意のペイロードではない。その UID が作成できる任意のパスを上書きする。

本物の mysqld は / を含む Rotate ident を出力しない。残された問題はクライアント側にある。

発見の経緯

mysqldump SHOW TABLES オーバーフロー および mysqldump --tab パス と同じ 26.7.0 の調査。デフォルトのデーモンは空だった。クライアントツールは依然としてリモートの名前を信頼していた。

if (raw_mode) {
  if (output_file != nullptr) {
    snprintf(log_file_name, sizeof(log_file_name), "%s%s", output_file,
             rev->new_log_ident);
  } else {
    my_stpcpy(log_file_name, rev->new_log_ident);
  }
}

偽の Rotate (when.tv_sec == 0) で ident が要求されたログと一致しない場合、ダンプは停止する。一致する偽の Rotate はコピー後にスキップされる (continue)。本物の Rotate は停止しない。次の FD:

if (!(result_file = my_fopen(
          log_file_name, O_WRONLY | MY_FOPEN_BINARY, MYF(MY_WME)))) {
  error("Could not create log file '%s'", log_file_name);

LOAD DATA の一時ファイルは tmpdir 配下の SQL_LOAD_MB のままである。クローズ済み。ident の長さは FN_REFLEN-1 に制限されている。/ は除去されない。

記録済みの誤った方向性: ident がパスである偽の Rotate を送信する (ダンプが停止する); --result-file を使用する (ident がプレフィックスになり、異なる残存問題となる); オラクルとして本物の mysqld を使用する; チェックサムを有効のままにする。

ラボ

cd lab
./run.sh

イメージ mysql:26.7.0。バイナリ /usr/libexec/mysqlsh/mysqlbinlog Ver 26.7.0 (そのイメージでは PATH 上にない)。コントロールスタブ: 偽の Rotate mysql-bin.000001 と FD が work/mysql-bin.000001 を書き込む。トラバーサルスタブ: 一致する偽の Rotate、本物の Rotate ident /work/oracle/MYSQL-BINLOG-RAW-WITNESS、FD がそのパスを書き込む (BINLOG_MAGIC)。公開 127.0.0.1:18620 / 18621。ループバックにバインドすること。binlog バイト列のファイル書き込みであり、RCE ではない。--result-file は使用しない。

control-basename=yes
traversal-outside=yes
SUCCESS mysql-mysqlbinlog-raw-path ... MYSQL-BINLOG-RAW-WITNESS

修正方法

log_file_name への my_stpcpy / snprintf の前に new_log_ident の basename を取得する。--raw は cwd または --result-file プレフィックス配下に書き込むべきであり、/ を含む ident に書き込むべきではない。

参考資料

  • github.com/mysql/mysql-server タグ mysql-26.7.0 (06a5c1c99c377fc41b2eba1ea244e8b220bdc3c8)
  • client/mysqlbinlog.cc dump_remote_log_entries
  • 関連パック: abraxas/mysql-mysqldump-show-tables-overflow · abraxas/mysql-mysqldump-tab-path
ツールをダウンロード