Inline (Queries) SQL Injection: Unterschied zwischen den Versionen
KKeine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
Zeile 2: | Zeile 2: | ||
Die Inline SQL Injection heißt deshalb so, weil diese direkt in ein dafür vorgesehenes Eingabefeld hinter welchem sich eine Query verbirgt eingebracht wird. Dies kann z.B. an einer Anmeldemaske oder aber einer Produktsuche der Fall sein. | Die Inline SQL Injection heißt deshalb so, weil diese direkt in ein dafür vorgesehenes Eingabefeld hinter welchem sich eine Query verbirgt eingebracht wird. Dies kann z.B. an einer Anmeldemaske oder aber einer Produktsuche der Fall sein. | ||
Auch die Ausgabe der Ergebnisse erfolgt über den selben Kanal, so werden anstatt des gesuchten Produkts z.B. verfügbare Tabellen der Datenbank ausgegeben. | |||
Die Injection funktioniert meist so, dass der eingebrachte Code & die eigentliche Query ausgeführt wird. Die Injection wird also zusätzlich zu der eigentlichen Suchabfrage ausgeführt. | Die Injection funktioniert meist so, dass der eingebrachte Code & die eigentliche Query ausgeführt wird. Die Injection wird also zusätzlich zu der eigentlichen Suchabfrage ausgeführt. | ||
Je nach Gestaltung der eingebrachten Query, kann der rest der ursprünglichen Query auch abgeschnitten werden, sodass diese nicht mehr ausgeführt wird (siehe Beispiele). | Je nach Gestaltung der eingebrachten Query, kann der rest der ursprünglichen Query auch abgeschnitten werden, sodass diese nicht mehr ausgeführt wird (siehe Beispiele). | ||
Die Inline-Injections sind grob einzuteilen in: | |||
Error | # [[Error Based SQL Injection|Error Based SQL Injection]] | ||
Union-based SQLi | # Union-based SQLi | ||
# Inline- | Außerdem ist erwähnenswert, dass sowohl | ||
# Inline-Injections | # Inline-Stringinjections | ||
# Inline-Injections von numerischen Werten | |||
möglich sind. | |||
== Beispiel == | == Beispiel == |
Version vom 26. Februar 2022, 13:07 Uhr
Inline (Queries) SQL Injection
Die Inline SQL Injection heißt deshalb so, weil diese direkt in ein dafür vorgesehenes Eingabefeld hinter welchem sich eine Query verbirgt eingebracht wird. Dies kann z.B. an einer Anmeldemaske oder aber einer Produktsuche der Fall sein. Auch die Ausgabe der Ergebnisse erfolgt über den selben Kanal, so werden anstatt des gesuchten Produkts z.B. verfügbare Tabellen der Datenbank ausgegeben.
Die Injection funktioniert meist so, dass der eingebrachte Code & die eigentliche Query ausgeführt wird. Die Injection wird also zusätzlich zu der eigentlichen Suchabfrage ausgeführt. Je nach Gestaltung der eingebrachten Query, kann der rest der ursprünglichen Query auch abgeschnitten werden, sodass diese nicht mehr ausgeführt wird (siehe Beispiele).
Die Inline-Injections sind grob einzuteilen in:
- Error Based SQL Injection
- Union-based SQLi
Außerdem ist erwähnenswert, dass sowohl
- Inline-Stringinjections
- Inline-Injections von numerischen Werten
möglich sind.
Beispiel
Simple Inline SQLi (MySQL):
Abschluss (abtrennen) der ursprünglichen SQL Anweisung (Seite 82):
Beispiel Ref: [1]
Forensische Analyse
Je nach DBMS liegen unterschiedliche Logfiles vor. Außerdem müssen diese unter anderem auch erst aktiviert werden, da dies nicht per Default passiert. Die nachfolgende Tabelle soll etwaige Arten von Logdateien aufzeigen:
DBMS | Name | Ziel | Path bzw. Datei | Besonderheiten | |
---|---|---|---|---|---|
MySQL | General Query Log | Verbindungsinformationen und alle abgesetzten Statements | Windows: C:\ProgramData\MySQL\MySQL Server x.x\Data\*.log Linux: /var/lib/mysql/general_log.CSV |
Nicht per Default aktiv | |
MySQL | Binary Log | Alle Data modifications DDL & DML |
Windows: C:\ProgramData\MySQL\MySQL Server x.x\Data\*-bin Linux: /var/lib/mysql/binlog.* |
Aufruf mit: mysqlbinlog -v /path/to/log | |
Beispiel | Beispiel | Beispiel | Beispiel | Beispiel |
Zu beachten ist außerdem die Existenz weiterer Quellen, insbesondere Logs einer WAF oder der Firewall für eine generelle Aussage über einen Zugriff <> IP.
Quellen
- ↑ Evil Link Description Text behind desc. Abgerufen am xx. Februar 2022.