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
il y a 3 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

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 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 dans la même instruction passent par escapeString. Sur MySQL 8, la clause WITH est émise lorsque le plugin posté 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 par cookie authentifiée ; 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 par cookie authentifiée. $cfg['ShowChgPassword'] par défaut true. 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 boîte SQL
Faire parser ce SQL supplémentaire comme du SQL par MySQLLa même instruction atteint mysqldIntégrité de la connexion 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 un autre compte
Même concaténation sur l'ajout/édition d'utilisateurPrivileges.php IDENTIFIED WITH / MariaDB VIAIntégrité des instructions construites par le grantorFrère déduit. 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éussissant 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 propre n'a pas besoin de GRANT ; le résidu est le champ plugin non mis entre guillemets, 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é. Postez un nom différent et la clause réapparaît.

Fausses pistes déjà consignées : traiter MySQL 1227 comme un échec du résidu (c'est la preuve que le SQL supplémentaire a été parsé) ; prétendre à un changement de plugin sans GRANT sur MySQL 8 ; traiter l'auth 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

Cible 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*/. Boîte de requête SQL PMA : ALTER USER 'appuser'@'%' IDENTIFIED WITH sha256_password /*PMA-AUTH-PLUGIN-UNQUOTED-WITNESS*/ BY '***'. Le journal général MySQL parse 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

Liste d'autorisation des noms de plugins depuis SHOW PLUGINS. Ne jamais interpoler le 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 pin : PMA-5.2.3-WebAuthn-2FA
  • CWE-89

Licence

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

Télécharger l’outil