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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
PMA-5.2.3-WebAuthn-2FA — phpMyAdmin - 高 8.1 - 認証済み POST /index.php - 2FA バイパス | Kitploit
ツール/GitHubGitHub/abraxas/pma-5.2.3-webauthn-2fa
脆弱性分析エクスプロイトウェブアプリケーション悪用ウェブセキュリティペネトレーションテスト認証ラボと実践
GitHubabraxas/pma-5.2.3-webauthn-2fa

PMA-5.2.3-WebAuthn-2FA

phpMyAdmin - 高 8.1 - 認証済み POST /index.php - 2FA バイパス

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

人気

すべて見る →

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

すべてのツールを探索

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

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

Abraxas Labs - PMA-5.2.3-WebAuthn-2FA

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  PMA-5.2.3-WebAuthn-2FA

PMA-5.2.3-WebAuthn-2FA

phpMyAdmin 5.2.3 - phpMyAdmin

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

MySQL パスワードの後、challenge、origin、rpIdHash、user-present に一致する限り、でたらめな WebAuthn 署名でも完全な phpMyAdmin セッションが得られます。それはすなわちデータベースです。

IDCVE 未割当
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 デフォルト tarball(web-auth/webauthn-lib が存在しない)
認証MySQL パスワード、その後 WebAuthn をスキップ
ライセンスGNU Affero GPL v3.0
ラボ127.0.0.1 のみ

攻撃者ができること

攻撃者には依然として MySQL パスワードが必要です(Cookie ログイン)。そのパスワードの後、challenge、origin ホスト、rpIdHash、user-present、登録済み credential id に一致する webauthn_request_response を、でたらめな署名とともに POST します。すると通常の UI に入り込みます。2FA は突破されます。これはデータ上での RCE であり、ホスト上の PHP シェルではありません。

実際に web-auth/webauthn-lib をインストールしている場合、WebauthnLibServer を使用しているため、このバグの影響は受けません。

発見の経緯

createServer を読み、次に parseAndValidateAssertionResponse を読み、さらに公開鍵を渡さないユニットテストを読みました。構造的チェックは実際に機能しています。allowCredentials 内の credential id、clientData.type == webauthn.get、セッションとの challenge 一致、origin ホスト、rpIdHash、user-present です。署名はパースされるだけで無視されます。

最初にこれに向けたクライアントは礼儀正しいものでした。事前のパスワードセッションなしで WebAuthn JSON を POST しました。ログインページが返りました。構造的チェックすら満たさない署名で route=/ を POST しました。2FA 画面のままです。webauthn_request_response は依然として HTML 内にあります。

すでに記録済みの誤った道筋:Webauthn\Server が存在する(誤ったサーバークラス);challenge がこのセッションのものではない;origin ホストの不一致;user-present フラグがクリア;credential id が allowCredentials にない;未認証で MySQL パスワードなし;リバースシェル。すべて芝居です。手がかりは 2FA フィールドが消え、phpMyAdmin のナビゲーションページが表示されることです。

クライアントのバグは製品のバグに見えます。http.client をシャドーするヘルパーはパケットを一切送信しません。HTTPResponse に対する .recv() は .read() ではありません。これは一度だけ言及します。時間を浪費し、一瞬だけ phpMyAdmin が正常であるかのように見えたからです。

そして:username/password/token を POST。2FA ページからセッション challenge を取得。偽造アサーションを POST。still_2fa=False landed=True。ラボの Dockerfile は 5.2.3 をコピーし、composer install --no-dev を実行した後、vendor/web-auth を削除して CustomServer が使用されるようにします。最後の php -r は Webauthn\Server が存在すれば終了コード 1 で終了します。ライブラリがまだ存在する場合、イメージのビルドは失敗しなければなりません。init.sql はハードウェアキーなしで appuser の WebAuthn 2FA を登録します。

ラボ

cd lab
./run.sh

対象は http://127.0.0.1:18080 のみです。まず Dockerfile の隣に phpMyAdmin 5.2.3 を src/ として配置してください。

password-login status=200 webauthn=True
2fa-post status=200 still_2fa=False landed=True
SUCCESS PMA-WEBAUTHN-BYPASS WebAuthn 2FA accepted with garbage signature

修正方法

web-auth/webauthn-lib をインストールして createServer がこのライブラリを使用するようにするか、CustomServer 内で保存済みの公開鍵に対して response.signature を実際に COSE 検証してください。それまでは、WebAuthn 2FA を無効にするか、この phpMyAdmin を公開しないでください。

参考資料

  • github.com/phpmyadmin/phpmyadmin タグ RELEASE_5_2_3
  • CustomServer::parseAndValidateAssertionResponse · WebAuthn::createServer · CustomServerTest
  • WebAuthn-3 verifying assertion
  • CWE-347 · CWE-287

ライセンス

GNU Affero GPL v3.0。LICENSE を参照してください。ループバックラボ専用です。保証はありません。

ツールをダウンロード