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-auth-plugin-unquoted — phpMyAdmin 5.2.3 - Élevé - À distance - SQLi - identifiant du plugin d'authentification non échappé | Kitploit
Outils/GitHubGitHub/abraxas/phpmyadmin-auth-plugin-unquoted
Scanners de VulnérabilitésAnalyse des VulnérabilitésExploitationExploitation d'Applications WebSécurité WebTests d'IntrusionSécurité des Bases de Données
GitHub
abraxas/phpmyadmin-auth-plugin-unquoted

phpmyadmin-auth-plugin-unquoted

phpMyAdmin 5.2.3 - Élevé - À distance - SQLi - identifiant du plugin d'authentification non échappé

Voir le dépôt
29il y a 9 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-auth-plugin-unquoted

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

Write-up : https://abraxaslabs.tech/research/phpmyadmin-auth-plugin-unquoted

phpmyadmin-auth-plugin-unquoted

Classe : SQLi Portée : Distante

phpMyAdmin 5.2.3 (RELEASE_5_2_3 / 962857e) - phpMyAdmin

Le changement de mot de passe est activé par défaut. UserPassword.php copie le champ POST authentication_plugin dans ALTER USER ... IDENTIFIED WITH sans liste d'autorisation ni mise entre guillemets. Le nom d'utilisateur, l'hôte et le mot de passe de la même instruction passent par escapeString. Sur MySQL 8, la clause WITH est émise lorsque le plugin envoyé diffère du plugin actuel.

Un utilisateur phpMyAdmin connecté injecte du SQL dans son propre ALTER USER via le formulaire de changement de mot de passe. Le SQL supplémentaire dans le champ plugin est du SQL, pas un nom de plugin.

IDpas encore de CVE
ClasseSQLi
PortéeDistante (connexion authentifiée par cookie ; changement de mot de passe activé)
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 (962857e4f63d42e38f11ff4d63f5e722018add76)
Authconnexion authentifiée par cookie. $cfg['ShowChgPassword'] vaut true par défaut. Le type d'authentification n'est pas config
LicenceGNU Affero GPL v3.0
Lab127.0.0.1 uniquement

Ce qu'un attaquant peut faire

Un utilisateur phpMyAdmin connecté peut injecter du SQL dans son propre ALTER USER via le formulaire de changement de mot de passe.

PrivilègeMéthode / sinkReconnaissance / intégrité / disponibilitéProuvé en lab ou déduit
Envoyer du SQL supplémentaire dans IDENTIFIED WITHPOST index.php?route=/user-password avec authentication_pluginIntégrité de l'instruction construite par phpMyAdminProuvé en lab. Le POST brut sha256_password /*PMA-AUTH-PLUGIN-UNQUOTED-WITNESS*/ apparaît sans guillemets dans la zone SQL
Faire parser ce SQL supplémentaire comme du SQL par MySQLLa même instruction atteint mysqldIntégrité de la connexion de l'utilisateurProuvé en lab. Le journal général a conservé le plugin sha256_password et supprimé le commentaire. 1227 car cet utilisateur n'a pas CREATE USER
Clauses supplémentaires ou comptes supplémentaires si l'évasion est parséeMême sink ; les requêtes empilées dépendent du driverIntégrité d'autres comptesDéduit. Ce lab n'exécute pas de seconde instruction ni ne crée d'autre compte
Même concaténation sur l'ajout/édition d'utilisateurPrivileges.php IDENTIFIED WITH / MariaDB VIAIntégrité des instructions construites par le grantorVariante déduite. Le POST du lab concerne uniquement le changement de mot de passe

Fermé sur ce chemin : usage non authentifié (connexion par cookie requise), auth config (le changement de mot de passe est masqué), RCE, changement de plugin sans GRANT réussi sur MySQL 8 (1227 sans CREATE USER). Le nom d'utilisateur, l'hôte et le mot de passe restent échappés. Le mot de passe personnel ne nécessite pas de GRANT ; le résidu est le champ plugin non échappé, pas un échange de plugin libre.

Même pin : WebAuthn CustomServer leftover.

Comment je l'ai trouvé

J'ai épinglé phpmyadmin/phpmyadmin RELEASE_5_2_3. PMASA-2025-1/2/3 sont déjà dans 5.2.2. Le changement de mot de passe construit toujours :

return 'ALTER USER \'' . $dbi->escapeString($username)
    . '\'@\'' . $dbi->escapeString($hostname)
    . '\' IDENTIFIED WITH ' . $authPlugin . ' BY '

$authPlugin est $_POST['authentication_plugin']. MySQL 5.7.37+ et 8.0 omettent WITH sauf si le plugin a changé. Envoyez un autre nom en POST et la clause réapparaît.

Fausses pistes déjà consignées : traiter MySQL 1227 comme un échec du leftover (c'est la preuve que du SQL supplémentaire a été analysé) ; affirmer un changement de plugin sans GRANT sur MySQL 8 ; considérer l'auth par config comme dans le périmètre ; un reverse shell. Du théâtre.

Lab

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

Cibler uniquement http://127.0.0.1:19260. Images phpmyadmin:5.2.3 et mysql:8.0. Projet Compose phpmyadmin-auth-plugin-unquoted. La stack est démontée après l'exécution.

Connexion par cookie en tant que appuser. POST /user-password avec authentication_plugin=sha256_password /*PMA-AUTH-PLUGIN-UNQUOTED-WITNESS*/. Zone de requête SQL de PMA : ALTER USER 'appuser'@'%' IDENTIFIED WITH sha256_password /*PMA-AUTH-PLUGIN-UNQUOTED-WITNESS*/ BY '***'. Le journal général de MySQL analyse le commentaire et stocke IDENTIFIED WITH 'sha256_password'. Le nom d'utilisateur est entre guillemets.

SUCCESS phpmyadmin-auth-plugin-unquoted how=live unquoted=yes escaped-user=yes plugin=sha256_password PMA-AUTH-PLUGIN-UNQUOTED-WITNESS

Le correctif

Autoriser par liste blanche les noms de plugins issus de SHOW PLUGINS. Ne jamais interpoler POST dans IDENTIFIED WITH, VIA ou plugin=.

Références

  • github.com/phpmyadmin/phpmyadmin tag RELEASE_5_2_3 (962857e4f63d42e38f11ff4d63f5e722018add76)
  • libraries/classes/UserPassword.php
  • libraries/classes/Server/Privileges.php
  • Même version épinglée : PMA-5.2.3-WebAuthn-2FA
  • CWE-89

Licence

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

Télécharger l’outil