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-1094-PoC-Postgre-SQLi | Kitploit
Strumenti/GitHubGitHub/ishwardeepp/cve-2025-1094-poc-postgre-sqli
Analisi delle VulnerabilitàAnalisi del CodiceExploitSfruttamento di Applicazioni WebPenetration TestingApprendimento e FormazioneSicurezza dei DatabaseLab e Pratica

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
GitHub
ishwardeepp/cve-2025-1094-poc-postgre-sqli

CVE-2025-1094-PoC-Postgre-SQLi

Vedi Repository
621 anno faNon ancora revisionato

Analisi di CVE-2025-1094 e Configurazione dell'Emulazione

Questa analisi dettagliata, condotta il 14 marzo 2025, esplora CVE-2025-1094, una vulnerabilità ipotetica di SQL injection ad alta gravità in PostgreSQL, basata sulla configurazione di emulazione fornita e sull'esecuzione del proof-of-concept (PoC). L'analisi copre l'introduzione della vulnerabilità, la causa radice, i contributi dei file, le fasi del PoC e le mitigazioni, incorporando tutti i dettagli intricati del processo di emulazione.

Introduzione alla Vulnerabilità

CVE-2025-1094 è descritta come una vulnerabilità critica di SQL injection in PostgreSQL, che interessa le versioni precedenti alla 17.3, 16.7, 15.11, 14.16 e 13.19, con un punteggio base CVSS 3.1 di 8.1, indicando impatti significativi su riservatezza, integrità e disponibilità. Consente agli attaccanti di accedere a dati sensibili o eseguire codice remoto (RCE), ed è stata sfruttata in violazioni reali, come l'incidente BeyondTrust che ha colpito 17 clienti aziendali, riportato su BleepingComputer, e la violazione del Dipartimento del Tesoro degli Stati Uniti, dettagliata su The Register. L'emulazione, condotta il 14 marzo 2025, ha utilizzato una configurazione Docker con server_encoding=EUC_TW e client_encoding=BIG5, cruciale per attivare l'exploit. Il PoC ha comportato l'iniezione di un blocco DO per creare un large object, leggere /etc/passwd tramite pg_read_file, scriverlo nel large object con lo_put ed esportarlo in /tmp/payload utilizzando lo_export, confermando il ruolo della discrepanza di codifica nell'abilitare l'accesso non autorizzato ai file.

Analisi della Causa Radice

La causa radice è classificata sotto CWE-149: Improper Neutralization of Quoting Syntax, che comporta una gestione impropria nelle funzioni libpq di PostgreSQL—PQescapeLiteral(), PQescapeIdentifier(), PQescapeString() e PQescapeStringConn()—che non neutralizzano la sintassi di quotatura quando i risultati vengono utilizzati per costruire input per lo strumento a riga di comando psql. Ciò è aggravato quando client_encoding è impostato su BIG5 e server_encoding su EUC_TW, come visto nella nostra configurazione, consentendo SQL injection. L'emulazione ha richiesto EUC_TW e zh_TW.EUC_TW per creare la discrepanza, con problemi come la mancanza di supporto EUC_TW in psycopg2 risolti connettendosi con UTF8 e poi passando a BIG5. Il successo dell'exploit dipendeva dall'esecuzione di SQL grezzo tramite subprocess.run(["psql", ...]), bypassando la gestione sicura delle query, come dettagliato nei log.

Spiegazioni dei File e Contributi

Ogni file nella configurazione svolge un ruolo critico nell'emulazione di CVE-2025-1094. Di seguito una ripartizione dettagliata in forma tabellare:

Tabella: Riepilogo dei Contributi dei File

Fasi del Proof-of-Concept

Il PoC, eseguito il 14 marzo 2025, dimostra l'impatto dell'exploit attraverso le seguenti fasi, ciascuna con una spiegazione dettagliata:

  1. sudo docker compose up --build

    • Cosa Fa: Crea e avvia i servizi Docker Compose (db e app), creando container con immagini aggiornate se necessario, e li collega nella rete postgre_default. Garantisce che l'ambiente vulnerabile sia configurato, con db che utilizza la codifica EUC_TW e app che espone /vuln-endpoint sulla porta 5000, cruciale per la discrepanza di codifica dell'exploit e l'accesso all'endpoint.
    • Perché è Necessario: Configura l'ambiente necessario affinché l'exploit funzioni, garantendo che tutti i servizi siano in esecuzione e configurati correttamente.
  2. curl -X POST http://localhost:5000/vuln-endpoint -d "input=test"

    • Cosa Fa: Invia una richiesta POST all'endpoint dell'app Flask con input=test, verificando la connettività e la funzionalità di base, aspettandosi "Executed". Conferma che l'app è in esecuzione e può connettersi al database, assicurando che la configurazione sia pronta per l'exploit.
    • Perché è Necessario: Garantisce che l'endpoint sia accessibile e funzionante prima di procedere con l'exploit, allineandosi con le fasi di verifica del PoC.
    • Verifica della Configurazione

Video Dimostrativo

Video Dimostrativo su Vimeo
Clicca per vedere la dimostrazione del PoC su Vimeo.

Mitigazioni

Per mitigare CVE-2025-1094, si raccomandano le seguenti misure, basate sulle intuizioni dell'emulazione e sulle linee guida del settore:

  • Aggiornare alle Versioni Corrette: Aggiornare alle versioni di PostgreSQL 17.3, 16.7, 15.11, 14.16 o 13.19, disponibili nella Pagina di Download di PostgreSQL.
  • Validazione degli Input: Validare tutti gli input utente per la codifica UTF-8 per prevenire l'iniezione, come consigliato dal Blog di Armosec.
  • Limitare l'Accesso a psql: Limitare l'accesso a psql ai soli utenti fidati, riducendo la superficie di attacco.
  • Query Parametrizzate o Framework ORM: Utilizzare query parametrizzate o framework ORM per prevenire l'SQL injection, migliorando la sicurezza.
  • Autenticazione Multi-Fattore (MFA) e Controllo degli Accessi Basato sui Ruoli (RBAC): Implementare MFA e RBAC per migliorare il controllo degli accessi, secondo Ox Security Insights.
  • Monitoraggio dei Log: Monitorare regolarmente i log per anomalie o attività sospette per rilevare tempestivamente potenziali exploit.
  • Backup Robusto: Mantenere backup regolari e robusti del database per recuperarsi da potenziali violazioni, garantendo l'integrità dei dati.
Scarica lo strumento
FileCosa FaContributo al PoCPerché è Necessario
exploit.pyInvia una richiesta POST con un blocco DO per creare ed esportare un large object, leggendo /etc/passwd.Attiva l'SQL injection, sfrutta la discrepanza di codifica per eseguire comandi SQL arbitrari.Abilita l'esecuzione dell'exploit, critico per l'impatto del PoC.
app.pyApp Flask che espone /vuln-endpoint, esegue SQL grezzo tramite psql.Fornisce l'endpoint vulnerabile per l'exploit.Punto di ingresso per l'exploit, necessario per la dimostrazione della vulnerabilità.
init.sqlCrea una tabella di test con id VARCHAR(255) per input di stringhe.Imposta lo schema per l'iniezione, garantisce l'esecuzione del payload senza errori di tipo.Configurazione del database per l'exploit, essenziale per l'SQL injection.
DockerfileCrea il container dell'app Flask con le dipendenze necessarie.Crea un servizio app isolato per la distribuzione dell'endpoint.Distribuisce l'app vulnerabile, critico per la riproducibilità del PoC.
docker-compose.ymlDefinisce e collega i servizi db e app con configurazioni specifiche.Orchestra la configurazione, garantisce la discrepanza di codifica e le dipendenze tra servizi.Collega i servizi, essenziale per la configurazione dell'ambiente e l'isolamento.
Dockerfile.dbCrea il container PostgreSQL con codifica EUC_TW.Crea il database vulnerabile con la codifica richiesta.Configura il database con la codifica richiesta, critico per l'attivazione della vulnerabilità.

python3 cve-2025-1094-exploit.py

  • Cosa Fa: Esegue lo script di exploit, inviando una richiesta POST con un blocco DO per creare un large object, scrivere /etc/passwd al suo interno ed esportarlo in /tmp/payload, stampando lo stato di esecuzione. Attiva l'SQL injection, sfruttando la vulnerabilità per leggere /etc/passwd, critico per dimostrare l'impatto di CVE-2025-1094, come visto nei log con l'esportazione riuscita del file.
  • Perché è Necessario: Esegue l'exploit principale, mostrando come gli attaccanti possono accedere a dati sensibili, allineandosi con l'obiettivo del PoC di emulare attacchi reali.
  • Esecuzione dell'Exploit
  • sudo docker ps

    • Cosa Fa: Elenca i container in esecuzione, verificando che postgre-app-1 e postgre-db-1 siano attivi. Conferma la configurazione prima di eseguire l'exploit, assicurando che entrambi i servizi siano attivi, critico per l'affidabilità del PoC. Fornisce all'utente l'ID del container, necessario nei comandi successivi.
    • Perché è Necessario: Garantisce che tutti i servizi necessari siano in esecuzione, fornendo un punto di controllo prima delle ulteriori fasi di sfruttamento.
  • sudo docker exec -it bash -c "LC_ALL=C ls -l /tmp/payload && LC_ALL=C cat /tmp/payload"

    • Cosa Fa: Esegue un comando nel container postgre-db-1, elencando e visualizzando /tmp/payload con output in inglese, verificando il risultato dell'exploit (dovrebbe mostrare /etc/passwd). Conferma che l'exploit ha funzionato controllando il file, assicurando che /tmp/payload contenga dati sensibili, allineandosi con la verifica del PoC, ed evitando la distorsione della locale con LC_ALL=C.
    • Perché è Necessario: Verifica il successo dell'exploit controllando l'output, assicurando che i dati sensibili siano stati accessibili come previsto.
    • Validazione dell'Exploit
  • sudo docker exec -it psql -U postgres -d postgres -c "SELECT * FROM test;"

    • Cosa Fa: Esegue una query SQL nel container del database, selezionando tutto dalla tabella test, verificando l'INSERT dell'exploit (dovrebbe mostrare "Exploit ran with loid ..."). Conferma la modifica del database da parte dell'exploit, assicurando che il blocco DO sia stato eseguito, allineandosi con la verifica del PoC e validando la registrazione del loid.
    • Perché è Necessario: Garantisce che il database sia stato modificato come previsto, fornendo ulteriore verifica dell'impatto dell'exploit.
  • sudo docker compose down

    • Cosa Fa: Arresta e rimuove i container, le reti e i volumi, ripulendo l'ambiente. Garantisce che le risorse vengano liberate, mantenendo la pulizia del sistema, essenziale per l'esecuzione ripetibile del PoC senza residui.
    • Perché è Necessario: Ripulisce dopo i test, assicurando che nessun servizio o dato residuo influenzi i test futuri, mantenendo un ambiente controllato.