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-setup-validate — phpMyAdmin 5.2.3 - Élevé - À distance - résiduel - setup/validate toujours accessible | Kitploit
Outils/GitHubGitHub/abraxas/phpmyadmin-setup-validate
Analyse des VulnérabilitésExploitationExploitation d'Applications WebSécurité WebTests d'IntrusionLabs et Pratique
GitHubabraxas/phpmyadmin-setup-validate

phpmyadmin-setup-validate

phpMyAdmin 5.2.3 - Élevé - À distance - résiduel - setup/validate toujours accessible

Voir le dépôt
il y a 4 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-setup-validate

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

phpmyadmin-setup-validate

Classe : SSRF Portée : Distante

phpMyAdmin 5.2.3 (tag RELEASE_5_2_3, commit 962857e). setup/index.php s'arrête lorsque config.inc.php est présent. setup/validate.php ne le fait pas. Il se charge toujours sous $isMinimumCommon, récupère un jeton CSRF depuis la page de connexion publique, et appelle Validator::testDBConnection -> mysqli_connect vers l'hôte, le port, l'utilisateur et le mot de passe du champ JSON values.

Un client non authentifié fait un GET sur / pour récupérer un cookie de session et un jeton, puis POSTe sur setup/validate.php id=Server avec Servers/1/host et Servers/1/port de son choix. L'hôte phpMyAdmin ouvre une poignée de main TCP MySQL vers cette adresse. C'est du SSRF via le protocole MySQL : 3306 interne, credential stuffing contre un serveur interne, un oracle de port à partir du timing et des erreurs mysqli. Ce n'est pas du SSRF de métadonnées HTTP à moins que quelque chose sur ce port ne parle MySQL. hide_db interpole également une regex utilisateur dans preg_match. Je n'ai pas exécuté ce chemin ReDoS dans ce lab.

L'image officielle phpmyadmin:5.2.3 supprime setup/. Ce résidu ne s'applique que lorsque ce répertoire est encore dans la racine web, ce qui est le résidu courant après une installation. Le lab restaure setup/ depuis l'archive 5.2.3 afin que l'épinglage corresponde à RELEASE_5_2_3.

PMASA-2016-44 / CVE-2016-6621 couvrait une partie du SSRF de setup. La vérification « désactiver setup quand la config existe » n'a jamais été appliquée à validate.php / config.php.

IDpas encore de CVE
ClasseSSRF (protocole MySQL)
PortéeDistante (non authentifiée si setup/ est encore accessible via le web)
CWECWE-918
CVSSÉlevé : 7.2 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:N
ProduitphpMyAdmin
Affecté5.2.3 tag RELEASE_5_2_3 (962857e) avec setup/ encore dans la docroot
AuthNon authentifiée. Jeton CSRF depuis la page de connexion publique. Pas de connexion MySQL.
LicenceGNU Affero GPL v3.0
Lab127.0.0.1:19230 uniquement

Ce qu'un attaquant peut faire

Quiconque peut atteindre une arborescence setup/ résiduelle peut faire ouvrir à l'hôte phpMyAdmin une connexion TCP au protocole MySQL vers un hôte et un port de son choix.

PrivilègeMéthode / cheminProuvé en lab ou déduit
Ouvrir un TCP depuis l'hôte PMA vers hôte:port de l'attaquant (intégrité de la connexion sortante ; reconnaissance de ce port)POST /setup/validate.php non authentifié id=Server avec Servers/1/host + Servers/1/port plus un jeton depuis GET /Prouvé en lab. L'oracle sur oracle:13306 a journalisé PMA-SETUP-VALIDATE-WITNESS depuis le conteneur PMA
Confirmer que l'interface setup est désactivée tandis que validate reste actifGET /setup/index.phpProuvé en lab. Le corps contient « setup is disabled » / configuration already exists
Échouer en mode fermé sans le jeton CSRF de la page de connexionMême POST, sans tokenProuvé en lab. Zéro hit sur l'oracle
Oracle de port / d'identifiants à partir des erreurs mysqli et du timingMême testDBConnectionDéduit. Le corps du lab était mysqli_connect(): (HY000/2006): MySQL server has gone away après que l'oracle a accepté puis fermé
Parler MySQL à un 3306 interne et essayer l'utilisateur/mot de passe postésMême mysqli_connectDéduit. Non pointé vers le service db du lab
ReDoS via validateRegex interpolant une regex utilisateurid=Servers/1/hide_dbDéduit. Non exercé

Fermé sur ce lab : SSRF de métadonnées HTTP (la poignée de main est MySQL, pas GET /latest/meta-data), connexion PMA non authentifiée, shell OS, et l'assistant setup lui-même (index.php reste désactivé). ÉCHEC si setup/ n'est pas déployé (défaut de l'image officielle).

Comment je l'ai trouvé

Huit recherches parallèles dans le code source de RELEASE_5_2_3. setup/index.php a le fatal config-exists. setup/validate.php ne l'a pas. setup/lib/common.inc.php définit $isMinimumCommon et ne cherche pas CONFIG_FILE.

Fausses pistes : traiter l'image officielle comme ce résidu (elle supprime setup/) ; POSTer sans le jeton de la page de connexion (zéro hit sur l'oracle) ; traiter cela comme du SSRF de métadonnées HTTP (la poignée de main est MySQL).

Lab

python3 phpmyadmin-setup-validate-Abraxas-Labs.py

ou

cd lab
./run.sh

Loopback uniquement : http://127.0.0.1:19230. Projet Compose phpmyadmin-setup-validate. Le Dockerfile restaure setup/ depuis l'archive 5.2.3 et exécute un oracle TCP sur le port 13306. Témoin PMA-SETUP-VALIDATE-WITNESS.

SUCCESS phpmyadmin-setup-validate how=live tcp=yes setup-index-disabled=yes PMA-SETUP-VALIDATE-WITNESS

Le correctif

Placer le fatal file_exists(CONFIG_FILE) dans setup/lib/common.inc.php afin que chaque script setup s'arrête. Restreindre les hôtes de testDBConnection. Ne pas construire les délimiteurs de preg_match à partir de chaînes utilisateur.

Références

  • github.com/phpmyadmin/phpmyadmin tag RELEASE_5_2_3 (962857e)
  • setup/index.php fatal config-exists
  • setup/validate.php pas cette vérification
  • libraries/classes/Config/Validator.php testDBConnection / mysqli_connect
  • Mêmes résidus d'épinglage : phpmyadmin-webauthn · phpmyadmin-pmadb-central-sqli · phpmyadmin-designer-json-sqli · phpmyadmin-csrf-sql
  • CWE-918

Licence

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

Télécharger l’outil