databaseSQL 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:

chevron-rightDatenmanipulationhashtag
  • Datensätze hinzufügen

  • Datensätze ändern

  • Datensätze löschen

  • ganze Tabellen oder Datenbanken verändern

chevron-rightDatendiebstahlhashtag
  • Zugriff auf sensible Daten (z. B. Benutzerkonten, Passwörter)

  • Auslesen vertraulicher Informationen

chevron-rightRechteausweitunghashtag
  • Angreifer können sich Administratorrechte verschaffen

  • Rechte anderer Nutzer ändern oder entziehen

chevron-rightSchadcode platzierenhashtag
  • 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