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-issuperuser — phpMyAdmin 5.2.3 – Hoch – Remote – verbleibend – isSuperUser-Prüfung übersprungen | Kitploit
Tools/GitHubGitHub/abraxas/phpmyadmin-issuperuser
Privilege EscalationSchwachstellenanalyseExploitationWebanwendungs-ExploitationWebsicherheitPenetrationstestsLabs & Praxis
GitHubabraxas/phpmyadmin-issuperuser

phpmyadmin-issuperuser

phpMyAdmin 5.2.3 – Hoch – Remote – verbleibend – isSuperUser-Prüfung übersprungen

Repository anzeigen
7vor 8 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-issuperuser

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

Write-up: https://abraxaslabs.tech/research/phpmyadmin-issuperuser

phpmyadmin-issuperuser

Klasse: Privilegien-Rest Reichweite: Remote

phpMyAdmin 5.2.3 (RELEASE_5_2_3 / 962857e) - phpMyAdmin

DatabaseInterface::isSuperUser() ist keine SUPER-/SYSTEM_USER-Prüfung. Es ist SELECT 1 FROM mysql.user LIMIT 1. Jedes Konto, das mysql.user lesen kann, wird für den Rest der Sitzung als Superuser zwischengespeichert. $cfg['AllowUserDropDatabase'] ist standardmäßig auf false gesetzt. DestroyController, SqlController, ImportController und die Datenbankseite nehmen alle die isSuperUser-Abkürzung um dieses Flag herum.

Eine Umgehung der phpMyAdmin-Richtlinie, kein neues MySQL-Privileg. SELECT auf mysql.user plus DROP und kein SUPER reicht aus, um über PMA zu droppen.

IDnoch keine CVE
KlassePrivilegien-Rest
ReichweiteRemote (authentifizierter Cookie-Login als MySQL-Konto)
CWECWE-863
CVSSMittel: 6.3 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:L
ProduktphpMyAdmin
Betroffen5.2.3 Tag RELEASE_5_2_3 (962857e4f63d42e38f11ff4d63f5e722018add76)
Authauthentifizierter Cookie-Login als MySQL-Konto
LizenzGNU Affero GPL v3.0
Labnur 127.0.0.1

Was ein Angreifer tun kann

Ein angemeldetes MySQL-Konto, das mysql.user lesen kann (typisches Backup-/Monitoring-SELECT) plus DROP, ohne SUPER, wird als phpMyAdmin-Superuser behandelt.

PrivilegMethode / SinkRecon / Integrität / VerfügbarkeitIm Lab nachgewiesen oder abgeleitet
Umgehung von $cfg['AllowUserDropDatabase']=false und Anzeige von Drop auf der DatenbankseiteGET index.php?route=/server/databasesRecon der Drop-UIIm Lab nachgewiesen. bulkActionDropButton / selected_dbs[] vorhanden für selectuser; fehlend für plaindrop
Löschen einer Datenbank über den PMA-Destroy-HandlerPOST index.php?route=/server/databases/destroy selected_dbs[]=dropme ajax_request=trueIntegrität / Verfügbarkeit dieser DatenbankIm Lab nachgewiesen. JSON success:true, "1 database has been dropped successfully." dropme weg
Ausführen von DROP DATABASE aus der SQL-BoxPOST index.php?route=/sql sql_query=DROP DATABASE \dropme_sql``Integrität / Verfügbarkeit dieser DatenbankIm Lab nachgewiesen. Datenbank weg. Negativkonto erhält "DROP DATABASE statements are disabled."
Freischalten anderer PMA-Bildschirme, die auf isSuperUser() beschränkt sindPrivileges, replication, status, user groups, engines, binlog, variablesRecon / Integrität dieser BildschirmeAbgeleitet aus den Aufrufstellen. Nicht ausgeführt
Lesen von mysql.userMySQL-SELECT, das PMA als SUPER-Orakel verwendetRecon des Katalogs, den PMA fälschlich für SUPER hältIm Lab nachgewiesen. Diese Berechtigung ist es, die der Rest fälschlich für SUPER hält

In diesem Lab ausgeschlossen: echtes MySQL-SUPER (SHOW GRANTS bleibt USAGE + Tabellen-DROP + SELECT auf mysql.user). FILE, GRANT OPTION, Shutdown und ALL PRIVILEGES werden nicht gewährt. Ein Konto mit DROP, aber ohne SELECT auf mysql.user, kann über PMA weiterhin nicht droppen. Dies ist kein neues MySQL-Privileg und kein RCE.

Gleicher Pin: WebAuthn CustomServer leftover.

Wie ich es gefunden habe

I habe phpMyAdmin RELEASE_5_2_3 gepinnt. Privilegien-Gates, die wie SUPER klingen sollten, sollten wie SUPER aussehen. Dieses hier sieht wie ein Katalog-SELECT aus:

$result = $this->tryQuery('SELECT 1 FROM mysql.user LIMIT 1');
$isSuperUser = false;
if ($result) {
    $isSuperUser = (bool) $result->numRows();
}
SessionCache::set('is_superuser', $isSuperUser);

Gates, die dieses Flag im Zusammenhang mit AllowUserDropDatabase (Standard false) verwenden:

  • Controllers/Server/DatabasesController.php is_drop_allowed
  • Controllers/Server/Databases/DestroyController.php (AJAX destroy)
  • Controllers/Sql/SqlController.php / Sql::hasNoRightsToDropDatabase
  • Controllers/Import/ImportController.php
  • Controllers/Database/OperationsController.php

Bereits dokumentierte Fehlwege: echtes MySQL SUPER zu behaupten; ein Konto, das nur DROP darf, als den Bug zu behandeln (dieses Konto ist die Negativkontrolle); dies zu RCE aufzublähen; eine Reverse Shell. Theater.

Lab

python3 phpmyadmin-issuperuser-Abraxas-Labs.py
# or: cd lab && ./run.sh

Ziel nur http://127.0.0.1:19270. Images phpmyadmin:5.2.3 und mysql:8.0. Compose-Projekt phpmyadmin-issuperuser. $cfg['AllowUserDropDatabase']=false. Der Stack wird nach dem Lauf abgebaut.

selectuser hat SELECT auf mysql.user sowie DROP auf dropme / dropme_sql, kein SUPER. plaindrop hat nur DROP auf nodropme. Die Datenbanken-Seite zeigt Drop für selectuser an. POST /server/databases/destroy löscht dropme. POST /sql mit DROP DATABASE dropme_sql wird ebenfalls ausgeführt. plaindrop erhielt weiterhin das Error-JSON von destroy und „DROP DATABASE statements are disabled“ von /sql.

SUCCESS phpmyadmin-issuperuser drop-ui=yes destroy=ok sql-drop=ok grants-no-super=yes mysql.user-select=yes neg-drop-ui=no neg-destroy=denied PMA-ISSUPERUSER-WITNESS

Die Behebung

Teste echtes SUPER / SYSTEM_USER über INFORMATION_SCHEMA oder SHOW GRANTS. Behalte ein separates Flag „kann mysql.user lesen“ für die UI bei, die diesen Katalog tatsächlich benötigt. Cache kein Katalog-SELECT als Superuser.

Referenzen

  • github.com/phpmyadmin/phpmyadmin Tag RELEASE_5_2_3 (962857e4f63d42e38f11ff4d63f5e722018add76)
  • libraries/classes/DatabaseInterface.php isSuperUser()
  • Gleicher Pin: PMA-5.2.3-WebAuthn-2FA
  • CWE-863

Lizenz

GNU Affero GPL v3.0. Siehe LICENSE. Nur Loopback-Lab. Keine Gewährleistung.

Tool herunterladen