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-issuperuser — phpMyAdmin 5.2.3 - Alta - Remota - leftover - controllo isSuperUser saltato | Kitploit
Strumenti/GitHubGitHub/abraxas/phpmyadmin-issuperuser
Escalation di PrivilegiAnalisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebSicurezza WebPenetration TestingLab e Pratica
GitHubabraxas/phpmyadmin-issuperuser

phpmyadmin-issuperuser

phpMyAdmin 5.2.3 - Alta - Remota - leftover - controllo isSuperUser saltato

Vedi Repository
33 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-issuperuser

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

phpmyadmin-issuperuser

Classe: Privilegio residuo Raggiungibilità: Remota

phpMyAdmin 5.2.3 (RELEASE_5_2_3 / 962857e) - phpMyAdmin

DatabaseInterface::isSuperUser() non è un controllo SUPER / SYSTEM_USER. È SELECT 1 FROM mysql.user LIMIT 1. Qualsiasi account in grado di leggere mysql.user viene memorizzato nella cache come superuser per il resto della sessione. $cfg['AllowUserDropDatabase'] è impostato su false per impostazione predefinita. DestroyController, SqlController, ImportController e la pagina dei database sfruttano tutti la scorciatoia isSuperUser aggirando quel flag.

Un bypass delle policy di phpMyAdmin, non un nuovo privilegio MySQL. SELECT su mysql.user più DROP, e nessun SUPER, è sufficiente per eseguire Drop tramite PMA.

IDnessuna CVE al momento
ClassePrivilegio residuo
RaggiungibilitàRemota (login autenticato tramite cookie come account MySQL)
CWECWE-863
CVSSMedio: 6.3 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:L
ProdottophpMyAdmin
Affetto5.2.3 tag RELEASE_5_2_3 (962857e4f63d42e38f11ff4d63f5e722018add76)
Authlogin autenticato tramite cookie come account MySQL
LicenzaGNU Affero GPL v3.0
Labsolo 127.0.0.1

Cosa può fare un attaccante

Un account MySQL autenticato in grado di leggere mysql.user (tipico SELECT di backup/monitoraggio) più DROP, senza SUPER, viene trattato come superuser di phpMyAdmin.

PrivilegioMetodo / sinkRicognizione / integrità / disponibilitàProvato in lab o dedotto
Bypass di $cfg['AllowUserDropDatabase']=false e visualizzazione di Drop nella pagina dei databaseGET index.php?route=/server/databasesRicognizione dell'interfaccia DropProvato in lab. bulkActionDropButton / selected_dbs[] presenti per selectuser; assenti per plaindrop
Drop di un database tramite l'handler destroy di PMAPOST index.php?route=/server/databases/destroy selected_dbs[]=dropme ajax_request=trueIntegrità / disponibilità di quel databaseProvato in lab. JSON success:true, "1 database has been dropped successfully." dropme eliminato
Esecuzione di DROP DATABASE dalla casella SQLPOST index.php?route=/sql sql_query=DROP DATABASE \dropme_sql``Integrità / disponibilità di quel databaseProvato in lab. Database eliminato. L'account negativo riceve "DROP DATABASE statements are disabled."
Sblocco di altre schermate PMA protette da isSuperUser()Privilegi, replica, stato, gruppi utente, engine, binlog, variabiliRicognizione / integrità di quelle schermateDedotto dai call site. Non testato
Lettura di mysql.userSELECT MySQL che PMA usa come oracolo SUPERRicognizione del catalogo che PMA scambia per SUPERProvato in lab. Quel grant è ciò che il residuo scambia per SUPER

Chiuso su questo lab: vero SUPER MySQL (SHOW GRANTS rimane USAGE + DROP sulla tabella + SELECT su mysql.user). FILE, GRANT OPTION, shutdown e ALL PRIVILEGES non sono concessi. Un account con DROP ma senza SELECT su mysql.user non può comunque eseguire drop tramite PMA. Non è un nuovo privilegio MySQL e non è RCE.

Stesso pin: WebAuthn CustomServer leftover.

Come l'ho trovato

Ho fissato phpMyAdmin RELEASE_5_2_3. I gate sui privilegi che parlano come SUPER dovrebbero comportarsi come SUPER. Questo si comporta come un SELECT sul catalogo:

$result = $this->tryQuery('SELECT 1 FROM mysql.user LIMIT 1');
$isSuperUser = false;
if ($result) {
    $isSuperUser = (bool) $result->numRows();
}
SessionCache::set('is_superuser', $isSuperUser);

Gate che usano questo flag attorno a AllowUserDropDatabase (default false):

  • Controllers/Server/DatabasesController.php is_drop_allowed
  • Controllers/Server/Databases/DestroyController.php (destroy AJAX)
  • Controllers/Sql/SqlController.php / Sql::hasNoRightsToDropDatabase
  • Controllers/Import/ImportController.php
  • Controllers/Database/OperationsController.php

Vicoli ciechi già registrati: dichiarare un vero SUPER MySQL; trattare un account con solo DROP come il bug (quell'account è il controllo negativo); gonfiare la cosa a RCE; una reverse shell. Teatro.

Lab

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

Target solo http://127.0.0.1:19270. Immagini phpmyadmin:5.2.3 e mysql:8.0. Progetto Compose phpmyadmin-issuperuser. $cfg['AllowUserDropDatabase']=false. Lo stack viene smontato dopo l'esecuzione.

selectuser ha SELECT su mysql.user più DROP su dropme / dropme_sql, nessun SUPER. plaindrop ha DROP solo su nodropme. La pagina dei database mostra Drop per selectuser. POST /server/databases/destroy elimina dropme. Anche POST /sql con DROP DATABASE dropme_sql viene eseguito. plaindrop ha comunque ricevuto il JSON di errore da destroy e "DROP DATABASE statements are disabled" da /sql.

SUCCESS phpmyadmin-issuperuser drop-ui=yes destroy=ok sql-drop=ok grants-no-super=yes mysql.user-select=yes neg-drop-ui=no neg-destroy=denied PMA-ISSUPERUSER-WITNESS

La correzione

Verificare il vero SUPER / SYSTEM_USER tramite INFORMATION_SCHEMA o SHOW GRANTS. Mantenere un flag separato "può leggere mysql.user" per l'interfaccia che necessita effettivamente di quel catalogo. Non memorizzare nella cache un SELECT sul catalogo come superuser.

Riferimenti

  • github.com/phpmyadmin/phpmyadmin tag RELEASE_5_2_3 (962857e4f63d42e38f11ff4d63f5e722018add76)
  • libraries/classes/DatabaseInterface.php isSuperUser()
  • Stesso pin: PMA-5.2.3-WebAuthn-2FA
  • CWE-863

Licenza

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

Scarica lo strumento