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-setup-validate — phpMyAdmin 5.2.3 - Alta - Remoto - remanescente - setup/validate ainda acessível | Kitploit
Ferramentas/GitHubGitHub/abraxas/phpmyadmin-setup-validate
Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebSegurança WebTestes de PenetraçãoLabs e Prática
GitHubabraxas/phpmyadmin-setup-validate

phpmyadmin-setup-validate

phpMyAdmin 5.2.3 - Alta - Remoto - remanescente - setup/validate ainda acessível

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-setup-validate

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

phpmyadmin-setup-validate

Classe: SSRF Alcance: Remoto

phpMyAdmin 5.2.3 (tag RELEASE_5_2_3, commit 962857e). setup/index.php morre quando config.inc.php está presente. setup/validate.php não. Ele ainda carrega sob $isMinimumCommon, pega um token CSRF da página de login pública e chama Validator::testDBConnection -> mysqli_connect para o host, porta, usuário e senha no campo JSON values.

Um cliente não autenticado faz GET em / para obter um cookie de sessão e token, depois faz POST em setup/validate.php id=Server com Servers/1/host e Servers/1/port de sua escolha. O host phpMyAdmin abre um handshake TCP MySQL para esse endereço. Isso é SSRF sobre o protocolo MySQL: 3306 interno, credential stuffing contra um servidor interno, um oráculo de porta a partir de timing e erros do mysqli. Não é SSRF de metadados HTTP a menos que algo naquela porta fale MySQL. hide_db também interpola uma regex de usuário em preg_match. Não executei esse caminho de ReDoS neste lab.

A imagem oficial phpmyadmin:5.2.3 deleta setup/. Esse resquício só se aplica quando esse diretório ainda está na raiz web, que é o resquício comum após uma instalação. O lab restaura setup/ a partir do tarball 5.2.3 para que o pin corresponda a RELEASE_5_2_3.

PMASA-2016-44 / CVE-2016-6621 cobriu parte do SSRF de setup. A verificação "desabilitar setup quando config existe" nunca foi aplicada a validate.php / config.php.

IDsem CVE ainda
ClasseSSRF (protocolo MySQL)
AlcanceRemoto (não autenticado se setup/ ainda é acessível pela web)
CWECWE-918
CVSSAlto: 7.2 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:N
ProdutophpMyAdmin
Afetado5.2.3 tag RELEASE_5_2_3 (962857e) com setup/ ainda no docroot
AuthNão autenticado. Token CSRF da página de login pública. Sem login MySQL.
LicençaGNU Affero GPL v3.0
Lab127.0.0.1:19230 apenas

O que um atacante pode fazer

Qualquer um que consiga alcançar uma árvore setup/ remanescente pode fazer o host phpMyAdmin abrir uma conexão TCP de protocolo MySQL para um host e porta de sua escolha.

PrivilégioMétodo / caminhoComprovado no lab ou inferido
Abrir TCP do host PMA para host:porta do atacante (integridade da conexão de saída; reconhecimento dessa porta)POST /setup/validate.php não autenticado id=Server com Servers/1/host + Servers/1/port mais um token de GET /Comprovado no lab. Oráculo em oracle:13306 registrou PMA-SETUP-VALIDATE-WITNESS do contêiner PMA
Confirmar que a UI de setup está desligada enquanto validate permanece ligadoGET /setup/index.phpComprovado no lab. Corpo contém "setup is disabled" / configuração já existe
Falhar de forma segura sem o token CSRF da página de loginMesmo POST, sem tokenComprovado no lab. Zero acertos no oráculo
Oráculo de porta / credenciais a partir de erros do mysqli e timingMesmo testDBConnectionInferido. Corpo do lab foi mysqli_connect(): (HY000/2006): MySQL server has gone away após o oráculo aceitar e então fechar
Falar MySQL com um 3306 interno e tentar usuário/senha postadosMesmo mysqli_connectInferido. Não apontado para o serviço db do lab
ReDoS via validateRegex interpolando regex de usuárioid=Servers/1/hide_dbInferido. Não exercitado

Fechado neste lab: SSRF de metadados HTTP (o handshake é MySQL, não GET /latest/meta-data), login PMA não autenticado, shell do SO e o próprio assistente de setup (index.php permanece desabilitado). FAIL se setup/ não estiver implantado (padrão da imagem oficial).

Como eu encontrei

Oito buscas paralelas no código-fonte de RELEASE_5_2_3. setup/index.php tem o fatal de config-exists. setup/validate.php não. setup/lib/common.inc.php define $isMinimumCommon e não procura por CONFIG_FILE.

Caminhos errados: tratar a imagem oficial como este resquício (ela deleta setup/); fazer POST sem o token da página de login (zero acertos no oráculo); tratar isso como SSRF de metadados HTTP (o handshake é MySQL).

Lab

python3 phpmyadmin-setup-validate-Abraxas-Labs.py

ou

cd lab
./run.sh

Apenas loopback: http://127.0.0.1:19230. Projeto Compose phpmyadmin-setup-validate. Dockerfile restaura setup/ a partir do tarball 5.2.3 e executa um oráculo TCP na porta 13306. Witness PMA-SETUP-VALIDATE-WITNESS.

SUCCESS phpmyadmin-setup-validate how=live tcp=yes setup-index-disabled=yes PMA-SETUP-VALIDATE-WITNESS

A correção

Coloque o fatal file_exists(CONFIG_FILE) em setup/lib/common.inc.php para que todo script de setup morra. Restrinja os hosts de testDBConnection. Não construa delimitadores de preg_match a partir de strings de usuário.

Referências

  • github.com/phpmyadmin/phpmyadmin tag RELEASE_5_2_3 (962857e)
  • setup/index.php fatal de config-exists
  • setup/validate.php sem essa verificação
  • libraries/classes/Config/Validator.php testDBConnection / mysqli_connect
  • Mesmos resquícios do pin: phpmyadmin-webauthn · phpmyadmin-pmadb-central-sqli · phpmyadmin-designer-json-sqli · phpmyadmin-csrf-sql
  • CWE-918

Licença

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

Baixar ferramenta