SQL-Injektion
Total Page:16
File Type:pdf, Size:1020Kb
Hochschule Wismar Fakultät für Ingenieurwissenschaften Bereich Elektrotechnik und Informatik Seminar: Datenbanken II - Forensik in Datenbanken Dozentin: Prof. Dr.-Ing. Antje Raab-Düsterhöft Wintersemester 2020/2021 Ort, Datum der Abgabe: Nördlingen, 07. Feburar 2021 SQL-Injektion Pascal Granzer Adam Kulauzovic BA Forensic Engineering 5. Fachsemester Inhaltsverzeichnis 1. Aufgabenstellung .......................................................................................... 1 Aufgabe 1 ..................................................................................................... 1 Aufgabe 2 ..................................................................................................... 1 Aufgabe 3 ..................................................................................................... 1 2. Vorbereitungen ............................................................................................. 2 Aktualisierung der Gast-Erweiterungen ........................................................ 4 2. SQL-Injektion Beispiele in der Hense-VM .................................................... 5 2.1. MySQL ................................................................................................... 6 Ausspähen von Daten ............................................................................... 6 Veränderung von Daten .......................................................................... 11 Datenbank-Server verändern .................................................................. 15 Zugriff auf das Filesystem ....................................................................... 17 Einschleusen beliebigen Codes .............................................................. 19 2.2. Postgres ............................................................................................... 20 Ausspähen von Daten ............................................................................. 20 Veränderung von Daten .......................................................................... 25 Datenbank-Server verändern .................................................................. 28 Zugriff auf das Filesystem ....................................................................... 30 Einschleusen beliebigen Codes .............................................................. 32 3. Eigene SQL-Injektion Beispiele .................................................................. 34 3.1. Klonen der VM ..................................................................................... 34 3.2. Eigene Datenbank ............................................................................... 35 3.3. Anpassung an die neue Datenbank ..................................................... 36 3.3.1. Datenbankimport Microsoft SQL-Server ........................................ 36 3.3.2. Anpassen der Konfiguration – Microsoft SQL-Server .................... 37 3.3.3. Datenbankimport Postgres ............................................................ 39 3.3.4. Anpassen der Konfiguration – Postgres ........................................ 41 3.4. Ausführen von SQLi-Beispielen ........................................................... 43 3.4.1. Microsoft SQL-Server .................................................................... 43 3.4.2. Postgres ........................................................................................ 50 3.5. Forensische Aufarbeitung .................................................................... 58 3.5.1. Microsoft SQL-Server .................................................................... 60 3.5.2. Postgres ........................................................................................ 64 4. Begriff für das Forensik-Wiki ...................................................................... 66 Datenbankausführungsplan ........................................................................ 66 Literaturverzeichnis ........................................................................................ 68 Abbildungsverzeichnis .................................................................................... 69 1. Aufgabenstellung Gegenstand der im Rahmen des Moduls Datenbanken II: Forensik in Datenbank- managementsystemen zu fertigenden Hausarbeit sind verschiedene Aufgaben- stellungen aus dem Themengebiet SQL-Injektion. Als Vorlage dient hierfür die Bachelor Thesis von Herrn Christian Hense. Aufgabe 1 Inbetriebnahme der von Herrn Hense bereitgestellten virtuellen Maschine (Testumgebung für SQL-Injektion). Nach dem erfolgreichen Start sollen SQL-Injektion-Beispiele aus der Bachelor Thesis von Herrn Hense an zwei Datenbanksystemen innerhalb der VM ange- wendet werden. Aufgabe 2 Zunächst soll eine eigene Datenbank in zwei andere Datenbanksysteme impor- tiert werden. Anschließend erfolgt in diesen Datenbanksystemen die Ausführung von je fünf SQL-Injektion-Beispielen. Die forensische Aufarbeitung der SQL-Injektion-Beispiele zum Nachweis der An- griffe bildet den Abschluss. Aufgabe 3 Erläuterung eines Begriffs aus dem Themengebiet der Datenbank-Forensik auf dem IT-Forensik-Wiki1 der Hochschule Wismar. 1 https://it-forensik.fiw.hs-wismar.de/index.php/Hauptseite Pascal Granzer, Adam Kulauzovic S e i t e | 1 2. Vorbereitungen Die Aufgaben der Hausarbeit wurden mit Hilfe der Hense-VM2 bearbeitet. Es handelt sich um eine VirtualBox-VM. Nach der Installation von VirtualBox auf dem Host (macOS) wurde die Datei SQLi_Testsystem.vbox geöffnet. Abbildung 1: VirtualBox Startansicht Leider brach der Start der VM sofort mit einer Fehlermeldung ab. Bei nachfolgender Recherche zeigte sich, dass die zum Zeitpunkt der Bearbei- tung dieser Hausarbeit aktuelle Version von VirtualBox (6.1.16) nicht mit dem OS des verwendeten Host (macOS Big Sur 11.1) kompatibel ist. 2 Download unter: https://cloud.uni-weimar.de/s/DXdfMRwRNxfd8fn Pascal Granzer, Adam Kulauzovic S e i t e | 2 Wie sich herausstellt, existiert jedoch zur Fehlerbehebung eine noch nicht freige- gebene Test-Version von VirtualBox, Version 6.1.17. Nach deren Installation konnte das SQLi-Testsystem von Herrn Hense ohne Probleme gebootet werden. Abbildung 2: GRUB-Bootloader Abbildung 3: Startansicht nach dem Bootvorgang Pascal Granzer, Adam Kulauzovic S e i t e | 3 Auf der sich automatisch öffnenden Webseite kann über das Menü Projektlinks → Datenbankstatus geprüft werden, ob alle Datenbanksysteme on- line sind und zur Verwendung bereit stehen. Abbildung 4: Datenbankstatus Aktualisierung der Gast-Erweiterungen Herr Hense hat die VM mit der VirtualBox Version 5.2.32 erstellt. Zum korrekten Betrieb mit der Version 6.1.17 ist die Aktualisierung der VirtualBox Gast-Erweite- rungen nötig. Vor dem Einlegen der Gast-Erweiterungs-CD über das Menü3, muss in den Ein- stellungen der ausgeschalteten Maschine ein DVD-Laufwerk hinzugefügt wer- den. Abbildung 5: Neues DVD-Laufwerk zur VM hinzufügen Die Installation der Gasterweiterungen erfolgt über das Terminal: Abbildung 6: Installation der Gasterweiterungen 3 Devices → Insert Guest Additions CD image Pascal Granzer, Adam Kulauzovic S e i t e | 4 2. SQL-Injektion Beispiele in der Hense-VM Im folgenden Kapitel werden SQL-Injektion-Beispiele im Testsystem von Herrn Hense ausgeführt. Die Durchführung der Beispiele wird je nach verwendeter Datenbank wie folgt gegliedert: • Ausspähen von Daten o Ermittlung des Datenbankservers / -version (MySQL, MS SQL, …) o Ermittlung der Datenbankstruktur (Datenbanken, Tabellen, Felder und Inhalte) o Ermittlung von zugangsgeschützten Daten (regulärer Nutzer ist nicht berechtigt) • Veränderung von Daten o Ändern oder Löschen von bestehenden Daten o Neue Daten einfügen o Neue Tabellen erstellen o Existierende Tabellen oder Datenbanken löschen • Datenbank-Server verändern o Änderung von Benutzerrechten o Löschen bestehender Nutzer o Erstellen eines neuen Benutzers • Zugriff auf das Filesystem des Anwendungsservers o Lese- und Schreibzugriff auf das Dateisystem • Einschleusen beliebigen Codes o Ausführen des Codes auf dem System des Datenbankmanage- mentsystems o Ausführen des Codes auf dem System der Anwendung o Ausführen des Codes auf dem aufrufenden Client Zur Ausführung werden hierbei die beiden Datenbanksysteme MySQL und Postgres genutzt. Im weiteren Verlauf dieser Arbeit wird der Begriff SQL-Injektion durch SQLi ab- gekürzt. Pascal Granzer, Adam Kulauzovic S e i t e | 5 2.1. MySQL Entsprechend dem in der VM enthaltenen SQLi-Wiki4 wird für die Übungen mit der MySQL-Datenbank folgende Einsprungadresse verwendet: Abbildung 7: Einsprungadresse MySQL Ergebnis des Aufrufs der Einsprungadresse: Abbildung 8: MySQL – Ausgabe der Einsprungadresse Ausspähen von Daten Da einzelne SQL-Befehle je nach DBMS leicht variieren, muss zunächst festge- stellt werden, welches Datenbanksystem hinter der Webanwendung Verwen- dung findet. Als Orientierungshilfe für SQL-Befehle dient das SQL-Injektion Cheetsheet für MySQL aus dem SQLi-Wiki5. Bestimmung der DBMS-Version Im Falle einer MySQL-Datenbank lautet der Befehl zum Abrufen der Datenbank- version: Select @@version; Diese Abfrage wird nun in die Einsprungadresse integriert: http://www.victim.com/test_sqli_mysql.php?n=Sokrates’ UNION SELECT @@version,1,1,1 -- . 4 http://127.0.0.1/html/dokuwiki/doku.php?id=1_nutzung:2_einsprungadressen 5 http://127.0.0.1/html/dokuwiki/doku.php?id=8_sql_injection_cheat_sheet:2_mysql Pascal Granzer, Adam Kulauzovic S e i t e | 6 In der zweiten Zeile der ersten Spalte erscheint nun die Versionsnummer 5.5.60-log. Abbildung 9: MySQL – Ausgabe der installierten MySQL Server Version Laut