SQL Injection
SQL-Injection ist eine Angriffstechnik, bei der Angreifer bösartigen SQL-Code in Eingabefelder einer Anwendung einschleusen, um die dahinterliegende Datenbank zu manipulieren oder auszulesen.
Der Angriff funktioniert, wenn Benutzereingaben ungeprüft in SQL-Abfragen eingebaut werden.
Ziele und Folgen
Ein erfolgreicher Angriff kann folgende Folgen haben:
Datenmanipulation
Datensätze hinzufügen
Datensätze ändern
Datensätze löschen
ganze Tabellen oder Datenbanken verändern
Datendiebstahl
Zugriff auf sensible Daten (z. B. Benutzerkonten, Passwörter)
Auslesen vertraulicher Informationen
Rechteausweitung
Angreifer können sich Administratorrechte verschaffen
Rechte anderer Nutzer ändern oder entziehen
Schadcode platzieren
Ersetzen von Webseiten
Einfügen von schädlichen Dateien
Ausspionieren von Nutzern oder Systemdaten
Ursachen
SQL-Injection entsteht durch unsichere Programmierung, z. B.:
Fehlende Hochkommas in SQL-Abfragen
Keine Typenprüfung von Eingaben
Keine Längenprüfung
Keine Maskierung von Sonderzeichen (z. B. ' oder --)
Direkte Übernahme von Benutzereingaben in SQL-Befehle
Angriffsformen
Angreifer verändern bestehende SQL-Abfragen, um:
logische Bedingungen zu manipulieren
Teilabfragen zu entfernen
neue SQL-Befehle einzufügen
Fehlermeldungen zu erzeugen
den Datenbankprozess zu beeinflussen
Beispiel
Folgender Code wird auf eine Login-Seite ausgeführt:
Dieser Code überprüft Benutzername und Passwort in der Datenbank.
Nun kann der Hacker folgende Eingaben machen:
Dies ergibt folgende SQL-Abfrage:
Da ‘a’=‘a’ immer wahr ist, wird die Bedingung erfüllt. Der Angreifer wird eingeloggt, ohne das Passwort zu kennen.
Zuletzt aktualisiert