Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
phpmyadmin-designer-json-sqli — phpMyAdmin 5.2.3 - Élevé - À distance - SQLi - Identifiants non assainis dans le JSON du Designer | Kitploit
Outils/GitHubGitHub/abraxas/phpmyadmin-designer-json-sqli
Analyse des VulnérabilitésExploitationExploitation d'Applications WebSécurité WebTests d'IntrusionSécurité des Bases de DonnéesLabs et Pratique
GitHub
abraxas/phpmyadmin-designer-json-sqli

phpmyadmin-designer-json-sqli

phpMyAdmin 5.2.3 - Élevé - À distance - SQLi - Identifiants non assainis dans le JSON du Designer

Voir le dépôt
20il y a 8 joursPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Abraxas Labs - phpmyadmin-designer-json-sqli

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

Write-up : https://abraxaslabs.tech/research/phpmyadmin-designer-json-sqli

phpmyadmin-designer-json-sqli

Classe : SQLi Portée : Distante

phpMyAdmin 5.2.3 (tag RELEASE_5_2_3, commit 962857e). L'AJAX Designer save_setting_value applique json_encode au blob de paramètres et le concatène dans un UPDATE/INSERT à guillemets simples sur le lien control-user. Le nom d'utilisateur est échappé. Le JSON ne l'est pas. json_encode n'échappe pas une apostrophe.

Un utilisateur authentifié envoie en POST index.php?route=/database/designer avec operation=save_setting_value et une apostrophe dans value. queryAsControlUser exécute ensuite cette chaîne en tant qu'utilisateur de contrôle pma sur pma__designer_settings. Ce compte correspond au stockage de configuration, et non à la base SQL de l'utilisateur connecté. phpMyAdmin 6.x encapsule ce blob dans quoteString sur ControlUser. La 5.2.3 le concatène toujours brut.

Les anciens CVE du designer (2016-6616, 2019-11768, 2019-18622) concernaient le nom d'utilisateur / le nom de base de données. Ce résidu concerne la colonne JSON settings_data.

IDpas encore de CVE
ClasseSQLi (control-user sur pma__designer_settings)
PortéeDistante (connexion authentifiée par cookie ; Designer + pma__designer_settings activés)
CWECWE-89
CVSSÉlevé : 8.1 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
ProduitphpMyAdmin
Affecté5.2.3 tag RELEASE_5_2_3 (962857e)
AuthConnexion authentifiée par cookie. Designer + pma__designer_settings activés.
LicenceGNU Affero GPL v3.0
Lab127.0.0.1:19220 uniquement

Ce qu'un attaquant peut faire

Un utilisateur phpMyAdmin authentifié capable d'ouvrir Designer peut injecter du SQL en tant que control user sur pma__designer_settings.

PrivilègeMéthode / cheminProuvé en lab ou déduit
Casser la chaîne UPDATE/INSERT du control-user (intégrité du SQL pmadb)POST index.php?route=/database/designer operation=save_setting_value avec une apostrophe dans valueProuvé en lab. Journal général : SET settings_data = '{"snap_line":"PMA-DESIGNER-JSON-SQLI-WITNESS'#" }' brut. quoteString absent
Tronquer son propre settings_data pour qu'il ne soit plus du JSON (intégrité de sa propre ligne)Même POST ; # commente le reste de l'instructionProuvé en lab. Le blob de appuser contient le témoin et n'est pas du JSON valide. Le save propre grid-ok a disparu
Écraser les lignes designer d'autres utilisateurs sans requêtes empilées (intégrité de la ligne de la victime)Même # commente WHERE username = '...'Prouvé en lab. La ligne seed victim {"keep":"safe"} est devenue le blob témoin tronqué
Instructions supplémentaires en tant que control userMême sink si le lien mysqli de contrôle autorise les multi-requêtesDéduit. Par défaut mysqli::query est mono-instruction. Non activé ici
Atteindre d'autres tables pmadb (bookmarks, history, pma__userconfig)Uniquement si des requêtes empilées ou une évasion en écriture sont possiblesDéduit. Le control user de ce lab ne dispose que de DML sur phpmyadmin.*

Fermé sur ce lab : accès non authentifié, la base SQL de l'appuser connecté (appdb uniquement ; appuser n'a aucun GRANT sur phpmyadmin), le shell OS et les requêtes empilées. La fonctionnalité est sans effet si pmadb / designer settings est désactivé (c'est un FAIL, pas ce résidu).

Comment je l'ai trouvé

Huit recherches parallèles dans le code source de RELEASE_5_2_3. saveSetting concatène json_encode dans '...'. Le nom d'utilisateur passe par escapeString. La 6.x applique déjà quoteString à ce blob. La 5.2.3 ne le fait pas.

Faux pas : injection sur le nom d'utilisateur (il est échappé) ; s'attendre à un #1064 (le # commente le reste, donc MySQL accepte l'UPDATE tronqué) ; considérer les requêtes empilées comme prouvées (par défaut, mysqli est en instruction unique).

Lab

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

ou

cd lab
./run.sh

Loopback uniquement : http://127.0.0.1:19220. Images phpmyadmin:5.2.3 et mysql:8.0. Projet Compose phpmyadmin-designer-json-sqli. Témoin 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

Le correctif

quoteString(..., ControlUser) / escapeString sur le blob JSON, comme RecentFavoriteTable::saveToDb() et phpMyAdmin 6.x sur cette colonne. Ne pas placer la sortie de json_encode à l'intérieur d'un littéral SQL entre guillemets simples.

Références

  • 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
  • Mêmes restes d'épinglage : phpmyadmin-webauthn · phpmyadmin-pmadb-central-sqli · phpmyadmin-setup-validate · phpmyadmin-csrf-sql
  • CWE-89

Licence

GNU Affero GPL v3.0. Voir LICENSE. Laboratoire en boucle locale uniquement. Aucune garantie.

Télécharger l’outil