SQL Injection

SQL-Injection

Copyright © Shutterstock/bullion73

Was ist SQL Injection?

Bei der SQL Injection handelt es sich um eine Sicherheitsschwachstelle, die regelmäßig in der OWASP Top 10, einer Liste mit typischen und anerkannten Sicherheitsanfälligkeiten, gelistet ist. Zur Verbesserung der Internet- und Softwaresicherheit, wird diese Liste mit Anfälligkeiten von der Non-Profit Organisation OWASP (Open Web Application Security Project) veröffentlicht.

Beschreibung

Bei einer SQL Injection werden spezielle Elemente eines SQL-Befehls durch externe Eingaben beeinflusst, die nicht oder fehlerhaft neutralisiert werden. So kann der beabsichtigte SQL-Befehl verändert werden, wenn dieser gesendet wird.

Wenn die SQL-Syntax in den vom Benutzer kontrollierbaren Eingaben nicht ausreichend entfernt oder in Anführungszeichen gesetzt wird, kann die generierte SQL-Abfrage dazu führen, dass diese Eingaben als SQL und nicht als normale Benutzerdaten interpretiert werden. Diese Informationen können verwendet werden, um die Sicherheitsprüfungen zu umgehen, oder um zusätzliche Anweisungen einzufügen. Dabei kann die Back-End-Datenbank verändert werden und möglicherweise die Ausführung von Systembefehlen einschließen.

Die SQL Injection ist somit ein häufiges Problem bei datenbankgestützten Websites. Diese Schwachstelle ist leicht zu erkennen und kann ebenso leicht ausgenutzt werden. Daher ist es wahrscheinlich, dass jede Website oder Softwarepaket mit Benutzerbasis einem SQL-Angriff ausgesetzt ist. Dieser Fehler basiert darauf, dass SQL nicht zwischen Steuerungs- und Datenebene unterscheidet und kann sich aus Fehlern bei der Verwaltung von Sonderzeichen, MAID oder Blacklist bzw. Whitelist ergeben. Dies kann zu Authentifizierungsfehlern führen.

Identifizierung

Um eine SQL Injection festzustellen werden Fehler-basierte, Boolean-basierte, Anschluss-basierte und gestapelte Abfragen-SQL-Injektionstechniken verwendet. Eine RDBMS-unabhängige SQL-Schwachstelle wird identifiziert, indem URL- und Formularparameter mit Fragmenten gültiger und ungültige SQL-Syntax angreifen wird. Mit dem RDBMS kann ein Fingerabdruck zugeordnet werden, wenn eine bekannte RDBMS-spezifische SQL-Fehlermeldung ausgegeben wird. So kann auch eine Advanced SQL Injection erkannt werden.

Tipp

Überprüfen Sie die Sicherheit Ihrer Website mit unserem kostenlosen Security Crawler oder mit der OSG Performance Suite Free Version.

Varianten der SQL Injection

Es gibt mehrere Varianten der SQL Injection, die auf unterschiedliche SQL-Datenbanken ausgerichtet sind:

  • Hypersonic SQL
  • MsSQL
  • MySQL
  • Oracle SQL
  • ProstgreSQL
  • SQLite

Um diese SQL Injections zu identifizieren, wird spezifischer SQL-Syntax verwendet. Diese zu erkennen ist zeitintensiv und dient dazu hartnäckige und nicht offensichtliche SQL-Sicherheitsschwachstellen in den Datenbanken zu finden.

Vermeidung

Um sicherzustellen, dass durch unautorisierte Datenbankzugriffe keine Daten gestohlen werden können, muss zwischen erlaubten und unerlaubten Anfragen unterschieden werden. Es bedarf einer Validierung der Eingaben durch den Benutzer.

Das Anzeigen interner Fehlermeldung erhöht das Risiko, dass Informationen angefangen werden und zum Zugriff auf Daten durch unbefugte Dritte verwendet werden.

Datenbanklink zur Schwachstelle

https://cwe.mitre.org/data/definitions/89.html


Sie haben noch Fragen?

Kontaktieren Sie uns

Kostenloser SEO-Check der OSG


Weitere Inhalte