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
pgAdminOpendoor — Bancada de exploração e teste para CVE-2025-2945 | Kitploit
Ferramentas/GitHubGitHub/i3r1h0n/pgadminopendoor
Análise de VulnerabilidadesAnálise de CódigoExploraçãoExploração de Aplicações WebTestes de PenetraçãoAprendizado e Educação
GitHubi3r1h0n/pgadminopendoor

pgAdminOpendoor

Bancada de exploração e teste para CVE-2025-2945

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

pgAdminOpendoor (CVE-2025-2945)

Visão Geral

Esta é a minha pesquisa sobre o CVE-2025-2945. Este repositório inclui um ambiente de teste com PostgreSQL e pgAdmin vulnerável, e o exploit.

CVE

Links úteis:

  • Detalhes do NVD
  • Análise da WIZ
  • Metasploit

Detalhamento

No backend do pgAdmin, escrito em Python, existem dois endpoints sem sanitização adequada. Os endpoints são:

  • /sqleditor/query_tool/download - parâmetro query_commited
  • /cloud/deploy - parâmetro high_availability

Vejamos o código do sqleditor:

root@kitploit:~
for key, value in data.items():
    if key == 'query':
        sql = value
    if key == 'query_commited':
        query_commited = (
            eval(value) if isinstance(value, str) else value
        )

O que vemos aqui é que o valor de query_commited está sendo passado diretamente para a função eval(). Você pode ver a documentação do eval.

Veja também o código do pgacloud:

root@kitploit:~
def _create_google_postgresql_instance(self, args):
    credentials = self._get_credentials(self._scopes)
    service = discovery.build('sqladmin', 'v1beta4',
                              credentials=credentials)
    high_availability = \
        'REGIONAL' if eval(args.high_availability) else 'ZONAL'

O mesmo problema aqui.

Ainda assim, é necessário ter credenciais válidas e acesso ao pgAdmin para alcançar esses endpoints. Mas qualquer atacante que consiga acessá-lo também pode passar qualquer valor para o eval. O que equivale a executar qualquer one-liner em Python.

Exploração

A exploração é bastante direta. Veja o exploit/src/main.py. Não se esqueça de atualizar a configuração para obter um reverse shell.

Configuração do Stand

Para configurar o stand, execute:

root@kitploit:~
cd stand
docker compose up -d

E pronto. O pgAdmin agora está acessível em http://localhost:8080. As credenciais padrão são:

root@kitploit:~
[email protected]
admin

Sinta-se à vontade para editar o arquivo .env e o stand/init-db/01-init.sql.


produzido por I3r1h0n.

Baixar ferramenta