Neu: EU CAPTCHA – DSGVO-konformer Bot-Schutz. Jetzt 3 Monate kostenlos testen.
Home>
SQL Injection
Der Abruf eines Users über eine ID aus einer Datenbank erfolgt typischerweise über eine REST-API:
https://myapi.com/users/123
Diese Eingabe würde wahrscheinlich zu einer (nicht gesäuberten) Anfrage wie dieser führen würde:
SELECT * FROM users WHERE id = 123
Fehlt eine Eingabevalidierung, kann ein Angreifer die URL manipulieren:
https://myapi.com/users/123;DELETE FROM users WHERE id != 0
Das Ergebnis: Alle Nutzerdaten werden gelöscht.
Hat der Angreifer Kenntnisse über die Datenstruktur in der Datenbank, könnte er durch Hinzufügen oder Aktualisieren von Einträgen in der Datenbank an Admin-Rechte gelangen:
https://myapi.com/users/123;UPDATE users SET admin = 1 WHERE id = 456
Weitere detaillierte Fallbeschreibungen einer SQLi Attack, inklusive Code-Beispielen finden sich auf der Webseite der OWASP Foundation.
03
Es gibt mehrere technische Varianten von SQL-Injection-Angriffen. Die wichtigsten im Überblick:
In-Band SQLi | Error-based | Datenbankfehlermeldungen liefern Infos über die Datenbankstruktur |
In-Band SQLi | Union-based | UNION-Operator kombiniert Ergebnisse mehrerer SELECT-Abfragen und gibt sie in der HTTP-Antwort zurück |
Blind SQLi | Boolean-based | Keine direkte Ausgabe; Angreifer schlussfolgert über True/False-Antworten |
Blind SQLi | Time-based | Zeitverzögerungen in der Antwort verraten Datenbankinhalt |
Out-of-Band SQLi | – | Daten werden über einen separaten Kanal (z. B. DNS) exfiltriert |
In-Band SQLi umfasst zwei Haupttechniken: Error-based und Union-based. Error-based Injection nutzt Datenbankfehlermeldungen, um Informationen über die Datenbankstruktur zu gewinnen. Union-based kombiniert Ergebnisse aus mehreren Tabellen über den UNION-SQL-Operator und ermöglicht so Datenextraktion und unbefugten Zugriff.
Error-based: Der Angreifer sendet SQL-Abfragen, die Fehler erzeugen, und wertet die Fehlermeldungen des Datenbankservers aus. So erhält er Informationen über die Datenbankstruktur. In manchen Fällen reicht Error-based SQLi allein aus, um eine gesamte Datenbank aufzuzählen.
Union-based: Union-based SQLi ist eine In-Band-Technik, die den UNION-SQL-Operator nutzt, um Ergebnisse von zwei oder mehr SELECT-Abfragen zu kombinieren und als Teil der HTTP-Antwort zurückzugeben.
Blind SQL Injection ist eine Art von SQLi-Angriff, bei dem der Angreifer der Datenbank Wahr-oder-Falsch-Fragen stellt und die Antwort anhand der Reaktion der Anwendung bestimmt. Diese Angriffsmethode wird häufig eingesetzt, wenn die Webanwendung keine direkten Datenbankausgaben oder Fehlermeldungen zurückgibt, der Angreifer also „blind“ agiert. Statt Daten direkt abzulesen, stellt er der Datenbank gezielte Fragen und zieht aus dem Verhalten der Anwendung Rückschlüsse. Es gibt zwei Untertypen:
Boolean-based: Der Angreifer sendet SQL-Abfragen, die die Anwendung je nach Ergebnis (wahr oder falsch) unterschiedlich reagieren lassen. Abhängig vom Ergebnis ändert sich der Inhalt der HTTP-Antwort oder bleibt gleich.
Time-based: Time-based SQLi ist eine inferentielle Technik, bei der eine SQL-Abfrage die Datenbank zwingt, eine bestimmte Zeitspanne zu warten, bevor sie antwortet. Aus der Anwortzeit lassen sich dann Rückschlüsse auf den Wahrheitswert der Abfrage ziehen.
Out-of-Band SQL Injection ist eine selten eingesetzte SQLi-Variante, bei der Angriff und Datenexfiltration über zwei getrennte Kommunikationskanäle laufen. Der Angreifer schleust SQL-Befehle über den normalen Eingabekanal ein, die gestohlenen Daten werden jedoch nicht über die HTTP-Antwort zurückgegeben, sondern aktiv vom Datenbankserver an einen vom Angreifer kontrollierten externen Server übermittelt, typischerweise via DNS- oder HTTP-Request. Diese Methode setzt voraus, dass der Datenbankserver ausgehende Netzwerkverbindungen initiieren kann, was in gut abgesicherten Umgebungen oft unterbunden ist.
SQL Injection (kurz: SQLi) ist eine Cyberattacke, bei der Angreifer gezielt bösartige SQL-Befehle in eine Webanwendung einschleusen. Ziel ist es, unbefugten Zugriff auf Datenbanken zu erlangen, sensible Daten zu stehlen, zu manipulieren oder ganze Systeme zu übernehmen. SQL Injection zählt laut OWASP zu den kritischsten Sicherheitsrisiken für Webanwendungen.
Björn Greif
Senior Editor
Björn Greif startete seine Redakteurskarriere 2006 beim IT-Nachrichtenportal ZDNet. 10 Jahre und exakt 12.693 Artikel später engagierte er sich beim deutschen Start-up Cliqz für mehr Privatsphäre und Datenschutz im Web. Vom Datenschutz zur IT-Sicherheit war es dann nur noch ein kleiner Schritt: Seit 2020 schreibt Björn bei Myra über die neusten Trends und Entwicklungen in der Welt der Cybersecurity.