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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
phpmyadmin-importldi — phpMyAdmin 5.2.3 - 高 - リモート - SQLi - ImportLdi TERMINATED BY 残存 | Kitploit
ツール/GitHubGitHub/abraxas/phpmyadmin-importldi
脆弱性分析エクスプロイトウェブアプリケーション悪用ウェブセキュリティペネトレーションテストラボと実践
GitHubabraxas/phpmyadmin-importldi

phpmyadmin-importldi

phpMyAdmin 5.2.3 - 高 - リモート - SQLi - ImportLdi TERMINATED BY 残存

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

人気

すべて見る →

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

すべてのツールを探索

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

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

Abraxas Labs - phpmyadmin-importldi

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  phpmyadmin-importldi

phpmyadmin-importldi

Class: SQLi Reach: Remote

phpMyAdmin 5.2.3 (RELEASE_5_2_3 / 962857e) - phpMyAdmin

ImportLdi.php は POST の ldi_terminated と ldi_new_line から FIELDS/LINES TERMINATED BY を含む LOAD DATA を構築する。これら2つの文字列はシングルクォートで囲まれた SQL に連結される。ldi_enclosed と ldi_escaped は escapeString を経由する。phpMyAdmin は /import で PMA_ENABLE_LDI を設定するため、MYSQLI_OPT_LOCAL_INFILE が有効になる。

サインイン済みのユーザーが format=ldi を POST し、ldi_terminated にクォートを含める。発行される LOAD DATA は TERMINATED BY 内に生の POST を含む。制御ユーザーではなく、ユーザー接続への SQL インジェクションである。

IDCVE 未割当
ClassSQLi
ReachRemote (認証済み Cookie ログイン、テーブルインポート、フォーマット ldi)
CWECWE-89
CVSSMedium: 6.5 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N
ProductphpMyAdmin
Affected5.2.3 タグ RELEASE_5_2_3 (962857e4f63d42e38f11ff4d63f5e722018add76)
Auth認証済み Cookie ログイン。テーブルインポート、フォーマット ldi
LicenseGNU Affero GPL v3.0
Lab127.0.0.1 のみ

攻撃者ができること

テーブルインポートを開けるサインイン済みの phpMyAdmin ユーザーは、自身の MySQL 接続上で LOAD DATA ... TERMINATED BY に SQL を注入できる。

権限メソッド / シンク偵察 / 完全性 / 可用性ラボ実証または推測
FIELDS TERMINATED BY リテラルを破壊POST index.php?route=/import format=ldi ldi_terminated にクォートPMA が構築するステートメントの完全性ラボ実証済み。HTML SQL ボックス: TERMINATED BY '',PMA-IMPORTLDI-WITNESS'
ENCLOSED BY をイン・バンドに保つ同じ POST、ldi_enclosed にクォートネガティブコントロールラボ実証済み。ENCLOSED BY はエスケープされる
ユーザー接続上での追加 SQL (INTO OUTFILE / 許可されていればスタック)文字列が閉じられた後の同じシンクユーザー接続の完全性推測。ラボは壊れたデリミタで停止する。デフォルトの mysqli::query は単一ステートメント
MySQL 側のファイル読み書きアカウントが FILE または Web サーバーへの LOCAL INFILE を持つ場合の同じ LOAD DATAmysqld が触れられるファイルの完全性推測。ここでは付与されていない。主張しない

このラボで除外済み: 未認証アクセス、制御ユーザー / pmadb、OS include LFI、FILE 制限付き読み書き。サインイン済みユーザーは既に SQL ボックスを持っている。この残存物は、PMA がそのユーザーのために構築するステートメント内のエスケープされていないデリミタである。

同じピン: WebAuthn CustomServer leftover。

発見の経緯

phpMyAdmin RELEASE_5_2_3 をピン留めした。LOAD DATA を手作業で構築するインポートプラグインはクォート監査の対象である。4つのデリミタフィールドのうち2つはエスケープされていた。2つはされていなかった:

$sql .= ' FIELDS TERMINATED BY \'' . $ldi_terminated . '\'';
...
$sql .= ' LINES TERMINATED BY \'' . $ldi_new_line . '\'';

ldi_enclosed / ldi_escaped は $dbi->escapeString を呼び出す。Common.php は /import + format=ldi で PMA_ENABLE_LDI を設定する。ルートは GET|POST /import と GET|POST /table/import。

既に記録済みの誤り: FILE 権限なしで LFI を主張すること、SQL ボックスを発見事項として扱うこと (残存物は PMA が連結するエスケープされていないデリミタである)、制御ユーザー / pmadb を主張すること、リバースシェル。茶番である。

ラボ

python3 phpmyadmin-importldi-Abraxas-Labs.py
# or: cd lab && ./run.sh

対象は http://127.0.0.1:19290 のみ。イメージは phpmyadmin:5.2.3 と mysql:8.0。Compose プロジェクトは phpmyadmin-importldi。実行後にスタックは破棄される。

Cookie ログイン。/import に format=ldi と ldi_terminated 内のクォートを付けて POST する。発行される LOAD DATA LOCAL INFILE ... INTO TABLE \ldi_target` FIELDS TERMINATED BY '',PMA-IMPORTLDI-WITNESS'。ldi_enclosed内の同じクォートはエスケープされたENCLOSED BYとして保存される。5.2.3 イメージ上のピンソースには依然として'.$ldi_terminated.'と$dbi->escapeString($ldi_enclosed)` がある。

SUCCESS phpmyadmin-importldi pin=RELEASE_5_2_3 how=live TERMINATED-BY-raw ENCLOSED-escaped PMA-IMPORTLDI-WITNESS

修正

ldi_terminated と ldi_new_line に escapeString を適用し、enclosed と escaped と同じにする。skip_queries を int キャストする。

参考資料

  • github.com/phpmyadmin/phpmyadmin タグ RELEASE_5_2_3 (962857e4f63d42e38f11ff4d63f5e722018add76)
  • libraries/classes/Plugins/Import/ImportLdi.php
  • 同じピン: PMA-5.2.3-WebAuthn-2FA
  • CWE-89

ライセンス

GNU Affero GPL v3.0。LICENSE を参照。ループバックラボのみ。無保証。

ツールをダウンロード