WAFPlanet

SQL-Injection (SQLi)

Angriffstypen

Quick Definition

Eine Angriffstechnik, die Schwachstellen in der Datenbankschicht einer Anwendung ausnutzt, indem bösartiger SQL-Code in Abfragen eingefügt wird.

Was ist SQL-Injection?

SQL-Injection (SQLi) ist eine der ältesten und gefährlichsten Schwachstellen in Webanwendungen. Sie tritt auf, wenn ein Angreifer in der Lage ist, bösartigen SQL-Code in eine Abfrage einzufügen, die eine Anwendung an ihre Datenbank sendet. Dies geschieht, wenn Benutzereingaben falsch gefiltert oder nicht ordnungsgemäß parametrisiert werden.

SQL-Injection-Angriffe können:

  • Authentifizierung umgehen, um unbefugten Zugriff zu erlangen
  • Sensible Daten aus der Datenbank lesen
  • Daten ändern oder löschen
  • Administrative Operationen auf der Datenbank ausführen
  • In einigen Fällen Befehle auf dem Betriebssystem ausführen

Es gibt mehrere Arten von SQL-Injection:

  • In-Band SQLi: Der Angreifer verwendet denselben Kanal, um den Angriff zu starten und Ergebnisse zu sammeln (fehlerbasiert, UNION-basiert)
  • Blind SQLi: Keine sichtbaren Fehlermeldungen; Angreifer schließt auf Daten basierend auf dem Anwendungsverhalten
  • Out-of-Band SQLi: Daten werden über verschiedene Kanäle abgerufen (DNS, HTTP-Anfragen)

Beispiele

Betrachten Sie ein Anmeldeformular, bei dem die Backend-Abfrage lautet:

SELECT * FROM users WHERE username='$user' AND password='$pass'

Ein Angreifer, der admin'-- als Benutzernamen eingibt, würde die Abfrage umwandeln in:

SELECT * FROM users WHERE username='admin'--' AND password='...'

Das -- kommentiert den Rest der Abfrage aus und ermöglicht die Anmeldung ohne Passwort.

Häufig gestellte Fragen

Wie schützen WAFs vor SQL-Injection?

WAFs verwenden Musterabgleich und signaturbasierte Erkennung, um SQL-Injection-Versuche in HTTP-Anfragen zu identifizieren. Sie suchen nach verdächtigen SQL-Schlüsselwörtern, Sonderzeichen und bekannten Angriffsmustern in Query-Strings, Formulardaten und Headern. Fortgeschrittene WAFs verwenden auch Verhaltensanalyse, um neuartige Angriffe zu erkennen.

Reichen parametrisierte Abfragen aus, um SQL-Injection zu verhindern?

Parametrisierte Abfragen (Prepared Statements) sind die effektivste Verteidigung gegen SQL-Injection auf Anwendungsebene. WAFs bieten jedoch Defense-in-Depth, indem sie Angriffe am Edge abfangen, Legacy-Anwendungen schützen und Schutz bieten, während Code gepatcht wird.