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 未サニタイズ識別子

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

人気

すべて見る →

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

すべてのツールを探索

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

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

Abraxas Labs - phpmyadmin-designer-json-sqli

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

phpmyadmin-designer-json-sqli

Class: SQLi Reach: Remote

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 未割当
ClassSQLi (pma__designer_settings 上のコントロールユーザー)
ReachRemote (認証済み 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
ProductphpMyAdmin
Affected5.2.3 タグ RELEASE_5_2_3 (962857e)
Auth認証済み Cookie ログイン。Designer + pma__designer_settings が有効。
LicenseGNU Affero GPL v3.0
Lab127.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 のブロブに witness が含まれ、有効な JSON ではない。クリーンな保存 grid-ok は消える
スタッククエリなしで他ユーザーの designer 行を上書きする (被害者行の完全性)同じ # が WHERE username = '...' をコメントアウトするラボで実証済み。シードした victim の {"keep":"safe"} が切り詰められた witness ブロブになった
コントロールユーザーとしての追加ステートメントコントロールの 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 はしていない。

誤った方向: ユーザー名への注入 (エスケープされている)。#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。Witness 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 ブロブに対する 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 を参照。ループバックラボのみ。無保証。

ツールをダウンロード