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-webauthn — phpMyAdmin 5.2.3 - Élevé - À distance - Contournement de la 2FA - La cérémonie WebAuthn peut être contournée | Kitploit
Outils/GitHubGitHub/abraxas/phpmyadmin-webauthn
Analyse des VulnérabilitésExploitationExploitation d'Applications WebSécurité WebTests d'IntrusionAuthentificationLabs et Pratique
GitHubabraxas/phpmyadmin-webauthn

phpmyadmin-webauthn

phpMyAdmin 5.2.3 - Élevé - À distance - Contournement de la 2FA - La cérémonie WebAuthn peut être contournée

Voir le dépôt
9il 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-webauthn

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

phpmyadmin-webauthn

Classe : contournement de 2FA Portée : distante

phpMyAdmin 5.2.3 (tag RELEASE_5_2_3). Tarball par défaut. web-auth/webauthn-lib est en suggest / require-dev. composer install --no-dev ne l'installe pas. createServer utilise donc CustomServer. Cette classe analyse response.signature (le champ doit exister et se décoder) et ne la vérifie jamais en COSE. Elle n'utilise jamais la credentialPublicKey stockée. Le CustomServerTest du produit lui-même accepte une assertion sans clé publique.

Les contrôles structurels sont réels : identifiant de credential dans allowCredentials, clientData.type == webauthn.get, challenge correspondant à la session, hôte d'origine, rpIdHash, user-present. La signature est analysée et ignorée. Après le mot de passe MySQL, une signature WebAuthn bidon qui correspond quand même à ces champs donne une session phpMyAdmin complète. C'est la base de données. Si vous avez réellement installé web-auth/webauthn-lib, vous êtes sur WebauthnLibServer et pas sur ce bug.

IDpas encore de CVE
Classecontournement de 2FA / vérification de signature manquante
Portéedistante (connexion par cookie, puis WebAuthn ignoré)
CWECWE-347, CWE-287
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. Tarball par défaut / composer install --no-dev
Authconnexion par cookie (mot de passe MySQL), puis WebAuthn ignoré
LicenceGNU Affero GPL v3.0
Lab127.0.0.1:18080 uniquement

Ce qu'un attaquant peut faire

Il a toujours besoin du mot de passe MySQL (connexion par cookie). Après ce mot de passe, il POST webauthn_request_response avec un challenge correspondant, l'hôte d'origine, rpIdHash, user-present, l'identifiant de credential enrôlé, et une signature bidon. Il atterrit dans l'interface normale. La 2FA a disparu. C'est la base de données (SQL, utilisateurs, export), pas un shell PHP sur l'hôte.

Si vous avez réellement installé web-auth/webauthn-lib, vous êtes sur WebauthnLibServer et pas sur ce bug.

PrivilègeMéthode / cheminProuvé en lab ou déduit
Terminer la 2FA WebAuthn sans l'authentificateur (intégrité du second facteur)POST webauthn_request_response après le mot de passe, signature bidonProuvé en lab. still_2fa=False landed=True
PMA complet en tant que cet utilisateur MySQL (intégrité + reconnaissance de la machine SQL)même sessionProuvé en lab. Marqueurs de l'interface d'accueil présents
Contourner le mot de passe MySQLPOST non authentifiéProuvé en lab, fermé. Reste sur la page de connexion
Même contournement avec web-auth/webauthn-lib installéWebauthnLibServerFermé. Pas ce reliquat
RCE OS / reverse shellce reliquatFermé

Fermé sur ce reliquat : PMA non authentifié, un shell PHP sur l'hôte, et le fait de traiter un tarball qui a réellement installé web-auth/webauthn-lib comme ce bug.

Comment je l'ai trouvé

J'ai lu createServer, puis parseAndValidateAssertionResponse, puis le test unitaire qui ne passe pas de clé publique. Les contrôles structurels sont réels. La signature est analysée et ignorée.

Fausses pistes : POST de JSON WebAuthn sans session de mot de passe préalable ; une signature qui échouait aux contrôles structurels ; Webauthn\Server toujours présent (mauvaise classe de serveur) ; challenge ne provenant pas de cette session ; hôte d'origine non correspondant ; indicateur user-present à zéro ; identifiant de credential absent de allowCredentials.

Le Dockerfile du lab copie 5.2.3, composer install --no-dev, puis supprime vendor/web-auth pour que CustomServer soit celui en jeu. Le dernier php -r sort avec le code 1 si Webauthn\Server existe. init.sql enrôle la 2FA WebAuthn pour appuser sans clé matérielle. Le PoC POST la signature not-a-real-signature-PMA-WEBAUTHN-BYPASS.

Lab

Clonez le pin à côté du Dockerfile, puis exécutez :

cd lab
git clone --depth 1 --branch RELEASE_5_2_3 https://github.com/phpmyadmin/phpmyadmin.git src
./run.sh

ou depuis la racine du pack après ce clone :

python3 phpmyadmin-webauthn-Abraxas-Labs.py

Loopback uniquement : http://127.0.0.1:18080. Projet Compose pma-webauthn-lab. Pin RELEASE_5_2_3. Ne pas livrer src/. Témoin PMA-WEBAUTHN-BYPASS.

SUCCESS PMA-WEBAUTHN-BYPASS WebAuthn 2FA accepted with garbage signature

Le correctif

Vérifier authenticatorData || SHA-256(clientDataJSON) avec la clé publique COSE stockée ; lier userHandle ; appliquer signCount. Faire de web-auth/webauthn-lib une vraie dépendance et supprimer CustomServer, ou échouer en mode fermé si la bibliothèque est absente. En attendant, désactivez la 2FA WebAuthn ou n'exposez pas ce phpMyAdmin.

Références

  • github.com/phpmyadmin/phpmyadmin tag RELEASE_5_2_3
  • Plugins\TwoFactor\WebAuthn::createServer
  • CustomServer::parseAndValidateAssertionResponse
  • Reliquats du même pin : phpmyadmin-pmadb-central-sqli · phpmyadmin-designer-json-sqli · phpmyadmin-setup-validate · phpmyadmin-csrf-sql
  • CWE-347 · CWE-287

Licence

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

Télécharger l’outil