Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
PMA-5.2.3-WebAuthn-2FA — phpMyAdmin - Hoch 8.1 - Authentifizierter POST /index.php - 2FA-Umgehung | Kitploit
Tools/GitHubGitHub/abraxas/pma-5.2.3-webauthn-2fa
SchwachstellenanalyseExploitationWebanwendungs-ExploitationWebsicherheitPenetrationstestsAuthentifizierungLabs & Praxis
GitHubabraxas/pma-5.2.3-webauthn-2fa

PMA-5.2.3-WebAuthn-2FA

phpMyAdmin - Hoch 8.1 - Authentifizierter POST /index.php - 2FA-Umgehung

Repository anzeigen
2vor 21 TagenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

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

Standard-Tarball. web-auth/webauthn-lib ist suggest / require-dev. composer install --no-dev installiert es nicht. createServer verwendet daher CustomServer. Diese Klasse parst response.signature (das Feld muss existieren und dekodierbar sein) und führt niemals eine COSE-Verifikation durch. Sie verwendet niemals den gespeicherten credentialPublicKey. Der eigene CustomServerTest des Produkts akzeptiert eine Assertion ohne öffentlichen Schlüssel.

Nach dem MySQL-Passwort ist eine unbrauchbare WebAuthn-Signatur, die dennoch zu Challenge, Origin, rpIdHash und user-present passt, eine vollständige phpMyAdmin-Sitzung. Das ist die Datenbank.

IDnoch keine CVE
CWECWE-347, CWE-287
CVSSHoch: 8.1 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
ProduktphpMyAdmin
Betroffen5.2.3 Standard-Tarball (web-auth/webauthn-lib nicht vorhanden)
AuthMySQL-Passwort, danach wird WebAuthn übersprungen
LizenzGNU Affero GPL v3.0
Labnur 127.0.0.1

Was ein Angreifer tun kann

Er benötigt weiterhin das MySQL-Passwort (Cookie-Login). Nach diesem Passwort sendet er per POST webauthn_request_response mit passender Challenge, passendem Origin-Host, rpIdHash, user-present, der registrierten Credential-ID und einer unbrauchbaren Signatur. Er landet in der normalen Oberfläche. Die 2FA ist weg. Das ist RCE auf den Daten, keine PHP-Shell auf dem Host.

Wenn Sie web-auth/webauthn-lib tatsächlich installiert haben, verwenden Sie WebauthnLibServer und sind von diesem Fehler nicht betroffen.

Wie ich es gefunden habe

Ich habe createServer gelesen, dann parseAndValidateAssertionResponse, dann den Unit-Test, der keinen öffentlichen Schlüssel übergibt. Die strukturellen Prüfungen sind echt: Credential-ID in allowCredentials, clientData.type == webauthn.get, Challenge stimmt mit der Sitzung überein, Origin-Host, rpIdHash, user-present. Die Signatur wird geparst und ignoriert.

Der erste Client, den ich darauf ansetzte, war höflich. Er sendete per POST ein WebAuthn-JSON ohne vorherige Passwort-Sitzung. Login-Seite. Er sendete per POST route=/ mit einer Signatur, die nicht einmal die strukturellen Prüfungen erfüllte. Man bleibt bei der 2FA. webauthn_request_response steht weiterhin im HTML.

Bereits dokumentierte Irrwege: Webauthn\Server vorhanden (falsche Server-Klasse); Challenge nicht die aus dieser Sitzung; Origin-Host stimmt nicht überein; user-present-Flag nicht gesetzt; Credential-ID nicht in allowCredentials; nicht authentifiziert, kein MySQL-Passwort; eine Reverse Shell. Theater. Das Erkennungsmerkmal ist das verschwundene 2FA-Feld und eine phpMyAdmin-Navigationsseite.

Client-Fehler sehen wie Produktfehler aus. Ein Helper, der http.client überschattet, sendet nie ein Paket. .recv() auf einer HTTPResponse ist nicht .read(). Ich erwähne das einmal, weil es Zeit gekostet hat und für eine Minute so aussah, als wäre phpMyAdmin in Ordnung.

Dann: POST mit Benutzername/Passwort/Token. Die Sitzungs-Challenge von der 2FA-Seite holen. Die gefälschte Assertion per POST senden. still_2fa=False landed=True. Das Lab-Dockerfile kopiert 5.2.3, führt composer install --no-dev aus und löscht dann vendor/web-auth, damit CustomServer zum Einsatz kommt. Das letzte php -r endet mit Exit-Code 1, wenn Webauthn\Server existiert. Das Image muss den Build fehlschlagen lassen, wenn die Bibliothek noch vorhanden ist. init.sql registriert WebAuthn-2FA für appuser ohne Hardware-Schlüssel.

Lab

cd lab
./run.sh

Ziele ausschließlich auf http://127.0.0.1:18080. Platziere phpMyAdmin 5.2.3 als src/ neben dem Dockerfile.

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

Die Behebung

Installiere web-auth/webauthn-lib, damit createServer die Bibliothek verwendet, oder verifiziere response.signature tatsächlich per COSE gegen den gespeicherten öffentlichen Schlüssel in CustomServer. Bis dahin deaktiviere die WebAuthn-2FA oder stelle dieses phpMyAdmin nicht öffentlich bereit.

Referenzen

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

Lizenz

GNU Affero GPL v3.0. Siehe LICENSE. Nur für Loopback-Labore. Keine Gewährleistung.

Tool herunterladen