Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

FeedsContatoPrivacidade© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
phpmyadmin-auth-plugin-unquoted — phpMyAdmin 5.2.3 - Alta - Remota - SQLi - identificador do plugin de autenticação sem aspas | Kitploit
Ferramentas/GitHubGitHub/abraxas/phpmyadmin-auth-plugin-unquoted
Scanners de VulnerabilidadesAnálise de VulnerabilidadesExploraçãoExploração de Aplicações WebSegurança WebTestes de PenetraçãoSegurança de Banco de Dados
GitHub
abraxas/phpmyadmin-auth-plugin-unquoted

phpmyadmin-auth-plugin-unquoted

phpMyAdmin 5.2.3 - Alta - Remota - SQLi - identificador do plugin de autenticação sem aspas

Ver Repositório
há 4 diasAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

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 Alcance: Remoto

phpMyAdmin 5.2.3 (RELEASE_5_2_3 / 962857e) - phpMyAdmin

A alteração de senha está ativada por padrão. UserPassword.php copia o POST authentication_plugin para ALTER USER ... IDENTIFIED WITH sem allowlist e sem aspas. Nome de usuário, host e senha na mesma instrução passam por escapeString. No MySQL 8, a cláusula WITH é emitida quando o plugin enviado difere do atual.

Um usuário autenticado do phpMyAdmin injeta SQL em seu próprio ALTER USER através do formulário de alteração de senha. SQL extra no campo de plugin é SQL, não um nome de plugin.

IDainda sem CVE
ClasseSQLi
AlcanceRemoto (login autenticado por cookie; alteração de senha ativada)
CWECWE-89
CVSSAlto: 8.1 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
ProdutophpMyAdmin
Afetado5.2.3 tag RELEASE_5_2_3 (962857e4f63d42e38f11ff4d63f5e722018add76)
Autenticaçãologin autenticado por cookie. $cfg['ShowChgPassword'] padrão true. O tipo de autenticação não é config
LicençaGNU Affero GPL v3.0
Labapenas 127.0.0.1

O que um atacante pode fazer

Um usuário autenticado do phpMyAdmin pode injetar SQL em seu próprio ALTER USER através do formulário de alteração de senha.

PrivilégioMétodo / sinkReconhecimento / integridade / disponibilidadeComprovado em lab ou inferido
Enviar SQL extra em IDENTIFIED WITHPOST index.php?route=/user-password com authentication_pluginIntegridade da instrução que o phpMyAdmin constróiComprovado em lab. POST bruto sha256_password /*PMA-AUTH-PLUGIN-UNQUOTED-WITNESS*/ aparece sem aspas na caixa SQL
Fazer o MySQL interpretar esse SQL extra como SQLA mesma instrução chega ao mysqldIntegridade da conexão do usuárioComprovado em lab. O log geral manteve o plugin sha256_password e descartou o comentário. 1227 porque este usuário não tem CREATE USER
Cláusulas extras ou contas extras se o breakout for interpretadoMesmo sink; consultas empilhadas dependem do driverIntegridade de outras contasInferido. Este lab não executa uma segunda instrução nem cria outra conta
Mesma concatenação em adicionar/editar usuárioPrivileges.php IDENTIFIED WITH / MariaDB VIAIntegridade de instruções construídas pelo grantorIrmão inferido. O POST do lab é apenas de alteração de senha

Fechado neste caminho: uso não autenticado (login por cookie necessário), auth config (alteração de senha fica oculta), RCE, alteração de plugin sem GRANT bem-sucedida no MySQL 8 (1227 sem CREATE USER). Nome de usuário, host e senha permanecem escapados. A própria senha não precisa de GRANT; o que sobra é o campo de plugin sem aspas, não uma troca livre de plugin.

Mesmo pin: WebAuthn CustomServer leftover.

Como eu encontrei

Fixe no phpmyadmin/phpmyadmin RELEASE_5_2_3. PMASA-2025-1/2/3 já estão na 5.2.2. A alteração de senha ainda constrói:

return 'ALTER USER \'' . $dbi->escapeString($username)
    . '\'@\'' . $dbi->escapeString($hostname)
    . '\' IDENTIFIED WITH ' . $authPlugin . ' BY '

$authPlugin é $_POST['authentication_plugin']. MySQL 5.7.37+ e 8.0 omitem WITH a menos que o plugin tenha mudado. Envie um nome diferente via POST e a cláusula volta.

Caminhos errados já registrados: tratar o MySQL 1227 como falha do leftover (é a prova de que o SQL extra foi interpretado); alegar uma alteração de plugin sem GRANT no MySQL 8; tratar auth config como dentro do escopo; um reverse shell. Teatro.

Lab

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

Alvo apenas http://127.0.0.1:19260. Imagens phpmyadmin:5.2.3 e mysql:8.0. Projeto Compose phpmyadmin-auth-plugin-unquoted. A stack é desmontada após a execução.

Login por cookie como appuser. POST /user-password com authentication_plugin=sha256_password /*PMA-AUTH-PLUGIN-UNQUOTED-WITNESS*/. Caixa de consulta SQL do PMA: ALTER USER 'appuser'@'%' IDENTIFIED WITH sha256_password /*PMA-AUTH-PLUGIN-UNQUOTED-WITNESS*/ BY '***'. O log geral do MySQL interpreta o comentário e armazena IDENTIFIED WITH 'sha256_password'. O nome de usuário está entre aspas.

SUCCESS phpmyadmin-auth-plugin-unquoted how=live unquoted=yes escaped-user=yes plugin=sha256_password PMA-AUTH-PLUGIN-UNQUOTED-WITNESS

A correção

Faça allowlist dos nomes de plugin a partir de SHOW PLUGINS. Nunca interpole POST em IDENTIFIED WITH, VIA ou plugin=.

Referências

  • github.com/phpmyadmin/phpmyadmin tag RELEASE_5_2_3 (962857e4f63d42e38f11ff4d63f5e722018add76)
  • libraries/classes/UserPassword.php
  • libraries/classes/Server/Privileges.php
  • Mesmo pin: PMA-5.2.3-WebAuthn-2FA
  • CWE-89

Licença

GNU Affero GPL v3.0. Veja LICENSE. Apenas lab em loopback. Sem garantia.

Baixar ferramenta