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-pmadb-central-sqli — phpMyAdmin 5.2.3 - Alta - Remota - SQLi - colunas centrais pmadb consulta residual | Kitploit
Ferramentas/GitHubGitHub/abraxas/phpmyadmin-pmadb-central-sqli
Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebSegurança WebTestes de PenetraçãoLabs e Prática
GitHubabraxas/phpmyadmin-pmadb-central-sqli

phpmyadmin-pmadb-central-sqli

phpMyAdmin 5.2.3 - Alta - Remota - SQLi - colunas centrais pmadb consulta residual

Ver Repositório
3há 8 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-pmadb-central-sqli

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

Write-up: https://abraxaslabs.tech/research/phpmyadmin-pmadb-central-sqli

phpmyadmin-pmadb-central-sqli

Classe: SQLi Alcance: Remoto

phpMyAdmin 5.2.3 (tag RELEASE_5_2_3, commit 962857e). As colunas centrais gravam col_extra concatenando o POST extra e attribute em um literal SQL entre aspas simples no link do usuário de controle. Os campos vizinhos passam por escapeString. Esses dois não passam.

Um usuário autenticado envia POST para index.php?route=/database/central-columns com multi_edit_central_column_save=1 e uma aspa em field_attribute (ou col_extra). getInsertQuery / updateOneColumn então executam essa string como o usuário de controle do pma contra pma__central_columns. Essa conta é o usuário de armazenamento de configuração, não o SQL box autenticado.

CVE-2016-5703 era o nome do banco de dados nas colunas centrais. Esses campos extra e attribute não eram esse bug.

IDsem CVE ainda
ClasseSQLi (usuário de controle em pma__central_columns)
AlcanceRemoto (login autenticado por cookie; colunas centrais do pmadb habilitadas)
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 (962857e)
AutenticaçãoLogin autenticado por cookie. Colunas centrais do pmadb habilitadas.
LicençaGNU Affero GPL v3.0
Labapenas 127.0.0.1:19210

O que um atacante pode fazer

Um usuário autenticado do phpMyAdmin que consegue abrir Colunas centrais pode injetar SQL como o usuário de controle em pma__central_columns.

PrivilégioMétodo / caminhoComprovado em lab ou inferido
Quebrar a string INSERT/UPDATE do usuário de controle (integridade do SQL do pmadb)POST index.php?route=/database/central-columns multi_edit_central_column_save=1 com uma aspa em field_attribute / col_extraComprovado em lab. Erro JSON #1064. Testemunha PMA-PMADB-CENTRAL-SQLI-WITNESS no erro do usuário de controle
Manter campos vizinhos in-bandMesmo POST, aspa em field_nameComprovado em lab. Linha armazenada como neg'col. escapeString resistiu
Ler ou sobrescrever linhas de colunas centrais de outros usuáriosMesmo sink, uma vez que a string seja fechadaInferido. O lab para no erro de sintaxe; sem query empilhada
Comandos extras como o usuário de controleMesmo sink se o link mysqli de controle permitir multi-queryInferido. O padrão de mysqli::query é single-statement. Não habilitado aqui
Alcançar outras tabelas do pmadb (bookmarks, histórico, pma__userconfig)Apenas se queries empilhadas ou uma escrita no estilo INTO forem possíveisInferido. O usuário de controle neste lab tem apenas DML em phpmyadmin.*

Fechado neste lab: acesso não autenticado, o SQL box do appuser autenticado (apenas appdb), shell do SO e queries empilhadas. O recurso não faz nada se pmadb / colunas centrais estiverem desligados (isso é um FAIL, não este resíduo).

Como eu encontrei

Oito buscas paralelas no código-fonte de RELEASE_5_2_3. Campos vizinhos em CentralColumns.php passam por escapeString. Extra e attribute são implode em um literal entre aspas simples. CVE-2016-5703 era o nome do banco de dados, não essas colunas.

Caminhos errados: tratar uma aspa em field_name como o resíduo (ela é armazenada como neg'col; esse é o negativo); esperar que o log geral mostrasse a testemunha não escapada (o INSERT morre com #1064 antes de uma escrita bem-sucedida); tratar pmadb desligado como este resíduo (o recurso não faz nada).

Lab

python3 phpmyadmin-pmadb-central-sqli-Abraxas-Labs.py

ou

cd lab
./run.sh

Apenas loopback: http://127.0.0.1:19210. Imagens phpmyadmin:5.2.3 e mysql:8.0. Projeto Compose phpmyadmin-pmadb-central-sqli. Witness PMA-PMADB-CENTRAL-SQLI-WITNESS.

SUCCESS phpmyadmin-pmadb-central-sqli how=live insert-syntax=yes field-name-escaped=yes general-log-unescaped=false error-has-witness=true PMA-PMADB-CENTRAL-SQLI-WITNESS

A correção

escapeString / quoteString(..., CONNECT_CONTROL) em extra e attribute. Allowlist auto_increment, UNSIGNED, BINARY, UNSIGNED ZEROFILL e on update CURRENT_TIMESTAMP. O quoteString do phpMyAdmin 6.x no blob JSON do designer é a forma corrigida para esta classe de concatenação no pmadb.

Referências

  • github.com/phpmyadmin/phpmyadmin tag RELEASE_5_2_3 (962857e)
  • libraries/classes/Database/CentralColumns.php getInsertQuery / updateOneColumn
  • Controllers/Database/CentralColumnsController.php POST multi_edit_central_column_save
  • Rota GET|POST /database/central-columns
  • Sobras do mesmo pin: phpmyadmin-webauthn · phpmyadmin-designer-json-sqli · phpmyadmin-setup-validate · phpmyadmin-csrf-sql
  • CWE-89

Licença

GNU Affero GPL v3.0. Consulte LICENSE. Apenas para laboratório em loopback. Sem garantias.

Baixar ferramenta