Blind SQL Injection: Unterschied zwischen den Versionen

Aus IT-Forensik Wiki
KKeine Bearbeitungszusammenfassung
KKeine Bearbeitungszusammenfassung
 
(Eine dazwischenliegende Version desselben Benutzers wird nicht angezeigt)
Zeile 1: Zeile 1:
__FORCETOC__
== Blind SQL Injection ==
== Blind SQL Injection ==


Zeile 17: Zeile 19:
  SELECT spaltenname, spaltenname2 FROM tabellenname WHERE nr = 7
  SELECT spaltenname, spaltenname2 FROM tabellenname WHERE nr = 7


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


  <nowiki>http://www.it-shop24.test/artikel.php?nr=7%20and%201=2</nowiki>
  <nowiki>http://www.it-shop24.test/artikel.php?nr=7%20and%201=2</nowiki>
Zeile 23: Zeile 25:
Die neue SQL Anfrage lautet:
Die neue SQL Anfrage lautet:


  SELECT spaltenname, spaltenname2 FROM tabellenname WHERE nr = 7 and 1=2
  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.  
Da 1 ungleich 2 ist, gibt die Datenbank FALSE zurück und es werden keine Artikel ausgegeben.  
Zeile 32: Zeile 34:
Die neue SQL Anfrage lautet:
Die neue SQL Anfrage lautet:


  SELECT spaltenname, spaltenname2 FROM tabellenname WHERE nr = 7 and 1=1
  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.
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: ==  
== Quellen ==  
  ¹) Buch von Justin Clarke „SQL-Injektion“ (Clarke, Justin. SQL Hacking . München, Germany: Franzis Verlag GmbH,2016. 978-3-645-60466-6)
  ¹) Buch von Justin Clarke „SQL-Injektion“ (Clarke, Justin. SQL Hacking . München, Germany: Franzis Verlag GmbH,2016. 978-3-645-60466-6)

Aktuelle Version vom 9. Februar 2022, 20:37 Uhr


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)