Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
phpmyadmin-webauthn — phpMyAdmin 5.2.3 - Alta - Remota - 2FA skip - La cerimonia WebAuthn può essere saltata | Kitploit
Strumenti/GitHubGitHub/abraxas/phpmyadmin-webauthn
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebSicurezza WebPenetration TestingAutenticazioneLab e Pratica
GitHubabraxas/phpmyadmin-webauthn

phpmyadmin-webauthn

phpMyAdmin 5.2.3 - Alta - Remota - 2FA skip - La cerimonia WebAuthn può essere saltata

Vedi Repository
93 giorni faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Abraxas Labs - phpmyadmin-webauthn

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

phpmyadmin-webauthn

Classe: bypass 2FA Reach: Remoto

phpMyAdmin 5.2.3 (tag RELEASE_5_2_3). Tarball predefinito. web-auth/webauthn-lib è suggest / require-dev. composer install --no-dev non lo installa. createServer usa quindi CustomServer. Quella classe analizza response.signature (il campo deve esistere e decodificarsi) e non lo verifica mai tramite COSE. Non usa mai la credentialPublicKey memorizzata. Il CustomServerTest del prodotto stesso accetta un'asserzione senza chiave pubblica.

I controlli strutturali sono reali: credential id in allowCredentials, clientData.type == webauthn.get, challenge corrispondente alla sessione, host di origine, rpIdHash, user-present. La firma viene analizzata e ignorata. Dopo la password MySQL, una firma WebAuthn spazzatura che corrisponde comunque a quei campi è una sessione phpMyAdmin completa. Quello è il database. Se hai effettivamente installato web-auth/webauthn-lib, sei su WebauthnLibServer e non su questo bug.

IDnessuna CVE al momento
Classebypass 2FA / verifica della firma mancante
ReachRemoto (login tramite cookie, poi WebAuthn saltato)
CWECWE-347, CWE-287
CVSSAlto: 8.1 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
ProdottophpMyAdmin
Affetto5.2.3 tag RELEASE_5_2_3. Tarball predefinito / composer install --no-dev
AuthLogin tramite cookie (password MySQL), poi WebAuthn saltato
LicenzaGNU Affero GPL v3.0
Labsolo 127.0.0.1:18080

Cosa può fare un attaccante

Ha comunque bisogno della password MySQL (login tramite cookie). Dopo quella password, invia in POST webauthn_request_response con challenge corrispondente, host di origine, rpIdHash, user-present, credential id registrato e una firma spazzatura. Atterra nella normale interfaccia. Il 2FA non c'è più. Quello è il database (SQL, utenti, export), non una shell PHP sull'host.

Se hai effettivamente installato web-auth/webauthn-lib, sei su WebauthnLibServer e non su questo bug.

PrivilegioMetodo / percorsoProvato in lab o dedotto
Completare il 2FA WebAuthn senza l'autenticatore (integrità del secondo fattore)POST webauthn_request_response dopo la password, firma spazzaturaProvato in lab. still_2fa=False landed=True
PMA completo come quell'utente MySQL (integrità + ricognizione del box SQL)stessa sessioneProvato in lab. Marcatori della UI home presenti
Saltare la password MySQLPOST non autenticatoProvato in lab, chiuso. Rimane sulla pagina di login
Stesso bypass con web-auth/webauthn-lib installatoWebauthnLibServerChiuso. Non è questo residuo
RCE sul sistema operativo / reverse shellquesto residuoChiuso

Chiusi su questo residuo: PMA non autenticato, una shell PHP sull'host e il trattare un tarball che ha effettivamente installato web-auth/webauthn-lib come questo bug.

Come l'ho trovato

Ho letto createServer, poi parseAndValidateAssertionResponse, poi lo unit test che non passa una chiave pubblica. I controlli strutturali sono reali. La firma viene analizzata e ignorata.

Vicoli ciechi: inviare in POST il JSON WebAuthn senza una precedente sessione con password; una firma che non superava i controlli strutturali; Webauthn\Server ancora presente (classe server sbagliata); challenge non proveniente da questa sessione; host di origine non corrispondente; flag user-present non impostato; credential id non in allowCredentials.

Il Dockerfile del lab copia la 5.2.3, esegue composer install --no-dev, poi elimina vendor/web-auth così che CustomServer sia quello in gioco. L'ultimo php -r esce con 1 se Webauthn\Server esiste. init.sql registra il 2FA WebAuthn per appuser senza una chiave hardware. Il PoC invia in POST la firma not-a-real-signature-PMA-WEBAUTHN-BYPASS.

Lab

Clona il pin accanto al Dockerfile, poi esegui:

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

oppure dalla radice del pack dopo quel clone:

python3 phpmyadmin-webauthn-Abraxas-Labs.py

Solo loopback: http://127.0.0.1:18080. Progetto Compose pma-webauthn-lab. Pin RELEASE_5_2_3. Non distribuire src/. Witness PMA-WEBAUTHN-BYPASS.

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

La correzione

Verifica authenticatorData || SHA-256(clientDataJSON) con la chiave pubblica COSE memorizzata; vincola userHandle; applica signCount. Rendi web-auth/webauthn-lib una dipendenza reale ed elimina CustomServer, oppure fallisci in modo sicuro se la libreria manca. Fino ad allora, disabilita il 2FA WebAuthn o non esporre questo phpMyAdmin.

Riferimenti

  • github.com/phpmyadmin/phpmyadmin tag RELEASE_5_2_3
  • Plugins\TwoFactor\WebAuthn::createServer
  • CustomServer::parseAndValidateAssertionResponse
  • Residui dello stesso pin: phpmyadmin-pmadb-central-sqli · phpmyadmin-designer-json-sqli · phpmyadmin-setup-validate · phpmyadmin-csrf-sql
  • CWE-347 · CWE-287

Licenza

GNU Affero GPL v3.0. Vedi LICENSE. Solo lab su loopback. Nessuna garanzia.

Scarica lo strumento