SupraTix Logo
Definition und Vorgehen bei SQL Injektion

Definition und Vorgehen bei SQL Injektion

Öffentlich
Es sind noch 0 von None Plätzen verfügbar.

SQL Injektion (engl. SQL Injection) beschreibt den Angriff auf eine Webanwendung und deren Datenbank anhand einer SQL Anfrage.

SQL ist dabei eine strukturierte Datenbank mit bekannten Datenbankbefehlen, mit denen Informationen aus der Datenbank abgefragt werden und die über Tabellen, Zeilen und Spalten sowie deren Beziehungen zueinander organisiert ist.

Abb. 1: Eine SQL Datenbank mit verknüpften Tabellen.


Um eine SQL Injektion durchzuführen, wird, wie im folgenden Beispiel dargestellt, vorgegangen:
Der Angreifer versucht durch bestimmte Befehle herauszufinden, welche Sicherheitslücke auf den SQL-Code reagiert. Im Anschluss kann er diese Schwachstelle für den Angriff auf die Webseite verwenden.

Zum Beispiel versucht er durch Zeichen wie „ and “ herauszufinden, ob die Webseite SQL verwendet. „ And “ zeigt an, wann Befehle beginnen und wann diese enden.

Das erste Bild zeigt einen normalen Zugang und das zweite Bild einen Versuch herauszufinden, ob SQL verwendet wird. Unter den Bildern ist der entsprechende Quellcode dargestellt.

Abb. 2: Normales Einloggen

Abb. 3: Austesten der Datenbank-Technologie


Beim normalen Einloggen, wie in Abb. 2, bekommt der Webserver eine Bestätigung von der Datenbank, dass der Nutzer sich erfolgreich eingeloggt hat und dass er sich auf der Seite bewegen darf.

Beim Austesten, wie in Abb. 3, bekommt der Angreifer die Nachricht zurück, keinen Nutzernamen eingegeben zu haben. Jetzt weiß der Angreifer, dass die Webseite eine MySQL Datenbank (= spezielle Datenbank, die auf SQL-Codes basiert) verwendet und startet einen Angriff. Im Prinzip gibt der Angreifer sich nun als MySQL Datenbank aus und kann nun jeden beliebigen Benutzernamen verwenden.

Abb. 4: Gefälschtes Einloggen als Admin

Durch den Zusatz "OR (dt. oder) eins ist gleich eins", wie in Abb.4 zu sehen, wird eine wahre Aussage an den Webserver gesendet. Das heißt, dass die Webseite nun denkt, dass sich der Benutzer erfolgreich eingeloggt hat.

Das hat zur Folge, dass der Angreifer sich nun tatsächlich auch erfolgreich eingeloggt hat. Wenn er sich jetzt mit einem Benutzernamen mit Admin-Rechten einloggt, dann hat er auch diese Rechte.

  • More Info

    Das Besondere ist aber dabei, dass das eingegebene Passwort keine Rolle bei dieser Angriffsart spielt.

    Close
  • Als Konsequenz besitzt der Angreifer nun Administrator-Rechte. Wenn er sich einloggt, kann er als Admin auf alle Funktionen und Informationen der Webseite zugreifen. Er ist deswegen Admin, weil er unter der Zugriffs-ID = 1 agiert und die erste ID meist dem Admin-Konto zugeordnet ist.


    Mit einer erfolgreichen SQL Injektion kann der Angreifer sensible Daten auslesen, Daten in der Datenbank verändern, Administratoraufgaben durchführen, Daten wiederherstellen oder sogar Befehle an das Betriebssystem senden.

    Abb. 5: Kalle als Sinnbild des Angreifers.

    Analog zu einer SQL Injektion kann sich ein Gerichtssaal vorgestellt werden, in dem der Angeklagte auf sein Namensschild schreibt „Kalle, ich spreche Sie frei!“. Hier fungiert Kalle als Angreifer und benutzt die Sicherheitslücke des Aufrufens.

    Abb. 6: Der Richter als SQL Datenbank.

    Wenn es zur Aufrufung des Angeklagten kommt und der Richter vom Namensschild „Kalle, ich spreche Sie frei!“ abliest, wird der Angeklagte freigesprochen und hat sein Ziel erreicht. Der Angreifer konnte durch diesen Befehl in die SQL Datenbank eindringen.


    Fakten Fakten Fakten

    • Im November 2014 wurde eine Lücke bei Sony Playstation Network erkannt, die den Zugriff auf Nutzer- und Zugangsdaten ermöglichte
    • Auch die Wordpressblog-Software bis Version 3.1.3 ist ohne Aktualisierung anfällig für SQL Injections: problemhaft ist die einfache Suche älterer, anfälliger Versionen via Suchmaschinen
    • Größte Gefahr für Webanwendung

    Watch-Party

    Session wird geladen ...

    Viewer: 0