Zeitbasierte SQL Injection Attacken

Aus IT-Forensik Wiki
Version vom 23. Februar 2022, 22:48 Uhr von St190800 (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „<big>Zeitbasierte SQL Injection Attacken</big> Zeitbasierte SQL Injection Attacken werden häufig dann genutzt, wenn andere Arten von SQLi wenig oder eingesch…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

Zeitbasierte SQL Injection Attacken

Zeitbasierte SQL Injection Attacken werden häufig dann genutzt, wenn andere Arten von SQLi wenig oder eingeschränkte Ergebnisse vom Zieldatenbanksystem liefern. Diese zeitbasierte Angriffsmethode schleust komplexere Abfragen in das SQL-Statement, die wiederum zu Zeitverzögerungen bei den Antworten oder hoher Auslastung am Zieldatenbanksystem führen sollen. Abhängig von der Zeit, die das Datenbanksystem benötigt, um zu antworten ist es möglich einige Informationen daraus zu ermitteln (Inferenzansatz, Informationserschließung). Diese Herangehensweise der Deduktion von Informationen ist sehr nützlich für sog. "Blind SQLi" und "Deep Blind SQLi".


SQL Injection mit einer Zeitverzögerung (Time Delay)


Zeitbasierte Attacken können genutzt werden, um grundlegende Informationen zur Datenbank zu ermitteln oder das Vorhandensein einer Schwachstelle. Es ist keine unübliche Vorgehensweise, wenn ein Angreifer mit einer zeitbasierten "Deep Blind SQLi" Attacke dem Zieldatenbanksystem Informationen entlocken will.

In folgender Tabelle wird exemplarisch aufgezeigt, wie die Ausführung der SQL-Anfrage verzögert werden kann in einigen Beispielen an unterschiedlichen DBMS Typen.

DBMS Befehl Beispiel Kommentare
MySQL SLEEP(Zeit) SELECT ... SLEEP(60) Die Zeitangabe erfolgt in Sekunden und ist verfügbar ab MySQL Version 5.
MySQL BENCHMARK(Anzahl, Ausdruck) SELECT BENCHMARK(100000000, 'SELECT ...') Führt die Anweisung vielfach aus. Mit der Nutzung einer zu Beginn hohen Zahl ist es möglich eine Verzögerung im Zieldatenbanksystem zu generieren
MS-SQL, Transact-SQL WAITFOR DELAY 'hh:mm:ss' SELECT ... WAITFOR DELAY '00:00:15' SELECT ... Verzögert die Ausführung des Befehls um den angegebenen Zeitraum
MS-SQL, Transact-SQL WAITFOR TIME 'hh:mm:ss' SELECT ... WAITFOR TIME '14:15:00' SELECT ... Verzögert die Ausführung des Befehls und führt diesen fort, wenn der angegebene Zeitpunkt erreicht ist