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

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

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

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

ツールディレクトリ

カテゴリ

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

phpmyadmin-webauthn

phpMyAdmin 5.2.3 - High - リモート - 2FAスキップ - WebAuthnセレモニーをスキップ可能

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

人気

すべて見る →

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

すべてのツールを探索

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

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

Abraxas Labs - phpmyadmin-webauthn

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

解説記事: https://abraxaslabs.tech/research/phpmyadmin-webauthn

phpmyadmin-webauthn

分類: 2FA バイパス 到達範囲: リモート

phpMyAdmin 5.2.3(タグ RELEASE_5_2_3)。デフォルトの tarball。web-auth/webauthn-lib は suggest / require-dev に含まれる。composer install --no-dev ではインストールされない。そのため createServer は CustomServer を使用する。このクラスは response.signature をパースし(フィールドが存在し、デコードできる必要がある)、COSE 検証を一切行わない。保存された credentialPublicKey も一切使用しない。製品自身の CustomServerTest は、公開鍵なしのアサーションを受け入れてしまう。

構造的なチェックは実際に機能している: allowCredentials 内の credential id、clientData.type == webauthn.get、セッションと一致する challenge、origin ホスト、rpIdHash、user-present。署名はパースされるが無視される。MySQL パスワードの後、それらのフィールドに一致しさえすれば、ゴミのような WebAuthn 署名でも完全な phpMyAdmin セッションとなる。すなわちデータベースそのものである。もし実際に web-auth/webauthn-lib をインストールしているなら、WebauthnLibServer を使用しており、このバグの影響は受けない。

IDCVE 未割当
分類2FA バイパス / 署名検証の欠落
到達範囲リモート(Cookie ログイン後、WebAuthn がスキップされる)
CWECWE-347, CWE-287
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。デフォルト tarball / composer install --no-dev
認証Cookie ログイン(MySQL パスワード)、その後 WebAuthn がスキップされる
ライセンスGNU Affero GPL v3.0
ラボ127.0.0.1:18080 のみ

攻撃者ができること

攻撃者は依然として MySQL パスワード(Cookie ログイン)を必要とする。そのパスワードの後、一致する challenge、origin ホスト、rpIdHash、user-present、登録済み credential id、そしてゴミのような署名を付けて webauthn_request_response を POST する。すると通常の UI に到達する。2FA は無効化される。これはデータベース(SQL、ユーザー、エクスポート)へのアクセスであり、ホスト上の PHP シェルではない。

もし実際に web-auth/webauthn-lib をインストールしているなら、WebauthnLibServer を使用しており、このバグの影響は受けない。

権限メソッド / パスラボで実証済みか推測か
認証器なしで WebAuthn 2FA を完全に突破(第二要素の完全性)パスワード後に webauthn_request_response を POST、ゴミ署名ラボで実証済み。still_2fa=False landed=True
その MySQL ユーザーとしての完全な PMA(SQL ボックスの完全性 + 偵察)同一セッションラボで実証済み。ホーム UI のマーカーが存在
MySQL パスワードのスキップ未認証 POSTラボで実証済み、クローズ。ログイン画面のまま
web-auth/webauthn-lib インストール時の同一バイパスWebauthnLibServerクローズ。この残存バグではない
OS RCE / リバースシェルこの残存バグクローズ

この残存バグに関してクローズ済み: 未認証の PMA、ホスト上の PHP シェル、そして実際に web-auth/webauthn-lib をインストールした tarball をこのバグとして扱うこと。

発見の経緯

createServer を読み、次に parseAndValidateAssertionResponse を読み、最後に公開鍵を渡さないユニットテストを読んだ。構造的なチェックは実際に機能している。署名はパースされるが無視される。

迷走した点: 事前のパスワードセッションなしで WebAuthn JSON を POST したこと、構造チェックに失敗する署名、Webauthn\Server が依然として存在していたこと(誤ったサーバークラス)、このセッション由来でない challenge、origin ホストの不一致、user-present フラグのクリア、allowCredentials に含まれない credential id。

Dockerfile は 5.2.3 をコピーし、composer install --no-dev を実行した後、vendor/web-auth を削除するため、実際に使用されるのは CustomServer になります。最後の php -r は、Webauthn\Server が存在する場合に終了コード 1 で終了します。init.sql は、ハードウェアキーなしで appuser に WebAuthn 2FA を登録します。PoC は署名 not-a-real-signature-PMA-WEBAUTHN-BYPASS を POST します。

ラボ

Dockerfile の隣に固定されたリポジトリをクローンし、次を実行します:

cd lab
git clone --depth 1 --branch RELEASE_5_2_3 https://github.com/phpmyadmin/phpmyadmin.git src
./run.sh

またはそのクローン後のパックルートから:

python3 phpmyadmin-webauthn-Abraxas-Labs.py

ループバックのみ: http://127.0.0.1:18080。Compose プロジェクト pma-webauthn-lab。RELEASE_5_2_3 を固定。src/ を出荷しないこと。PMA-WEBAUTHN-BYPASS を目撃すること。

SUCCESS PMA-WEBAUTHN-BYPASS WebAuthn 2FA accepted with garbage signature

修正

保存された COSE 公開鍵を用いて authenticatorData || SHA-256(clientDataJSON) を検証し、userHandle をバインドし、signCount を強制すること。web-auth/webauthn-lib を実際の依存関係にして CustomServer を削除するか、ライブラリが存在しない場合はフェイルクローズすること。それまでは、WebAuthn 2FA を無効化するか、この phpMyAdmin を公開しないこと。

参考資料

  • github.com/phpmyadmin/phpmyadmin タグ RELEASE_5_2_3
  • Plugins\TwoFactor\WebAuthn::createServer
  • CustomServer::parseAndValidateAssertionResponse
  • 同じピン留めの残骸: phpmyadmin-pmadb-central-sqli · phpmyadmin-designer-json-sqli · phpmyadmin-setup-validate · phpmyadmin-csrf-sql
  • CWE-347 · CWE-287

ライセンス

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

ツールをダウンロード