Upload
others
View
2
Download
0
Embed Size (px)
Citation preview
Hochschule Wismar
University of Technology, Business and Design
Fakultät für Ingenieurwissenschaften
Eingereicht am: 15. Februar 2020
von: C.G.
Hausarbeit
im Modul
Datenbanken II: Forensik in DBS
Wintersemester 2019/20
Modulverantwortliche Dozentin:
Prof. Dr.-Ing. Antje Raab-Düsterhöft
Aufgabenstellung
1 Aufgabenstellung
Die Aufgabenstellung ergibt sich aus folgenden zwei Abschnitten des Studienbriefes
„Datenbanken II: Forensik in Datenbankmanagementsystemen“, sowie den Ergänzungen
aus den Folien des zweiten Webinars vom 21.01.2020.
3.Hinweise zur Prüfungsleistung (Studienbrief)
Die Prüfung in diesem Modul wird von Ihnen als APL (Alternative Prüfungsleistung)
abgeleistet und besteht aus 2 Teilen: Zum einen haben Sie eine schriftliche Hausarbeit zu
erstellen […]
Die schriftliche Hausarbeit ist in Form eines Projektberichtes zu erstellen. In der
Hausarbeit werden Sie
- Ihre praktischen Vorgehensweisen dokumentieren und
- einen Fachbegriff für den Forensik-Wiki (https://it-forensik.fiw.hswismar.de)
definieren
Die Hausarbeit sollte mindestens ca. 20 Seiten oder mehr umfassen, muss aber NICHT
den Anforderungen an einen wissenschaftlichen Artikel entsprechen. […]
4.3 Erstellung der Hausarbeit (Studienbrief)
Lesen und arbeiten Sie
1. den Inhalt des Lehrbriefes und
2. die Bachelor Thesis von Herrn Christian Hense zum Thema „SQL Injektion“ durch
und insbesondere auch das Buch von Justin Clarke „SQL-Injektion“ (Clarke, Justin. SQL
Hacking . München, Germany: Franzis Verlag GmbH, 2016. 978-3-645-60466-6., als
PDF auf der Hense-VM verfügbar) und
3. die SQL-Injektion-Beispiele in der OVA-Umgebung zur Hense-BT anhand zweier
unterschiedlicher Datenbanksysteme durch. Dokumentieren Sie diese mit Screenshots!
4. Wählen Sie wieder zwei Datenbanksysteme und
4.1 Installieren Sie Ihre eigene Beispiel-Datenbank (Schema, Daten) in diesen zwei DBS
4.2 Führen Sie jeweils 5 Beispiele für SQL-Injektion auf Ihrer Datenbank aus und
arbeiten Sie diese Vorfälle forensisch auf; d.h. suchen Sie nach Quellen, in denen diese
Vorfälle nachgewiesen werden können.
Aufgabenstellung
3
4.3 Dokumentieren Sie Ihr gesamtes Vorgehen!
Ergänzungen Webinar 21.01.20 (Folie 3 - 1. Ergänzung zum 1. Webinar/ Fragen)
• Zu untersuchenden Aspekte
1. Ausspähen von Daten
2. Veränderung von Daten
3. Datenbank-Server verändern
4. Änderungen am Filesystem
5. Einschleusen von beliebigem Code
• Für jeweils 2 unterschiedliche DBS auf der VM
• Für Ihr eigenes DBS
Inhalt
4
2 Inhalt
3 Einleitung und Wahl des Fachbegriffes für das Forensik-Wiki .............................................................. 6
3.1 Error Based SQL Injection (fehlerbasierte SQL Injektion) ......................................................... 6
4 Vorbereitungen ....................................................................................................................................... 7
4.1 Download der VM ....................................................................................................................... 7
4.2 Bereitstellung der VM in eigener Umgebung .............................................................................. 9
4.3 Download des Buches ................................................................................................................. 9
5 Teil I der Aufgabenstellung .................................................................................................................. 10
5.1 Ausspähen von Daten ................................................................................................................ 10
5.1.1 MySQL ........................................................................................................................... 10
5.1.2 PostgreSQL .................................................................................................................... 11
5.2 Veränderung von Daten ............................................................................................................. 13
5.2.1 MySQL ........................................................................................................................... 13
5.2.2 PostgreSQL .................................................................................................................... 15
5.3 Datenbank-Server verändern ..................................................................................................... 16
5.3.1 MySQL ........................................................................................................................... 16
5.3.2 PostgreSQL .................................................................................................................... 17
5.4 Änderungen am Filesystem ....................................................................................................... 18
5.4.1 MySQL ........................................................................................................................... 18
5.4.2 PostgreSQL .................................................................................................................... 20
5.5 Einschleusen von beliebigem Code ........................................................................................... 22
5.5.1 MySQL ........................................................................................................................... 22
5.5.2 PostgreSQL .................................................................................................................... 23
6 Teil II der Aufgabenstellung ................................................................................................................. 24
6.1 ERD von Demo-Datenbank „Sakila“ ........................................................................................ 24
6.2 Import Demo-Datenbank „Sakila“ ............................................................................................ 25
6.2.1 MySQL ........................................................................................................................... 25
6.2.2 PostgreSQL .................................................................................................................... 26
6.3 Anpassung der PHP-Files für die Nutzung der „Sakila“ Datenbank ......................................... 28
6.4 Ausspähen von Daten ................................................................................................................ 30
6.4.1 MySQL ........................................................................................................................... 30
6.4.2 PostgreSQL .................................................................................................................... 31
6.5 Veränderung von Daten ............................................................................................................. 33
6.5.1 MySQL ........................................................................................................................... 33
6.5.2 PostgreSQL .................................................................................................................... 35
6.6 Datenbank-Server verändern ..................................................................................................... 35
6.6.1 MySQL ........................................................................................................................... 35
Inhalt
5
6.6.2 PostgreSQL .................................................................................................................... 37
6.7 Änderungen am Filesystem ....................................................................................................... 38
6.7.1 MySQL ........................................................................................................................... 38
6.7.2 PostgreSQL .................................................................................................................... 39
6.8 Einschleusen von beliebigem Code ........................................................................................... 41
6.8.1 MySQL ........................................................................................................................... 41
6.8.2 PostgreSQL .................................................................................................................... 41
6.9 Suche nach Artefakten / forensische Auswertung ..................................................................... 42
6.9.1 Auswertung des MySQL Query-Logfiles „mysql_query.log“ ....................................... 42
6.9.2 PostgreSQL .................................................................................................................... 43
6.9.3 Auswertung der Apache „access.log“ Datei ................................................................... 44
6.9.4 Abschluss ....................................................................................................................... 44
Einleitung und Wahl des Fachbegriffes für das Forensik-Wiki
6
3 Einleitung und Wahl des Fachbegriffes für das Forensik-Wiki
Die Aufgabenstellung verlangt die Wahl und Definition eines Fachbegriffes aus dem
Umfeld der Datenbankforensik für das Forensik-Wiki der Hochschule Wismar.
Meine Wahl fiel auf den Begriff „Error Based SQL Injection“.
3.1 Error Based SQL Injection (fehlerbasierte SQL Injektion)
Den Fachbegriff habe ich im Forensik-Wiki auf folgender Seite definiert:
https://it-forensik.fiw.hs-wismar.de/index.php/Error_Based_SQL_Injection
Quelle: https://skytale.academy/it-sicherheit-wiki.html
Quelle: https://medium.com/@hninja049/example-of-a-error-based-sql-injection-
dce72530271c
Vorbereitungen
7
4 Vorbereitungen
Um die gestellte Aufgabe strukturiert abarbeiten zu können, sind einige Vorbereitungen
vonnöten. Zum einen wird die von Herrn Hense erstellte virtuelle Maschine für Teil I der
Aufgabenstellung benötigt, zum anderen das Buch „SQL-Injektion“ von Justin Clarke,
das als Download in der Cloud der Universität Weimar verfügbar gemacht wurde.
4.1 Download der VM
Der Download der VM hatte einigen Kommilitoninnen und Kommilitonen Probleme
bereitet. Auch ich konnte bei dem Versuch die Datei „thesis.zip“ von dem Laufwerk
„Z:Forensik-DB-VM“ über den VMware-Horizon-Client auf mein System zu
übertragen große Probleme feststellen.
Die Datei hat eine Größe von ca. 19 GB.
Zum einen waren die Übertragungsraten so gering, dass die Übertragung weit mehr als
18 Stunden gedauert hätte (dies lag nicht an zu geringer Bandbreite UP/DOWN auf
meiner Seite), zum anderen brach der Kopiervorgang regelmäßig ab.
Ich habe die Übertragung dann wie folgt gelöst:
1. MD5 Summe des Files „thesis.zip” auf der von der HS Wismar bereitgestellten
VM erstellt. (verwendetes Tool: MobaXterm mit local terminal)
MD5-Summe der Datei: 6eba7c7dc9374f28f8fed9ed6f6f816c
Vorbereitungen
8
2. Den FTP-Client FlashFXP auf der bereitgestellten VM installiert, um bei
Verbindungsaufbruch einen Wiederaufsetzungspunkt zu haben und nicht wieder
alles erneut herunterladen zu müssen.
Die Datei lies sich so innerhalb von 7 Stunden auf meinen FTP-Server übertragen.
3. Nach erfolgreichem Download habe ich die Integrität der Datei auf meinem
System überprüft, d.h. MD5-Summe gebildet:
Die hier gebildete MD5-Summe 6eba7c7dc9374f28f8fed9ed6f6f816c war identisch mit
der vorherig auf dem Quellsystem gebildeten MD5-Summe.
Die Übertragung war also erfolgreich und ich konnte die ZIP-Datei nun entpacken.
Vorbereitungen
9
4.2 Bereitstellung der VM in eigener Umgebung
Das Bereitstellen der virtuellen Maschine in Oracle-VirtualBox ist sehr einfach.
Im Menüband auf „Maschine“ klicken und dann den Punkt „hinzufügen“ auswählen.
Es öffnet sich folgendes Dialogfenster in dem man die entsprechende VBOX-Datei
auswählt und mit einem Klick auf den Button „Öffnen“ auch schon bereitstellt.
Bereitgestellte Maschine:
4.3 Download des Buches
Da ich das Buch „SQL-Injektion“ von Justin Clarke nicht im ZIP-Container finden
konnte, habe ich es von der bereitgestellten Quelle (Cloud Uni Weimar - https://cloud.uni-
weimar.de/index.php/s/JQfxvTqdFItk3ST) heruntergeladen.
Teil I der Aufgabenstellung
10
5 Teil I der Aufgabenstellung
Nachfolgend soll anhand zweier unterschiedlicher Datenbanksysteme aufgezeigt werden,
dass die SQL-Injektion-Beispiele aus der Bachelor Thesis von Herrn Hense (3.4.1 – 3.4.5)
unter Nutzung der zur Thesis bereitgestellten virtuellen Maschine durchgeführt wurden.
Zur Veranschaulichung habe ich mich für die Datenbanksysteme MySQL und
PostgreSQL entschieden.
5.1 Ausspähen von Daten
5.1.1 MySQL
Schritt 1: Listen der Datenbanken
Schritt 2: Anzeigen der Tabellen
Teil I der Aufgabenstellung
11
Schritt 3: Anzeige um Spaltennamen erweitern
Schritt 4: Auslesen von Inhalten
5.1.2 PostgreSQL
Schritt 1: Listen der Datenbanken
Teil I der Aufgabenstellung
12
Schritt 2: Anzeigen der Tabellen
Schritt 3: Anzeige um Spaltennamen erweitern
Schritt 4: Auslesen von Inhalten
Teil I der Aufgabenstellung
13
5.2 Veränderung von Daten
5.2.1 MySQL
Schritt 1: neue Datenbank und Tabelle anlegen, Daten einfügen und verändern
Schritt 2: Angelegte Inhalte anzeigen
Schema wurde angelegt:
Der oben eingefügte Datensatz mit geupdateter ID von 1 auf 2 existiert:
Teil I der Aufgabenstellung
14
Schritt 3: Entfernen der angelegten Inhalte
Tabelleninhalt löschen:
Löschen der angelegten Tabelle:
Und abschließend das Löschen der angelegten Datenbank:
Schritt 4: Überprüfen, ob alle Inhalte erfolgreich entfernt wurden
Wie ersichtlich, wird die angelegte Datenbank nicht mehr gelistet und wurde erfolgreich
gelöscht.
Teil I der Aufgabenstellung
15
5.2.2 PostgreSQL
Schritt 1: neue Datenbank und Tabelle anlegen, Daten einfügen und verändern
Wie Herr Hense in seiner Bachelor Thesis schreibt, ist das Anlegen einer Datenbank via
Multiqueryanweisung in PostgreSQL nicht möglich:
Ich erhielt demnach korrekterweise folgende Fehlermeldung:
Um das Beispiel dennoch – teilweise – durchführen zu können, habe ich die Datenbank
dann direkt angelegt.
Schritt 2: Tabelle anlegen via SQL Injection
Auch dies ist nicht möglich, da keine Cross-Database-References implementiert sind:
Folglich scheitern auch die Punkte „Insert into“ , „Update“ , „Drop Table“ und „Drop
Database“.
Teil I der Aufgabenstellung
16
5.3 Datenbank-Server verändern
5.3.1 MySQL
Schritt 1: Anlegen eines Nutzers mit allen Rechten via SQL Injection
Schritt 2: Mit angelegtem Nutzer in der Datenbank angemeldet:
Schritt 3: Löschen eines Nutzers per SQL Injection
Teil I der Aufgabenstellung
17
Schritt 4: Überprüfen, ob User gelöscht:
Login geht nicht mehr – d.h. User erfolgreich per SQL Injection gelöscht.
5.3.2 PostgreSQL
Schritt 1: Anlegen eines Nutzers mit allen Rechten via SQL Injection
Schritt 2: Angelegten User anzeigen via SQL Injection
Schritt 3: Löschen eines Nutzers per SQL Injection
Schritt 4: Überprüfen, ob User gelöscht wurde per SQL Injection
Teil I der Aufgabenstellung
18
5.4 Änderungen am Filesystem
5.4.1 MySQL
Schritt 1: Lesezugriff auf Systemfiles
Damit das Auslesen bzw. der Zugriff auf das Filesystem im kommenden Beispiel
funktioniert, muss der Parameter „secure_file_priv“ in der „config-file.cnf“ unter
„/var/lib/mysql/config“ auf dem Docker-Container angepasst werden.
Vor der Anpassung:
Nach der Anpassung:
Dann Service neu starten, damit Config-File neu eingelesen wird.
Teil I der Aufgabenstellung
19
Lesezugriff auf das Filesystem via SQLi:
Schritt 2: Schreibzugriff
Schritt 3: Lesezugriff auf vorherig geschriebenes File
Teil I der Aufgabenstellung
20
5.4.2 PostgreSQL
Erzeugen einer Tabelle „mydata“ und befüllen per COPY-Befehl mit dem Inhalt der
Systemdatei „/etc/passwd“.
Inhalt der erzeugten Tabelle abfragen:
Löschen der Tabelle „mydata“
Teil I der Aufgabenstellung
21
Schreibzugriff:
Es wird der PHP-Code „<? pasthru($_GET[cmd]); ?>“ über den Umweg einer
Hilfstabelle „mytable“ in die Datei „/var/lib/postgresql/data/c.php“ geschrieben.
Löschen des erstellten Tables „mytable“ nicht vergessen:
Lesezugriff auf das eben erstellte File „/var/lib/postgresql/data/c.php“:
Die Spalte „t“ wird leer angezeigt, was vermutlich daran liegt, dass der PHP-Code
interpretiert wird. Ich habe über die Konsole den Inhalt der Tabelle überprüft, um sicher
zu sein, dass die Query funktionierte und das tat sie:
Löschen der Tabelle „mydata“:
Teil I der Aufgabenstellung
22
5.5 Einschleusen von beliebigem Code
5.5.1 MySQL
Wie Herr Hense schreibt, bietet MySQL keine Möglichkeit Systembefehle abzusetzen.
Nachfolgend Realisierung und Nutzung einer Webshell:
Teil I der Aufgabenstellung
23
Cross Site Scripting zur Codeinjektion auf Clientsystemen:
5.5.2 PostgreSQL
Postgres erlaubt die direkte Ausführung von Systembefehlen, sowie das Schreiben des
Ergebnisses in eine Tabelle:
Teil II der Aufgabenstellung
24
6 Teil II der Aufgabenstellung
Für Teil II der Aufgabenstellung soll eine weitere Datenbank eingespielt werden. Die
Entscheidung, ob man eine eigene Datenbank erstellt oder eine Demo-Datenbank aus dem
Internet verwendet, wurde einem frei überlassen.
Ich werde für den nachfolgenden Teil II die von MySQL bekannte Datenbank „Sakila“
nutzen. Bei der Demo-Datenbank „Sakila“ handelt es sich um eine Videothek (DVD
Rental Store). Die Demo-Datenbank wurde für viele DBMS portiert und eignet sich
hervorragend für die Erfüllung der weiteren Aufgabe.
6.1 ERD von Demo-Datenbank „Sakila“
Quelle: https://github.com/jOOQ/jOOQ/tree/master/jOOQ-examples/Sakila
Teil II der Aufgabenstellung
25
6.2 Import Demo-Datenbank „Sakila“
6.2.1 MySQL
Download der SQL-Files „mysql-sakila-schema.sql“ und „mysql-sakila-insert-
data.sql“ von der Webseite https://github.com/jOOQ/jOOQ/tree/master/jOOQ-
examples/Sakila/mysql-sakila-db auf die virtuelle Maschine von Herrn Hense in das
Verzeichnis „/var/www/docker/mysql/config/“ .
Danach im Terminal mit der MySQL-Docker-Instanz verbunden und den Import via
MySQL-Shell durchgeführt:
Überprüfung, ob Import erfolgreich:
Teil II der Aufgabenstellung
26
Importvorgang war erfolgreich!
6.2.2 PostgreSQL
Analog wie im vorherigen Beispiel, Download der SQL-Files „postgres-sakila-
schema.sql“ und „postgres-sakila-insert-data.sql“ von der Webseite
https://github.com/jOOQ/jOOQ/tree/master/jOOQ-examples/Sakila/postgres-sakila-db
auf die virtuelle Maschine von Herrn Hense in das Verzeichnis
„/var/www/docker/pgdata/“ .
Teil II der Aufgabenstellung
27
Anschließend via Terminal mit der Postgres-Docker-Instanz verbunden und den Import
via Postgres-Shell durchgeführt:
1. Datenbank angelegt:
2. Import des Files postgres-sakila-schema.sql
3. Import der Tabelleninhalte aus postgres-sakila-insert-data.sql
Überprüfung, ob Import erfolgreich:
Der Importvorgang war erfolgreich!
Teil II der Aufgabenstellung
28
6.3 Anpassung der PHP-Files für die Nutzung der „Sakila“ Datenbank
Um die nachfolgenden Beispiele durchführen zu können, mussten manche PHP-Files
angepasst werden:
In der Datei „db_vars0.php“ im Verzeichnis „/var/www/html/victim/“ wurde die neue
Datenbank „sakila“ für die MySQL und PostgreSQL Beispiele eingetragen.
Eine weitere Anpassung musste in der Datei „test_sqli_postgres.php“ im selben
Verzeichnis gemacht werden, um eine valide Anfrage zu erhalten – d.h. eine Abfrage auf
einen existierenden Table der „sakila“ Datenbank.
Teil II der Aufgabenstellung
29
Auch das File „test_sqli_mysql.php“ wurde sinngemäß angepasst:
Teil II der Aufgabenstellung
30
6.4 Ausspähen von Daten
6.4.1 MySQL
Schritt 1: Listen der Datenbanken
Schritt 2: Anzeigen der Tabellen
Teil II der Aufgabenstellung
31
Schritt 3: Anzeige um Spaltennamen erweitern
Schritt 4: Auslesen von Inhalten
6.4.2 PostgreSQL
Schritt 1: Listen der Datenbanken
Teil II der Aufgabenstellung
32
Schritt 2: Anzeigen der Tabellen
Schritt 3: Anzeige um Spaltennamen erweitern
Schritt 4: Auslesen von Inhalten
Teil II der Aufgabenstellung
33
6.5 Veränderung von Daten
6.5.1 MySQL
Schritt 1: neue Datenbank und Tabelle anlegen, Daten einfügen und verändern
Schritt 2: Angelegte Inhalte anzeigen
Schema wurde angelegt:
Der oben eingefügte Datensatz mit geupdateter ID von 1 auf 2 existiert:
Teil II der Aufgabenstellung
34
Schritt 3: Entfernen der angelegten Inhalte
Tabelleninhalt löschen:
Löschen der angelegten Tabelle:
Und abschließend das Löschen der angelegten Datenbank:
Schritt 4: Überprüfen, ob alle Inhalte erfolgreich entfernt wurden
Wie ersichtlich, wird die angelegte Datenbank „Claus“ nicht mehr gelistet und wurde
erfolgreich gelöscht.
Teil II der Aufgabenstellung
35
6.5.2 PostgreSQL
Wie bereits unter 5.2.2 beschrieben, ist eine Durchführung unter PostgreSQL nicht
möglich, da ein CREATE DATABASE Befehl in Multiqueryanweisungen nicht
ausgeführt wird und keine Cross-Database-References implementiert sind.
6.6 Datenbank-Server verändern
6.6.1 MySQL
Anlegen eines Users „claude“ mit dem Passwort „gemein“ via SQL Injection:
Schritt 2: Mit angelegtem Nutzer in der Datenbank angemeldet:
Login erfolgreich mit erstelltem User „claude“.
Teil II der Aufgabenstellung
36
Schritt 3: Löschen von „claude“ per SQL Injection
Schritt 4: Überprüfen, ob der User erfolgreich gelöscht wurde:
Das Login geht nicht mehr – d.h. User erfolgreich per SQL Injection gelöscht.
Teil II der Aufgabenstellung
37
6.6.2 PostgreSQL
Schritt 1: Anlegen eines Nutzers mit allen Rechten via SQL Injection
Schritt 2: Angelegten User anzeigen via SQL Injection
Schritt 3: Löschen eines Nutzers per SQL Injection
Schritt 4: Überprüfen, ob User gelöscht wurde per SQL Injection:
Wie ersichtlich, wurde der angelegte User „Claus“ erfolgreich gelöscht.
Teil II der Aufgabenstellung
38
6.7 Änderungen am Filesystem
6.7.1 MySQL
Hier ändert sich auch bei Nutzung einer eigenen Datenbank nichts.
Damit das Auslesen bzw. der Zugriff auf das Filesystem im kommenden Beispiel
funktioniert, muss der Parameter „secure_file_priv“ in der „config-file.cnf“ unter
„/var/lib/mysql/config“ auf dem Docker-Container angepasst werden. Siehe hierzu
5.4.1.
Schritt 1: Lesezugriff auf das Filesystem via SQLi:
Schritt 2: Schreibzugriff
Schritt 3: Lesezugriff auf vorherig geschriebenes File
Teil II der Aufgabenstellung
39
6.7.2 PostgreSQL
Erzeugen einer Tabelle „clausdata“ und befüllen per COPY-Befehl mit dem Inhalt der
Systemdatei „/etc/passwd“.
Inhalt der erzeugten Tabelle abfragen:
Löschen der Tabelle „clausdata“:
Teil II der Aufgabenstellung
40
Schreibzugriff:
Es wird der PHP-Code „<?php $heute_in_einem_monat = strtotime("+1 month");
echo date("d.m.Y", $heute_in_einem_monat)."<br />";?>“ über den Umweg einer
Hilfstabelle „faketable“ in die Datei „/var/lib/postgresql/data/claus.php“ geschrieben.
Löschen des erstellen Tables „faketable“ nicht vergessen:
Lesezugriff auf das eben erstellte File „/var/lib/postgresql/data/claus.php“:
Die Spalte „t“ zeigt nicht ganz das erwartete Ergebnis. Ich habe das geschriebene File
„claus.php“ untersucht und festgestellt, dass es den ganzen PHP-Code beinhaltet.
Löschen der Tabelle „readtable“:
Teil II der Aufgabenstellung
41
6.8 Einschleusen von beliebigem Code
6.8.1 MySQL
MySQL bietet keine Möglichkeit Systembefehle abzusetzen.
Die Realisierung und Nutzung einer Webshell wurde bereits unter 5.5.1 realisiert und
ändert sich durch die Nutzung einer eigenen Datenbank nicht.
Cross Site Scripting zur Codeinjektion auf Clientsystemen:
6.8.2 PostgreSQL
Postgres erlaubt die direkte Ausführung von Systembefehlen, sowie das Schreiben des
Ergebnisses in eine Tabelle:
Teil II der Aufgabenstellung
42
6.9 Suche nach Artefakten / forensische Auswertung
Die durch SQL Injection ausgeführten Abfragen / Veränderungen lassen sich in
unterschiedlichen Bereichen auffinden / nachweisen.
6.9.1 Auswertung des MySQL Query-Logfiles „mysql_query.log“
In der „mysql_query.log“ lassen sich alle unter den Punkten 6.4 bis 6.8 ausgeführten
Queries nachweisen.
Abgesetzte SQL-Statements aus 6.4.1:
Abgesetzte SQL-Statements aus 6.5.1:
Abgesetzte SQL-Statements aus 6.6.1:
Abgesetzte SQL-Statements aus 6.7.1:
Abgesetzte SQL-Statements aus 6.8.1:
Teil II der Aufgabenstellung
43
6.9.2 PostgreSQL
Das Logging muss bei PostgreSQL unter Umständen erst in der Config-Datei
„postgresql.conf“ aktiviert werden. Auf der bereitgestellten VM von Herrn Hense war
in meinem Fall das Logging bereits aktiviert.
Abgesetzte SQL-Statements aus 6.4.2:
Abgesetzte SQL-Statements aus 6.5.2:
Keine Informationen im Log-File vorhanden, da 6.5.2 nicht durchführbar war (siehe
Erklärung bei 6.5.2).
Abgesetzte SQL-Statements aus 6.6.2:
Abgesetzte SQL-Statements aus 6.7.2:
Abgesetzte SQL-Statements aus 6.8.2:
Teil II der Aufgabenstellung
44
6.9.3 Auswertung der Apache „access.log“ Datei
Auch in der „access.log“ des Apache-Webservers lassen sich Artefakte der SQLi finden:
Exemplarisch:
6.9.4 Abschluss
Sicherlich kann man auch eigene Log-Tabellen und dementsprechende Trigger
einrichten, um über unerlaubte Manipulationsversuche informiert zu werden.
Meines Erachtens fehlt uns Studenten für eine vollständige und korrekte forensische
Auswertung (Auffinden aller Artefakte) noch ein gewisses Maß an Routine und
Fachwissen.