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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
phpmyadmin-issuperuser — phpMyAdmin 5.2.3 - High - Remote - leftover - isSuperUser チェックがスキップされる | Kitploit
ツール/GitHubGitHub/abraxas/phpmyadmin-issuperuser
特権昇格脆弱性分析エクスプロイトウェブアプリケーション悪用ウェブセキュリティペネトレーションテストラボと実践
GitHubabraxas/phpmyadmin-issuperuser

phpmyadmin-issuperuser

phpMyAdmin 5.2.3 - High - Remote - leftover - isSuperUser チェックがスキップされる

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

人気

すべて見る →

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

すべてのツールを探索

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

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

Abraxas Labs - phpmyadmin-issuperuser

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

phpmyadmin-issuperuser

クラス: 権限の残存 到達範囲: リモート

phpMyAdmin 5.2.3 (RELEASE_5_2_3 / 962857e) - phpMyAdmin

DatabaseInterface::isSuperUser() は SUPER / SYSTEM_USER のチェックではない。これは SELECT 1 FROM mysql.user LIMIT 1 である。mysql.user を読み取れるアカウントは、そのセッションの残りの間スーパーユーザーとしてキャッシュされる。$cfg['AllowUserDropDatabase'] のデフォルトは false である。DestroyController、SqlController、ImportController、およびデータベースページはすべて、このフラグを迂回して isSuperUser のショートカットを利用する。

これは phpMyAdmin のポリシーバイパスであり、新しい MySQL 権限ではない。mysql.user への SELECT と DROP、そして SUPER なしで、PMA 経由で Drop するのに十分である。

IDCVE 未割り当て
クラス権限の残存
到達範囲リモート (MySQL アカウントとしての認証済み Cookie ログイン)
CWECWE-863
CVSSMedium: 6.3 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:L
製品phpMyAdmin
影響を受けるバージョン5.2.3 タグ RELEASE_5_2_3 (962857e4f63d42e38f11ff4d63f5e722018add76)
認証MySQL アカウントとしての認証済み Cookie ログイン
ライセンスGNU Affero GPL v3.0
ラボ127.0.0.1 のみ

攻撃者ができること

mysql.user を読み取れる (典型的なバックアップ/監視用の SELECT) サインイン済み MySQL アカウントが、SUPER なしで DROP を持つ場合、phpMyAdmin のスーパーユーザーとして扱われる。

権限メソッド / シンク偵察 / 完全性 / 可用性ラボで実証済みか推測か
$cfg['AllowUserDropDatabase']=false をバイパスし、データベースページに Drop を表示するGET index.php?route=/server/databasesDrop UI の偵察ラボで実証済み。bulkActionDropButton / selected_dbs[] が selectuser に存在し、plaindrop には存在しない
PMA の destroy ハンドラー経由でデータベースを Drop するPOST index.php?route=/server/databases/destroy selected_dbs[]=dropme ajax_request=trueそのデータベースの完全性 / 可用性ラボで実証済み。JSON success:true、「1 database has been dropped successfully.」dropme が消える
SQL ボックスから DROP DATABASE を実行するPOST index.php?route=/sql sql_query=DROP DATABASE \dropme_sql``そのデータベースの完全性 / 可用性ラボで実証済み。データベースが消える。ネガティブアカウントは「DROP DATABASE statements are disabled.」を受け取る
isSuperUser() でゲートされた他の PMA 画面をアンロックする権限、レプリケーション、ステータス、ユーザーグループ、エンジン、binlog、変数それらの画面の偵察 / 完全性呼び出し箇所からの推測。検証はしていない
mysql.user を読み取るPMA が SUPER のオラクルとして使用する MySQL SELECTPMA が SUPER と誤認するカタログの偵察ラボで実証済み。そのグラントこそが、残存が SUPER と誤認するものである

このラボで除外されたもの: 実際の MySQL SUPER (SHOW GRANTS は USAGE + テーブル DROP + mysql.user への SELECT のまま)。FILE、GRANT OPTION、shutdown、および ALL PRIVILEGES は付与されていない。DROP を持つが mysql.user への SELECT を持たないアカウントは、依然として PMA 経由で drop できない。これは新しい MySQL 権限ではなく、RCE でもない。

同じピン: WebAuthn CustomServer leftover。

発見の経緯

phpMyAdmin RELEASE_5_2_3 をピン留めした。SUPER のように語る権限ゲートは SUPER のように見えるべきである。これはカタログ SELECT のように見える:

$result = $this->tryQuery('SELECT 1 FROM mysql.user LIMIT 1');
$isSuperUser = false;
if ($result) {
    $isSuperUser = (bool) $result->numRows();
}
SessionCache::set('is_superuser', $isSuperUser);

AllowUserDropDatabase (デフォルト false) 周辺でこのフラグを利用するゲート:

  • Controllers/Server/DatabasesController.php is_drop_allowed
  • Controllers/Server/Databases/DestroyController.php (AJAX destroy)
  • Controllers/Sql/SqlController.php / Sql::hasNoRightsToDropDatabase
  • Controllers/Import/ImportController.php
  • Controllers/Database/OperationsController.php

すでに記録済みの誤った方向性: 実際の MySQL SUPER を主張すること。DROP のみのアカウントをバグとして扱うこと (そのアカウントはネガティブコントロールである)。これを RCE に誇張すること。リバースシェル。茶番である。

ラボ

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

ターゲットは http://127.0.0.1:19270 のみ。イメージは phpmyadmin:5.2.3 と mysql:8.0。Compose プロジェクトは phpmyadmin-issuperuser。$cfg['AllowUserDropDatabase']=false。スタックは実行後に破棄される。

selectuser は mysql.user への SELECT と dropme / dropme_sql への DROP を持ち、SUPER はない。plaindrop は nodropme のみへの DROP を持つ。データベースページは selectuser に対して Drop を描画する。POST /server/databases/destroy は dropme を drop する。DROP DATABASE dropme_sql を伴う POST /sql も実行される。plaindrop は依然として destroy から Error JSON を、/sql から「DROP DATABASE statements are disabled」を受け取った。

SUCCESS phpmyadmin-issuperuser drop-ui=yes destroy=ok sql-drop=ok grants-no-super=yes mysql.user-select=yes neg-drop-ui=no neg-destroy=denied PMA-ISSUPERUSER-WITNESS

修正

INFORMATION_SCHEMA または SHOW GRANTS を介して実際の SUPER / SYSTEM_USER をテストする。そのカタログを実際に必要とする UI のために、別個の「mysql.user を読み取れる」フラグを保持する。カタログ SELECT をスーパーユーザーとしてキャッシュしない。

参考文献

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

ライセンス

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

ツールをダウンロード