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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
phpmyadmin-designer-json-sqli — phpMyAdmin 5.2.3 - 高 - リモート - SQLi - Designer JSON 未サニタイズ識別子 | Kitploit
ツール/GitHubGitHub/abraxas/phpmyadmin-designer-json-sqli
脆弱性分析エクスプロイトウェブアプリケーション悪用ウェブセキュリティペネトレーションテストデータベースセキュリティラボと実践
GitHubabraxas/phpmyadmin-designer-json-sqli

phpmyadmin-designer-json-sqli

phpMyAdmin 5.2.3 - 高 - リモート - SQLi - Designer JSON 未サニタイズ識別子

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

人気

すべて見る →

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

すべてのツールを探索

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

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

Abraxas Labs - phpmyadmin-designer-json-sqli

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

解説記事: https://abraxaslabs.tech/research/phpmyadmin-designer-json-sqli

phpmyadmin-designer-json-sqli

クラス: SQLi 到達範囲: リモート

phpMyAdmin 5.2.3(タグ RELEASE_5_2_3、コミット 962857e)。Designer AJAX の save_setting_value は設定ブロブを json_encode し、コントロールユーザーのリンクに対するシングルクォート付きの UPDATE/INSERT に連結します。ユーザー名はエスケープされます。JSON はエスケープされません。json_encode はシングルクォートをエスケープしません。

サインイン済みのユーザーが index.php?route=/database/designer に operation=save_setting_value と、value にクォートを含めて POST します。すると queryAsControlUser がその文字列を pma コントロールユーザーとして pma__designer_settings に対して実行します。このアカウントは設定ストレージであり、ログイン中の SQL ボックスではありません。phpMyAdmin 6.x では ControlUser 上でこのブロブを quoteString でラップしています。5.2.3 は依然として生の連結を行います。

過去の Designer 関連 CVE(2016-6616、2019-11768、2019-18622)はユーザー名 / データベース名に関するものでした。この残存脆弱性は JSON の settings_data カラムに関するものです。

IDCVE 未割当
クラスSQLi(pma__designer_settings に対するコントロールユーザー)
到達範囲リモート(認証済み Cookie ログイン。Designer と pma__designer_settings が有効)
CWECWE-89
CVSSHigh: 8.1 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
製品phpMyAdmin
影響を受けるバージョン5.2.3 タグ RELEASE_5_2_3(962857e)
認証認証済み Cookie ログイン。Designer と pma__designer_settings が有効。
ライセンスGNU Affero GPL v3.0
ラボ127.0.0.1:19220 のみ

攻撃者ができること

Designer を開けるサインイン済みの phpMyAdmin ユーザーは、pma__designer_settings に対して コントロールユーザー として SQL を注入できます。

権限メソッド / パスラボで実証済みか推測か
コントロールユーザーの UPDATE/INSERT 文字列を破壊する(pmadb SQL の整合性)POST index.php?route=/database/designer に operation=save_setting_value と、value にクォートを含めて送信ラボで実証済み。一般ログ: SET settings_data = '{"snap_line":"PMA-DESIGNER-JSON-SQLI-WITNESS'#" }' が生のまま。quoteString は存在しない
自身の settings_data を切り詰めて JSON でなくする(自身の行の整合性)同じ POST。# がステートメントの残りをコメントアウトするラボで実証済み。appuser のブロブにウィットネスが含まれ、有効な JSON ではない。正常な保存 grid-ok は失われる
スタッククエリなしで他ユーザーの designer 行を上書きする(被害者の行の整合性)同じ # が WHERE username = '...' をコメントアウトするラボで実証済み。シードした victim の {"keep":"safe"} が切り詰められたウィットネスブロブになった
コントロールユーザーとして追加のステートメントを実行するコントロールの mysqli リンクがマルチクエリを許可する場合、同じシンク推測。デフォルトの mysqli::query は単一ステートメント。ここでは有効化されていない
他の pmadb テーブル(bookmarks、history、pma__userconfig)に到達するスタッククエリまたは書き込み型のブレイクアウトが可能な場合のみ推測。このラボのコントロールユーザーは phpmyadmin.* の DML のみを持つ

このラボでクローズ済み: 未認証アクセス、サインイン済み appuser の SQL ボックス(appdb のみ。appuser は phpmyadmin に対する GRANT を持たない)、OS シェル、スタッククエリ。pmadb / designer settings が無効な場合、この機能はノーオペレーションになる(これは FAIL であり、この残存脆弱性ではない)。

発見の経緯

RELEASE_5_2_3 を対象に 8 つの並列ソースハントを実施しました。saveSetting は json_encode を '...' に連結します。ユーザー名は escapeString です。6.x はすでにこのブロブを quoteString しています。5.2.3 はそうしていません。

不正なターン:username へのインジェクション(エスケープされている);#1064 を期待する(# が残りをコメントアウトするため、MySQL は切り詰められた UPDATE を受け入れる);スタッククエリを実証済みとみなす(mysqli のデフォルトは単一ステートメント)。

ラボ

python3 phpmyadmin-designer-json-sqli-Abraxas-Labs.py

または

cd lab
./run.sh

ループバックのみ: http://127.0.0.1:19220。イメージ phpmyadmin:5.2.3 と mysql:8.0。Compose プロジェクト phpmyadmin-designer-json-sqli。ウィットネス PMA-DESIGNER-JSON-SQLI-WITNESS。

SUCCESS phpmyadmin-designer-json-sqli version=5.2.3 how=live raw-concat=yes truncated=true sql-error=false quoteString=no PMA-DESIGNER-JSON-SQLI-WITNESS

修正

JSON blob に対して quoteString(..., ControlUser) / escapeString を使用する。これは RecentFavoriteTable::saveToDb() や、このカラムに対する phpMyAdmin 6.x と同じ方法である。json_encode の出力をシングルクォートで囲んだ SQL リテラルの中に入れてはならない。

参考情報

  • github.com/phpmyadmin/phpmyadmin タグ RELEASE_5_2_3 (962857e)
  • libraries/classes/Database/Designer/Common.php の saveSetting
  • Controllers/Database/DesignerController.php の POST operation=save_setting_value
  • ルート GET|POST /database/designer
  • 同じピン留めの残骸: phpmyadmin-webauthn · phpmyadmin-pmadb-central-sqli · phpmyadmin-setup-validate · phpmyadmin-csrf-sql
  • CWE-89

ライセンス

GNU Affero GPL v3.0。LICENSE を参照。ループバックラボ専用。保証なし。

ツールをダウンロード