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-csrf-sql — phpMyAdmin 5.2.3 - Alta - Remoto - CSRF - remoção de token em /sql | Kitploit
Ferramentas/GitHubGitHub/abraxas/phpmyadmin-csrf-sql
Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebSegurança WebTestes de PenetraçãoLabs e Prática
GitHubabraxas/phpmyadmin-csrf-sql

phpmyadmin-csrf-sql

phpMyAdmin 5.2.3 - Alta - Remoto - CSRF - remoção de token em /sql

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-csrf-sql

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

phpmyadmin-csrf-sql

Classe: CSRF Alcance: Remoto

phpMyAdmin 5.2.3 (tag RELEASE_5_2_3, commit 962857e). Common.php constrói a requisição PSR-7 a partir de globals antes de checkTokenRequestParam. Em caso de incompatibilidade, Sanitize::removeRequestVars limpa $_POST e $_GET, mas não esse snapshot. $sql_query é então copiado de $request->getParsedBodyParam('sql_query'). POSTs AJAX abortam em caso de incompatibilidade de token. POSTs não-AJAX continuam. SqlController prefere o $_POST['sql_query'] removido e, caso contrário, mantém o global.

Uma vítima com cookie de sessão do phpMyAdmin é suficiente. Faça POST em index.php?route=/sql com sql_query e sem token válido, e sem ajax_request. O SELECT é executado como aquele usuário MySQL. O padrão CookieSameSite=Strict no 5.2.3 bloqueia muitos navegadores entre sites. Same-site, Lax, None ou autenticação HTTP ainda atingem. De qualquer forma, este é um controle CSRF quebrado.

IDsem CVE ainda
ClasseCSRF
AlcanceRemoto. O padrão CookieSameSite=Strict bloqueia muitos navegadores entre sites. Same-site / Lax / None / autenticação HTTP permanecem.
CWECWE-352
CVSSAlto: 8.1 CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:N
ProdutophpMyAdmin
Afetado5.2.3 tag RELEASE_5_2_3 (962857e)
AutenticaçãoCookie de sessão do phpMyAdmin da vítima (ou autenticação HTTP). Sem token CSRF válido.
LicençaGNU Affero GPL v3.0
Labapenas 127.0.0.1:19240

O que um atacante pode fazer

Qualquer um que consiga fazer o navegador da vítima enviar um POST para o phpMyAdmin sem ajax_request pode executar SQL como aquele usuário MySQL.

PrivilégioMétodo / caminhoComprovado em lab ou inferido
Executar SQL do atacante como a conta MySQL da vítima (integridade + reconhecimento daquele SQL box)POST index.php?route=/sql sql_query=... db=... sem token, sem ajax_requestComprovado em lab. O corpo dos resultados continha PMA-CSRF-SQL-WITNESS. O log geral mostrou o SELECT como appuser
Abortar o mesmo handler em AJAXMesmo POST com ajax_request=1Comprovado em lab. Token mismatch. Linha marcadora do INSERT ausente. O log geral não executou aquele INSERT
Ignorar handlers que apenas leem o $_POST removidoPOST /database/structure/drop-table sem tokenComprovado em lab. keepme ainda presente
Mesma lacuna em export (SaveDir), DROP/TRUNCATE de partição, bloqueio de conta, /config/set, criação de pmadbQualquer handler que leia o corpo PSR-7 após a remoçãoInferido. Não exercitado

Fechado neste lab: PMA não autenticado (login por cookie necessário primeiro), rotas AJAX (elas saem em caso de incompatibilidade), drop-table sem token, shell do SO. O padrão Strict SameSite significa que um formulário clássico entre sites muitas vezes não enviará o cookie; o resíduo ainda é uma verificação CSRF falha em same-site e em implantações Lax/None.

Como eu encontrei

Oito buscas paralelas no código-fonte de RELEASE_5_2_3. Common.php cria $request = createFromGlobals() antes de checkTokenRequestParam(). Em caso de incompatibilidade, Sanitize::removeRequestVars() limpa apenas $_POST/$_GET. Não-AJAX continua. SqlController usa o global $sql_query se $_POST estiver vazio. Rota GET|POST /sql.

Caminhos errados: tratar o AJAX /sql como o resíduo (ele aborta com Token mismatch); tratar o drop-table como o resíduo (esse handler apenas lê o $_POST removido); tratar o padrão Strict SameSite como "CSRF está fechado" (o controle ainda está quebrado; same-site / Lax / None permanecem).

Lab

python3 phpmyadmin-csrf-sql-Abraxas-Labs.py

ou

cd lab
./run.sh

Apenas loopback: http://127.0.0.1:19240. Imagens phpmyadmin:5.2.3 e mysql:8.0. Projeto Compose phpmyadmin-csrf-sql. O PoC é um POST loopback same-site (Strict SameSite ainda envia o cookie). Witness PMA-CSRF-SQL-WITNESS.

SUCCESS phpmyadmin-csrf-sql sql-ran=yes ajax-abort=yes drop-held=yes PMA-CSRF-SQL-WITNESS

A correção

Em caso de incompatibilidade, substitua a requisição por um corpo vazio, ou recuse todos os POSTs, não apenas AJAX. Não copie sql_query de uma requisição obsoleta. Falhe de forma fechada como no logout.

Referências

  • github.com/phpmyadmin/phpmyadmin tag RELEASE_5_2_3 (962857e)
  • libraries/classes/Common.php snapshot da requisição antes da remoção do token
  • Sanitize::removeRequestVars limpa apenas $_POST/$_GET
  • SqlController global $sql_query
  • Resíduos do mesmo pin: phpmyadmin-webauthn · phpmyadmin-pmadb-central-sqli · phpmyadmin-designer-json-sqli · phpmyadmin-setup-validate
  • CWE-352

Licença

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

Baixar ferramenta