Blind SQL Injection

Aus IT-Forensik Wiki


Blind SQL Injection

Bei blinden SQL-Angriffstechniken wird eine Schwachstelle aufgrund mangelnder Eingabebereinigung für Datenabfragen ausgenutzt, ohne dabei auf ausführliche Fehlermeldungen der Datenbank oder die In-Band-Verkettung zurückgreifen zu können. Ziel ist hierbei die Gewinnung von Informationen aus der Datenbank oder über die Datenbankabfrage.¹)

Es wird hierbei davon ausgegangen, dass ausführliche Fehlermeldungen durch den Datenbank-/Anwendungsbetreiber deaktiviert wurden, eine Verletzung der SQL-Syntax jedoch eine allgemeine Fehlerseite hervorruft. Weiter wird von einer SELECT-Abfrage ausgegangen, über welche dem Nutzer die gesuchten Daten präsentiert werden. So werden verschiedene Anfragen an die Datenbank übermittelt. Für wahre und falsche Bedingungen werden unterschiedliche Antworten zurückgegeben. Häufig werden Blind SQL Injection Angriffe automatisiert durchgeführt, da eine große Anzahl von Anfragen nötig sein kann, um Rückschlüsse über die Datenbank und die Datenbankabfrage ziehen zu können. Ein Open-Source Tool, welches für automatisierte Blind SQL Injection Angriffe genutzt werden kann ist Sqlmap.

Beispiel

In einem Webshop werden verfügbare Artikel angeboten. Diese Artikel werden über den Zahlenwert "nr" unterschieden. Die URL einer solchen Seite könnte entsprechend aufgebaut sein:

http://www.it-shop24.test/artikel.php?nr=7

Die SQL-Anfrage an die Datenbank lautet:

SELECT spaltenname, spaltenname2 FROM tabellenname WHERE nr = 7

Ein Angreifer modifiziert die Anfrage und ergänzt das falsche Statement " AND 1=2":

http://www.it-shop24.test/artikel.php?nr=7%20and%201=2

Die neue SQL Anfrage lautet:

SELECT spaltenname, spaltenname2 FROM tabellenname WHERE nr = 7 AND 1=2

Da 1 ungleich 2 ist, gibt die Datenbank FALSE zurück und es werden keine Artikel ausgegeben. Anschließend wird die stets wahre Bedingung "1=1" angefügt:

http://www.it-shop24.test/artikel.php?nr=7%20and%201=1

Die neue SQL Anfrage lautet:

SELECT spaltenname, spaltenname2 FROM tabellenname WHERE nr = 7 AND 1=1

Die Datenbank gibt hier TRUE zurück und der Artikel mit der Nummer 7 wird wieder angezeigt. Dieses Verhalten lässt auf eine Anfälligkeit der Website auf SQL Injection Angriffe schließen.

Quellen

¹) Buch von Justin Clarke „SQL-Injektion“ (Clarke, Justin. SQL Hacking . München, Germany: Franzis Verlag GmbH,2016. 978-3-645-60466-6)