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
phpmyadmin-config-set-2fa — phpMyAdmin 5.2.3 – Hoch – Remote – 2FA – config/set löscht Zwei-Faktor | Kitploit
Tools/GitHubGitHub/abraxas/phpmyadmin-config-set-2fa
SchwachstellenanalyseExploitationWebanwendungs-ExploitationWebsicherheitPenetrationstestsAuthentifizierungLabs & Praxis
GitHubabraxas/phpmyadmin-config-set-2fa

phpmyadmin-config-set-2fa

phpMyAdmin 5.2.3 – Hoch – Remote – 2FA – config/set löscht Zwei-Faktor

Repository anzeigen
32vor 9 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 - phpmyadmin-config-set-2fa

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

Write-up: https://abraxaslabs.tech/research/phpmyadmin-config-set-2fa

phpmyadmin-config-set-2fa

Klasse: Privilegien-Rest / fehlende Step-up-Prüfung Reichweite: Remote

phpMyAdmin 5.2.3 (RELEASE_5_2_3 / 962857e) - phpMyAdmin

POST index.php?route=/config/set schreibt jede allowlistete Einstellung, einschließlich 2fa. UserPreferences::persistOption führt keine Validierung durch. Einstellungen -> Zwei-Faktor-Authentifizierung ruft weiterhin TwoFactor::check(true) auf, bevor der Faktor entfernt wird. /config/set tut das nicht.

Eine angemeldete Sitzung oder XSS/CSRF, das das Seitentoken per POST senden kann, kann key=2fa und value=null senden. Die nächste Passwort-Anmeldung verlangt weder TOTP noch WebAuthn noch eine Simple-Bestätigung. Dauerhafte Entfernung, kein Überspringen für eine einzelne Anfrage.

IDnoch keine CVE
KlassePrivilegien-Rest / fehlende Step-up-Prüfung
ReichweiteRemote (authentifizierte Cookie-Anmeldung; CSRF-Token erforderlich)
CWECWE-620
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 Tag RELEASE_5_2_3 (962857e4f63d42e38f11ff4d63f5e722018add76)
AuthCookie-Anmeldung. CSRF-Token erforderlich. Vervollständigt XSS oder CSRF zu einer dauerhaften 2FA-Entfernung
LizenzGNU Affero GPL v3.0
Labnur 127.0.0.1

Was ein Angreifer tun kann

2FA von einem phpMyAdmin-Konto entfernen, ohne TOTP, WebAuthn oder das Simple-Bestätigungsfeld vorzulegen. Die nächste Passwort-Anmeldung erfolgt nur mit Passwort. Vollständiges PMA als dieser MySQL-Benutzer (SQL, Benutzer, Export).

PrivilegMethode / PfadRecon / Integrität / VerfügbarkeitIm Lab nachgewiesen oder abgeleitet
2fa auf null persistieren und den zweiten Faktor aus pmadb entfernenAuthentifiziertes POST index.php?route=/config/set key=2fa value=null plus ein gültiges tokenIntegrität des Preference-StoreIm Lab nachgewiesen. success:true, pmadb config_data wurde zu []
Nach diesem Schreibvorgang nur mit Passwort anmeldenNeue Cookie-Sitzung, derselbe MySQL-BenutzerIntegrität des AnmeldepfadsIm Lab nachgewiesen. Kein 2fa_confirm, in der normalen UI gelandet
Die aktuelle Sitzung behalten, während 2FA für spätere Anmeldungen verschwindetDerselbe Handler; persistOption schreibt in den Store, nicht in das Live-Flag two_factor_checkIntegrität späterer SitzungenIm Lab nachgewiesen. Sitzung A blieb drin. Sitzung B hatte 2FA gesehen. Sitzung C nicht
Verkettung von gespeichertem XSS oder CSRF, das mit dem Seitentoken per POST senden kannReste aus derselben Review, nicht dieses LabIntegrität von 2FA nach einem Same-Origin-POSTAbgeleitet
2FA über Einstellungen entfernenPOST /preferences/two-factor 2fa_remove=1Integrität von 2FA über die dokumentierte UIIm Lab nachgewiesen geschlossen. Ohne den Faktor zeigt PMA die Bestätigungsseite und pmadb enthält weiterhin backend=simple

Bei diesem Rest geschlossen: unauthentifizierter Zugriff, Umgehen des MySQL-Passworts, OS-RCE, Lesen der pmadb-Zeilen anderer Benutzer. Ich brauchte Rest #1 (CustomServer-Signatur) nicht. Ich habe das MySQL-Passwort nicht umgangen.

Gleicher Pin: WebAuthn CustomServer leftover.

Wie ich es gefunden habe

Ich habe 5.2.3 nach PMASA-2025-1/2/3 gepinnt. Cookie-Authentifizierung, pmadb pma__userconfig. Das Lab aktiviert $cfg['DBG']['simple2fa'] nur, damit Settings das Simple-Backend ohne Hardware-Schlüssel registrieren kann. TOTP und WebAuthn liegen im selben 2fa-Präferenzschlüssel.

SetConfigController nimmt key und JSON-value entgegen und ruft Config::setUserValue auf. UserPreferences::persistOption ist dokumentiert mit „No validation is done!“ apply() nimmt 2fa in die Allowlist auf, damit der Schlüssel nicht als unbekannte Präferenz verworfen wird.

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

json_decode('null') ist PHP null. persistOption('2fa', null, $default) hebt dann config_data['2fa'] auf, weil der Standardwert für diesen Pfad ebenfalls null ist.

Settings -> Zwei-Faktor ist der Kontrast. TwoFactorController wird configure('') nicht ausführen, bis TwoFactor::check(true) true zurückgibt.

Bereits festgehaltene Fehlannahmen: Settings 2fa_remove als die Lücke zu behandeln (es verlangt weiterhin den Faktor); unauthentifizierten Zugriff zu behaupten; eine Umgehung des MySQL-Passworts zu behaupten; dies als Überbleibsel #1 (CustomServer) zu behandeln; eine Reverse Shell. Theater.

Lab

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

Ziel ist ausschließlich http://127.0.0.1:19280. Compose-Projekt phpmyadmin-config-set-2fa. Pin RELEASE_5_2_3. run.sh kopiert oder klont diesen Tag nach lab/src/ für das Image. Der Stack wird nach dem Lauf abgebaut.

Die Einstellungen hatten Simple 2FA aktiviert. Ein zweiter Browser rief die Seite 2fa_confirm auf. Ein POST auf 2fa_remove ohne den Faktor blieb auf der Bestätigungsoberfläche und ließ backend=simple in pmadb bestehen. Ein anschließender POST auf /config/set gab success:true zurück, pmadb wurde zu [], und die nächste Anmeldung landete in der normalen Oberfläche.

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

Die Behebung

2fa (und andere Auth-Schlüssel) auf /config/set verweigern. Vor jeder 2FA-Änderung TwoFactor::check(true) erfordern. Den Settings-Pfad als einzigen Schreibpfad beibehalten.

Referenzen

  • github.com/phpmyadmin/phpmyadmin Tag RELEASE_5_2_3 (962857e4f63d42e38f11ff4d63f5e722018add76)
  • libraries/classes/Controllers/Config/SetConfigController.php
  • libraries/classes/Config/UserPreferences.php
  • Gleicher Pin: PMA-5.2.3-WebAuthn-2FA
  • CWE-620

Lizenz

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

Tool herunterladen