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.

SQL-Injection-Attacken sind den meisten Administratoren ein Begriff und erfahren somit weniger Aufmerksamkeit, als sie es wert wären. Dieser Artikel beschäftigt sich mit einigen Grundlagen der SQL-Injektion. Außerdem schildern wir die aktuelle Vorgehensweise Schritt für Schritt anhand eines Beispiels.

SQL Injection ist das Ausnutzen einer Schwachstelle im Zusammenhang mit SQL-Datenbanken. Möglich wird dieser Angriff durch eine mangelnde Maskierung bzw. Überprüfung von Metazeichen in Web-Eingabeformularen.

Der Angreifer gibt spezielle Zeichenfolgen an, um über die Webanwendung mögliche Datenbankbefehle abzusetzen. Die Auswirkungen eines solchen Angriffs reichen vom Lesezugriff auf die Datenbank bis hin zur vollständigen Kontrolle des Datenbankservers. Es ist dann dem Angreifer möglich, neben einer DoS-Attacke auch Daten zu manipulieren.

Ein gängiges Beispiel zur Beschreibung einer SQL Injection ist die Login-Maske in einem Webfrontend. In diesem Artikel wird eine aktuellere Form als Beispiel herangezogen.

Wie SQL Injection funktioniert

Gehen wir in unserem Beispiel von einer Webseite aus, die ein PHP-Skript enthält, das Nachrichten aus der eigenen Datenbank ausliest und anzeigt:

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

Hierbei wird an die Variable „id“ des besagten PHP-Skriptes „News.php“ der Wert 5 übergeben. Die daraus erzeugte SQL Query (Datenbankanfrage bzw. -abfrage) lautet:

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

Nun gibt ein Angreifer beispielsweise folgendes als Aufruf ein:

http://www.[domainname].de/news.php?id=5‘; UPDATE+USER+SET+TYPE=‘admin‘+WHERE+ID=‘123

Daraus resultiert die verheerende SQL Query:

SELECT titel, autor, text FROM nachrichten WHERE id=‘5‘; UPDATE USER SET TYPE=‘admin‘ WHERE ID=‘123‘;

Man beachte bei der Eingabe auf die Zeichenfolge ‚; Mit dieser Eingabe wird die eigentliche SQL-Abfrage beendet. Die dahinter stehenden Zeichen führen zur einer weiteren SQL Query, deren Inhalt der Angreifer selbst definiert.

Im vorliegenden Fall wird der Benutzerstatus für den Benutzer mit der ID=123 auf Admin-Status hochgestuft. Damit könnte ein Angreifer zum Beispiel einen vorher selbst erstellten Kundenbenutzer zu einem Admin-Benutzer hochstufen.

An der Stelle, des so eingeschleusten Codes könnten auch SQL-Anfragen stehen, die Benutzernamen-Passwort-Kombinationen anzeigen, Daten löschen oder verändern oder auch den Datenbankdienst herunterfahren.

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? Infos finden Sie unter www.mycontentfactory.de (ID: 2049623 / Mobile- und Web-Apps)