Web Application Security in der Praxis, Teil 1

SQL Injection – Über das Web-Frontend auf Datenbank-Server zugreifen

10.02.2011 | Autor / Redakteur: Martin Dombrowski / Stephan Augsten

Zielorientiert: Die SQL Injection ist nach wie vor ein effektives Mittel zum Angriff auf Datenbank-Server.
Zielorientiert: Die SQL Injection ist nach wie vor ein effektives Mittel zum Angriff auf Datenbank-Server.

Anfällige Webseiten per Google-Suche ermitteln

Es werden oft Webseiten gesucht, die eine aktuelle Schwachstelle enthalten. Hierfür wählt sich der Angreifer eine Schwachstelle auf einer Webseite aus, die aktuellste Sicherheitslücken listet (wie zum Beispiel von www.exploit.db.com). Zu den meisten ermittelten Schwachstellen wird eine so genannte „Dork“ geliefert.

Die Dork umfasst eine Zeichenkette, anhand der über eine Google-Suche eine entsprechend verwundbare Webseite gefunden werden kann. Findet der Angriff über eine solche beschriebene Schwachstelle statt, kann anhand der mitgelieferten Beschreibung direkt die vom Angreifer gewünschte SQL-Anfrage abgesetzt werden.

Im Folgenden erläutern wir, wie ein Angreifer bei einem SQL-Injection-gestützten Hack vorgeht:

1. Das Auffinden einer Lücke

Um eine normale SQL Injection zu finden, hängt man an einen GET-Parameter ein Apostroph an:

http://www.[domainname].de/news.php?id=5‘

Führt dies zu einer Fehlermeldung, dann liegt eine potentiell angreifbare Webseite vor. Eine solche Fehlermeldung könnte wie folgt aussehen:

„You have an error in your SQL syntax; check the manual...“

2. Die Anzahl der Spalten ermitteln

Für die weiteren Schritte müssen die von der SQL Query abgefragte Anzahl an Spalten ermittelt werden. Im vorherigen Beispiel führte der Aufruf mit der „id=5“ zu folgender SQL-Anfrage:

SELECT titel, autor, text FROM nachrichten WHERE id=‘5‘;

Die abgefragte Anzahl an Spalten liegt hier bei drei (titel, autor, text). Hiervon hat der Angreifer jedoch noch keine Kenntnis und setzt nun den folgenden Befehl ab:

http://www.[domainname].de/news.php?id=5+order+by+1/*

Unter Umständen muss hinter die 5 das Hochkomma gesetzt werden. Zudem kann es auch sein, dass anstelle des /* ein anderes Kommentarzeichen benutzt werden muss (zum Beispiel: -- oder #).

Führt dieser Befehl einer Fehlermeldung (zum Beispiel: Unknown Column ‚1‘ in ‚order clause‘) muss die Zahl um Eins erhöht werden. Dies geschieht solange, bis es zu keiner Fehlerausgabe mehr kommt.

3. Die Verwendung von UNION SELECT

UNION SELECT verheiratet zwei Abfragen in einem Ergebnis. In der zweiten SQL Query muss dieselbe Anzahl an Spalten wiedergegeben werden, wie in der ersten. Da im Rahmen der „ORDER BY“-Abfrage drei Spalten ermittelt wurden, muss nun das UNION SELECT mit drei Parametern aufgerufen werden, wie zum Beispiel:

http://www.[domainname].de/news.php?id=5+union+select+1,2,3/*

Inhalt

Inhalt des Artikels:

Kommentare werden geladen....

Kommentar zu diesem Artikel

Der Kommentar wird durch einen Redakteur geprüft und in Kürze freigeschaltet.

Anonym mitdiskutieren oder einloggen Anmelden

Avatar
Zur Wahrung unserer Interessen speichern wir zusätzlich zu den o.g. Informationen die IP-Adresse. Dies dient ausschließlich dem Zweck, dass Sie als Urheber des Kommentars identifiziert werden können. Rechtliche Grundlage ist die Wahrung berechtigter Interessen gem. Art 6 Abs 1 lit. f) DSGVO.
  1. Avatar
    Avatar
    Bearbeitet von am
    Bearbeitet von am
    1. Avatar
      Avatar
      Bearbeitet von am
      Bearbeitet von am

Kommentare werden geladen....

Kommentar melden

Melden Sie diesen Kommentar, wenn dieser nicht den Richtlinien entspricht.

Kommentar Freigeben

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

Freigabe entfernen

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Kontaktieren Sie uns über: support.vogel.de/ (ID: 2049623 / Mobile- und Web-Apps)