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-designer-json-sqli — phpMyAdmin 5.2.3 – Hoch – Remote – SQLi – Designer JSON nicht bereinigte Bezeichner | Kitploit
Tools/GitHubGitHub/abraxas/phpmyadmin-designer-json-sqli
SchwachstellenanalyseExploitationWebanwendungs-ExploitationWebsicherheitPenetrationstestsDatenbanksicherheitLabs & Praxis
GitHub
abraxas/phpmyadmin-designer-json-sqli

phpmyadmin-designer-json-sqli

phpMyAdmin 5.2.3 – Hoch – Remote – SQLi – Designer JSON nicht bereinigte Bezeichner

Repository anzeigen
vor 3 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-designer-json-sqli

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

phpmyadmin-designer-json-sqli

Klasse: SQLi Reichweite: Remote

phpMyAdmin 5.2.3 (Tag RELEASE_5_2_3, Commit 962857e). Der Designer-AJAX save_setting_value json_encodet den Settings-Blob und konkateniert ihn in ein single-quoted UPDATE/INSERT auf den Control-User-Link. Der Benutzername wird escaped. Das JSON nicht. json_encode escaped kein einfaches Anführungszeichen.

Ein angemeldeter Benutzer POSTet index.php?route=/database/designer mit operation=save_setting_value und einem Anführungszeichen in value. queryAsControlUser führt diesen String dann als pma-Control-User gegen pma__designer_settings aus. Dieses Konto ist Configuration Storage, nicht die eingeloggte SQL-Box. phpMyAdmin 6.x wrappt diesen Blob in quoteString auf ControlUser. 5.2.3 konkateniert ihn weiterhin roh.

Ältere Designer-CVEs (2016-6616, 2019-11768, 2019-18622) betrafen den Benutzernamen / Datenbanknamen. Dieser Überrest ist die JSON-Spalte settings_data.

IDnoch keine CVE
KlasseSQLi (Control-User auf pma__designer_settings)
ReichweiteRemote (authentifizierter Cookie-Login; Designer + pma__designer_settings aktiviert)
CWECWE-89
CVSSHigh: 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 (962857e)
AuthAuthentifizierter Cookie-Login. Designer + pma__designer_settings aktiviert.
LizenzGNU Affero GPL v3.0
Labnur 127.0.0.1:19220

Was ein Angreifer tun kann

Ein angemeldeter phpMyAdmin-Benutzer, der den Designer öffnen kann, kann SQL als Control-User auf pma__designer_settings injizieren.

PrivilegMethode / PfadLab-bewiesen oder abgeleitet
Den Control-User-UPDATE/INSERT-String brechen (Integrität des pmadb-SQL)POST index.php?route=/database/designer operation=save_setting_value mit einem Anführungszeichen in valueLab-bewiesen. General Log: SET settings_data = '{"snap_line":"PMA-DESIGNER-JSON-SQLI-WITNESS'#" }' roh. quoteString fehlt
Eigenes settings_data truncaten, sodass es kein JSON mehr ist (Integrität der eigenen Zeile)Derselbe POST; # kommentiert den Rest des Statements ausLab-bewiesen. appuser-Blob enthält den Witness und ist kein gültiges JSON. Der saubere Save grid-ok ist weg
Designer-Zeilen anderer Benutzer ohne Stacked Queries überschreiben (Integrität der Opfer-Zeile)Dasselbe # kommentiert WHERE username = '...' ausLab-bewiesen. Seed victim {"keep":"safe"} wurde zum truncierten Witness-Blob
Zusätzliche Statements als Control-UserDieselbe Sink, falls der Control-mysqli-Link Multi-Query erlaubtAbgeleitet. Standard-mysqli::query ist Single-Statement. Hier nicht aktiviert
Andere pmadb-Tabellen erreichen (Bookmarks, History, pma__userconfig)Nur wenn Stacked Queries oder ein Write-Style-Breakout möglich istAbgeleitet. Der Control-User in diesem Lab hat nur DML auf phpmyadmin.*

In diesem Lab geschlossen: unauthentifizierter Zugriff, die eingeloggte appuser-SQL-Box (nur appdb; appuser hat kein GRANT auf phpmyadmin), OS-Shell und Stacked Queries. Das Feature ist ein No-Op, wenn pmadb / Designer-Settings aus ist (das ist ein FAIL, nicht dieser Überrest).

Wie ich es gefunden habe

Acht parallele Source-Hunts von RELEASE_5_2_3. saveSetting konkateniert json_encode in '...'. Der Benutzername ist escapeString. 6.x quoteStringt diesen Blob bereits. 5.2.3 nicht.

Irrwege: Injektion auf den Benutzernamen (er ist escaped); Erwartung eines #1064 (das # kommentiert den Rest aus, sodass MySQL das truncierte UPDATE akzeptiert); Stacked Queries als bewiesen behandeln (mysqli-Standard ist Single-Statement).

Lab

python3 phpmyadmin-designer-json-sqli-Abraxas-Labs.py

oder

cd lab
./run.sh

Nur Loopback: http://127.0.0.1:19220. Images phpmyadmin:5.2.3 und mysql:8.0. Compose-Projekt phpmyadmin-designer-json-sqli. Witness PMA-DESIGNER-JSON-SQLI-WITNESS.

SUCCESS phpmyadmin-designer-json-sqli version=5.2.3 how=live raw-concat=yes truncated=true sql-error=false quoteString=no PMA-DESIGNER-JSON-SQLI-WITNESS

Der Fix

quoteString(..., ControlUser) / escapeString auf den JSON-Blob, genau wie RecentFavoriteTable::saveToDb() und phpMyAdmin 6.x auf dieser Spalte. json_encode-Ausgabe nicht in ein single-quoted SQL-Literal setzen.

Referenzen

  • github.com/phpmyadmin/phpmyadmin Tag RELEASE_5_2_3 (962857e)
  • libraries/classes/Database/Designer/Common.php saveSetting
  • Controllers/Database/DesignerController.php POST operation=save_setting_value
  • Route GET|POST /database/designer
  • Überreste desselben Pins: phpmyadmin-webauthn · phpmyadmin-pmadb-central-sqli · phpmyadmin-setup-validate · phpmyadmin-csrf-sql
  • CWE-89

Lizenz

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

Tool herunterladen