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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
phpmyadmin-config-set-2fa — phpMyAdmin 5.2.3 - 高 - リモート - 2FA - config/set が二要素認証をクリアする | Kitploit
ツール/GitHubGitHub/abraxas/phpmyadmin-config-set-2fa
脆弱性分析エクスプロイトウェブアプリケーション悪用ウェブセキュリティペネトレーションテスト認証ラボと実践
GitHubabraxas/phpmyadmin-config-set-2fa

phpmyadmin-config-set-2fa

phpMyAdmin 5.2.3 - 高 - リモート - 2FA - config/set が二要素認証をクリアする

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

人気

すべて見る →

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

すべてのツールを探索

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

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

Abraxas Labs - phpmyadmin-config-set-2fa

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  phpmyadmin-config-set-2fa

解説記事: https://abraxaslabs.tech/research/phpmyadmin-config-set-2fa

phpmyadmin-config-set-2fa

分類: 権限の残留 / ステップアップ認証の欠落 到達範囲: リモート

phpMyAdmin 5.2.3 (RELEASE_5_2_3 / 962857e) - phpMyAdmin

POST index.php?route=/config/set は、2fa を含む許可リスト内の任意の設定を書き込みます。UserPreferences::persistOption は検証を行いません。設定 -> 二要素認証は、要素を削除する前に今でも TwoFactor::check(true) を呼び出します。/config/set は呼び出しません。

ログイン済みのセッション、またはページトークンを POST できる XSS/CSRF によって、key=2fa と value=null を送信できます。次回のパスワードログインでは、TOTP、WebAuthn、Simple のいずれのプロンプトも表示されません。単一リクエストのスキップではなく、永続的な剥奪です。

IDCVE 未割当
分類権限の残留 / ステップアップ認証の欠落
到達範囲リモート (認証済み Cookie ログイン。CSRF トークンが必要)
CWECWE-620
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 (962857e4f63d42e38f11ff4d63f5e722018add76)
認証Cookie ログイン。CSRF トークンが必要。XSS または CSRF を永続的な 2FA 剥奪へと完遂させる
ライセンスGNU Affero GPL v3.0
ラボ127.0.0.1 のみ

攻撃者ができること

TOTP、WebAuthn、Simple の確認フィールドを提示することなく、phpMyAdmin アカウントから 2FA を剥奪します。次回のパスワードログインはパスワードのみになります。その MySQL ユーザーとしての完全な PMA (SQL、ユーザー、エクスポート)。

権限メソッド / パス偵察 / 完全性 / 可用性ラボで実証済みか推測か
2fa を null に永続化し、pmadb から第二要素を削除する認証済みの POST index.php?route=/config/set key=2fa value=null に有効な token を付加設定ストアの完全性ラボで実証済み。success:true、pmadb の config_data が [] になった
その書き込み後にパスワードのみでログインする新しい Cookie セッション、同じ MySQL ユーザーログインパスの完全性ラボで実証済み。2fa_confirm は表示されず、通常の UI に到達した
以降のログインで 2FA が消える一方、現在のセッションは維持される同じハンドラ。persistOption はストアを書き込み、稼働中の two_factor_check フラグには触れない以降のセッションの完全性ラボで実証済み。セッション A は入ったまま。セッション B は 2FA を経由した。セッション C は経由しなかった
ページトークン付きで POST できる保存型 XSS または CSRF からの連鎖同一レビュー内の他の残留、本ラボの対象外同一オリジン POST 後の 2FA の完全性推測
設定画面から 2FA を削除するPOST /preferences/two-factor 2fa_remove=1文書化された UI 経由での 2FA の完全性ラボで実証済みのクローズ。要素がない場合、PMA は確認ページを表示し、pmadb には依然として backend=simple が残る

この残留に関してクローズ済み: 未認証アクセス、MySQL パスワードのスキップ、OS RCE、他ユーザーの pmadb 行の読み取り。残留 #1 (CustomServer 署名) は不要でした。MySQL パスワードはスキップしていません。

同じピン: WebAuthn CustomServer の残留。

発見の経緯

PMASA-2025-1/2/3 の後に 5.2.3 を固定しました。Cookie 認証、pmadb pma__userconfig。ラボでは、ハードウェアキーなしで Settings が Simple バックエンドを登録できるようにするためだけに $cfg['DBG']['simple2fa'] を有効にしています。TOTP と WebAuthn は同じ 2fa 設定キーに格納されます。

SetConfigController は key と JSON の value を受け取り、Config::setUserValue を呼び出します。UserPreferences::persistOption には「検証は一切行われません!」と明記されています。apply() は 2fa を許可リストに含めているため、このキーが未知の設定項目として破棄されることはありません。

$result = $this->config->setUserValue(null, $key, json_decode($value));

json_decode('null') は PHP の null です。persistOption('2fa', null, $default) はその後 config_data['2fa'] を unset します。そのパスのデフォルトも null であるためです。

Settings -> Two-factor は対照的です。TwoFactorController は TwoFactor::check(true) が true を返すまで configure('') を実行しません。

すでに記録済みの誤った道筋:Settings の 2fa_remove を穴とみなすこと(依然として要素を要求する);未認証アクセスを主張すること;MySQL パスワードのスキップを主張すること;これを残存 #1(CustomServer)として扱うこと;リバースシェル。茶番。

Lab

python3 phpmyadmin-config-set-2fa-Abraxas-Labs.py
# or: cd lab && ./run.sh

対象は http://127.0.0.1:19280 のみです。Compose プロジェクト phpmyadmin-config-set-2fa。RELEASE_5_2_3 を固定します。run.sh はそのタグをイメージ用に lab/src/ へコピーまたはクローンします。スタックは実行後に破棄されます。

設定では Simple 2FA が登録されていました。2 つ目のブラウザで 2fa_confirm ページにアクセスしました。要素なしで 2fa_remove を POST しても確認 UI に留まり、pmadb には backend=simple が残りました。その後 /config/set を POST すると success:true が返り、pmadb は [] になり、次のログインでは通常の UI に遷移しました。

SUCCESS phpmyadmin-config-set-2fa enroll=simple ui-remove-blocked=yes config-set-cleared=yes next-login-password-only=yes PMA-CONFIG-SET-2FA-WITNESS

修正

/config/set で 2fa(およびその他の認証キー)を拒否する。2FA の変更前に TwoFactor::check(true) を必須とする。Settings パスを唯一の書き込み経路として維持する。

参考資料

  • github.com/phpmyadmin/phpmyadmin タグ RELEASE_5_2_3 (962857e4f63d42e38f11ff4d63f5e722018add76)
  • libraries/classes/Controllers/Config/SetConfigController.php
  • libraries/classes/Config/UserPreferences.php
  • 同一ピン: PMA-5.2.3-WebAuthn-2FA
  • CWE-620

ライセンス

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

ツールをダウンロード