Web Application Security in der Praxis, Teil 1 SQL Injection – Über das Web-Frontend auf Datenbank-Server zugreifen
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.
Anbieter zum Thema
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
- Seite 1: Wie SQL Injection funktioniert
- Seite 2: Anfällige Webseiten per Google-Suche ermitteln
- Seite 3: SQL-Version und Datenbank-Informationen ermitteln
(ID:2049623)