Den Begriff SQL-Injection hat man vielleicht schon einmal gehört. Die, die SQL-Injections kennen wissen, wie kritisch diese zu bewerten sind. Selbst Content-Management-Systeme wie WordPress hatten schon einmal Probleme mit SQL-Injections und auch dies zeigt deutlich, wie weit derartige Sicherheitslücken verbreitet sind. Mit den folgenden Tools für SQL-Injections ist es möglich, eigene Tests durchzuführen.
Was ist eine SQL-Injection und wie funktioniert sie?
Kurz gesagt ist eine SQL-Injection ein Einschleusen eines SQL-Befehls, der es ermöglicht, sensible Informationen aus einer Datenbank zu erlangen oder selbige gar zu zerstören oder zu manipulieren. Kein Wunder also, dass die SQL-Injection mit zu den schwerwiegendsten Sicherheitslücken gezählt werden kann und auch gezählt werden sollte. Eine SQL-Injection kann dabei über beliebige Eingabefelder erfolgen. Logins beispielsweise, die Nutzerdaten abfragen. Eine detaillierte Beschreibung des Angriffs haben wir in einem älteren Blogartikel veröffentlicht.
Mittlerweile gibt es viele Tools, die SQL-Injections automatisiert durchführen können, beispielsweise für Penetrationstests.
10 Tools für SQL-Injections
Die folgenden Tools können SQL-Injections ausführen und Datenbanken, wie auch Systeme gezielt angreifen. Natürlich nur dann, wenn diese bereits Ihnen gehören oder Sie über entsprechende Genehmigungen für den Angriff zu Testzwecken verfügen.
BBQSQL
Das Ausnutzen von blinden SQL-Injections kann sehr zeitaufwendig und kompliziert sein. Die SQL-Injection Tools helfen zwar dabei, doch wenn es mal hakt, muss etwas Eigenes programmiert werden. BBQSQL ist ein Blind SQL Injection Framework, welches diesen Vorgang erleichtert. Das Tool selbst ist dabei besonders flexibel einsetzbar. Die Benutzeroberfläche sorgt für schnelle Erfolge und das Tool selbst ist in Python geschrieben.
Blind SQL Bitshifting
Hierbei handelt es sich um ein Modul, welches die Bitshifting-Methode einsetzt, die Zeichen also berechnet und nicht errät. Je nachdem, wie es eingestellt wird, benötigt Blind SQL Bitshifting 7/8 Anfragen pro Zeichen, um eine blinde SQL-Injektion durchzuführen.
Blisqy
Auch Blisqy funktioniert mittels Blind-SQL-Injection. Über einen langsamen Datenabgriff auf MySQL oder MariaDB via blinder SQL-Injection. Um das Tool zu nutzen, muss bereits eine potenzielle Blind SQL Injection bzw. die Schwachstelle identifiziert worden sein.
DSSS
Die Abkürzung DSSS steht im Grunde für nichts anderes als Damn Small SQLi Scanner. Es handelt sich bei dem Tool also um einen vollwertigen SQL-Injection Schwachstellen-Scanner der GET- und POST-Anfragen unterstützt. Das gesamte Tool wurde übrigens in unter 100 Zeilen Code geschrieben und ist somit ein echtes Leichtgewicht.
Explo
Das Tool Explo vereinfacht die Beschreibung von Sicherheitsrisiken in verständlicher und lesbarer Form. Dabei geht es vorwiegend darum, die Schwachstellen für Maschinen lesbar zu gestalten. Es setzt zudem auf einen Anfrage/Bedingungs-Workflow, um Schwachstellen aktiv ausnutzen zu können, ohne extra Skripte oder Ähnliches zu benötigen. Komplexe Schwachstellen werden so auf einfachste Arte und Weise mitgeteilt.
jSQL Injection
Das kleine SQL-Injection Tool jSQL Injection dient dazu, auf einfachste Art und Weise Datenbankinformationen von externen Servern auszulesen. Das Tool ist Teil von Kaili Linux und somit ideal zur Penetration von IT-System geeignet. Außerdem ist jSQL komplett kostenlos, quelloffen und kann problemlos unter Windows, Linux und MacOS eingesetzt werden.
Leviathan
Beim Audit-Tool Leviathan handelt es sich um ein sehr mächtiges Programm, welches für die Recherche von Schwachstellen verwendet werden kann, ebenso wie für Brute-Force-Attacken und SQL-Injections. Auch eigene Exploits können mithilfe von Leviathan ausgeführt werden. Die Sammlung besteht aus Open-Source-Tools wie masscan, dsss sowie ncrack und verleiht diesen Möglichkeiten, um alle in Kombination einzusetzen.
NoSQLMap
Das Python-Tool NoSQLMap dient dazu, Schwachstellen in NoSQL-Datenbanken aufzudecken und aktiv auszunutzen. Die Konzentration liegt auf MongoDB, aber auch andere NoSQL-basierte Plattformen, etwa Redis oder Cassandra sind bereits geplant. Das Projekt hat das Ziel, ein Penetrationstest-Tool bereitzustellen, welches Angriffe auf Datenbanken vereinfacht und bestmöglich automatisiert.
SQLMap
Bei SQLMap handelt es sich um ein Open-Source-Tool für Penetrationstests. Es dient dazu, die Erkennung und Ausnutzung von SQL-Injections automatisiert zu übernehmen. Vom Datenbank-Fingerprinting bis zum Zugriff auf das gesamte Dateisystem ist mit SQLMap in Verbindung mit dem Penetrationstest so ziemlich alles möglich.
Whitewidow
Auch bei Whitewidow handelt es sich um einen SQL-Schwachstellen-Scanner. Dabei nutzt das Tool eine Dateiliste und Google, um potenziell schwerwiegende Schwachstellen zu finden. Über die Macht von Google Hacking hatten wir schon einmal berichtet und auch hier kommt es wieder zum Einsatz. Zufällige User-Agents und IP-Adressen, das Auslesen von Serverinformationen und SQL-Injektionssyntaxen, zeichnen Whitewidow aus. Whitewidow wurde dabei allerdings vor allem für Lernzwecke entwickelt und soll zeigen, wie Sicherheitslücken funktionieren.
Können mich Tools für SQL-Injections schützen?
Weil SQL-Injections die Datenbank einer Anwendung manipulieren, verändern oder gar neu schreiben, sollten diese nach Möglichkeit entsprechend verhindert werden. Doch wie ist das möglich und gelingt dies tatsächlich auf vergleichsweise einfache Art und Weise? Oft sind es nur kleine Fehler, die eine SQL-Injection erlauben.
Um klassische SQL-Injections zu vermeiden, müssen sämtliche Eingaben des Benutzers sanitized, also gesäubert werden. Jegliche mit der benutzten Datenbank in Verbindung stehende Sonderzeichen müssen escaped werden. Auch Prepared Statements, also vorbereitete Anweisungen, helfen dabei, typische SQL-Injections entsprechend auszuschließen.
Im Falle von WordPress sind SQL-Injection Schwachstellen übrigens mittlerweile sehr selten geworden. Jedenfalls dann, wenn die Datenbank von WordPress stets mit nativen WordPress-Funktionen abgefragt wird. Themes und Plugins können hier zu Schwachstellen werden. Speziell dann, wenn sie eigene Funktionen mitbringen, die wiederum Sicherheitslücken enthalten. Regelmäßige Aktualisierungen sind hier oft der beste Schutz für SQL-Injections.