Error Based SQL Injection
Bei der Error Based SQL Injection (auf deutsch: fehlerbasierte SQL Injektion) handelt es sich um eine Variante der In-Band SQL Injection. Sie gilt als eine Sonderform der SQL Injection, da sie sich Fehlermeldungen (z.B. Stacktraces oder Error Messages), die ungeprüft bzw. ungefiltert durch eine Applikation, Datenbank und/oder Webserver an den User zurückgegeben werden, zu nutze macht.¹) ²)
Durch das Senden von ungültigen Eingaben an die Datenbank werden Fehlermeldungen erzwungen.
Diese an den Anwender zurückgegebenen Fehlermeldungen enthalten dann Informationen aus/über das zugrundeliegende DBMS, den Aufbau bzw. die Struktur der Datenbank, das Filesystem oder die Middleware/Applikation, die ein Angreifer auswertet und für seinen Angriff benötigt.
Die Informationen reichen von einzelnen Tabellen/Spaltennamen bis hin zu vollständigen Zugangsdaten der Datenbank. Unter Umständen reicht ein einzelner dieser Angriffe, um eine komplette Datenbank zu listen oder im Falle des Erlangens von administrativen Zugangsdaten zur Übernahme der Datenbank.
Während der Entwicklung einer Applikation sind solche Fehlermeldungen - besonders beim Debugging - sehr hilfreich und erforderlich. In Produktiv-/Liveumgebungen sollte die Ausgabe von Datenbank-Fehlermeldungen deaktiviert werden oder das Logging von Fehlermeldungen in einen geschützten Bereich (z.B. zentrales Log-Management) bzw. systemseitig in zugriffsbeschränkte Log-Files protokolliert werden.
Die Error Based SQL Injection ist neben der Blind- und Union SQL Injection eine der am häufigsten verwendeten Angriffsmöglichkeiten auf Datenbanksysteme.
Wird eine Abfrage mit zwei verschachtelten Queries (z.B. SELECT + GROUP BY über spezifische Spalte) abgesetzt, um an Fehlermeldungen zu gelangen, spricht man in diesem Fall auch häufig von einer sogenannten Double Query SQL Injection statt einer Error Based SQL Injection³.
Quellen:
¹) Buch von Justin Clarke „SQL-Injektion“ (Clarke, Justin. SQL Hacking . München, Germany: Franzis Verlag GmbH,2016. 978-3-645-60466-6 ²) https://medium.com/@hninja049/example-of-a-error-based-sql-injection-dce72530271c ³) https://skytale.academy/it-sicherheit-wiki.html