Obwohl Linux als freie Software kostenlos verfügbar ist, setzen viele beim Unternehmenseinsatz auf Enterprise-Distributionen mit Support. Wo die Stärken der ... (mehr)

Das Hochkomma

Um nun auf eine potenzielle SQL-Injection Lücke zu überprüfen, trägt man in das Feld zunächst ein Hochkomma ein. Eine SQL Injection ist nur dann möglich, wenn eine Applikation Benutzereingaben als Teil einer SQL-Abfrage an den Server weiterleitet, ohne die Benutzereingaben auf etwaige enthaltene Metazeichen (umgekehrter Schrägstrich, Apostroph, Anführungszeichen, Semikolon) zu prüfen und diese zu maskieren. Im Testfall gibt die Datenbank folgende Fehlermeldung aus:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''''' at line 1

Dies ist ein erster Hinweis auf eine potenzielle SQL-Injection-Lücke.

Ziel einer SQL-Injection-Attacke ist es, möglichst sensible Informationen aus einer Datenbank zu extrahieren, doch ein Angriff auf eine Datenbank kann noch viel weiter reichende Folgen haben.

SQLmap

Die quelloffene Software SQLmap bietet die perfekte Basis für einen umfangreichen Angriff auf Datenbanksysteme. Es ist in Python geschrieben, daher systemunabhängig und lässt sich beliebig durch Module erweitern. SQLmap benötigt Python mindestens in Version 2.6.

Für die Takeover-Funktionen setzt es eine Installation des Metasploit-Frameworks voraus. SQLmap unterstützt alle gängigen Datenbanksysteme wie MySQL, PostgreSQL, Oracle und Microsoft SQL Server. Darüber hinaus kennt es fünf verschiedene SQL-Injection-Methoden: boolean-based blind, time-based blind, error-based, UNION query, stacked queries und out-of-band. Der Befehl »python sqlmap.py« startet das Tool auf der Kommandozeile.

Die zu überprüfende URL folgt hinter dem Parameter »-u« in Anführungszeichen. Mit dem Wissen, dass die Sql-Injection-Lücke im Eingabefeld »ID« zu finden ist, wird der Aufruf um den Parameter »--forms« erweitert, der SQLmap anweist, alle Eingabefelder auf SQL-Injection-Lücken zu testen. Durch einen früheren Login-Versuch hat der Benutzer ein Session Cookie bekommen, das man Sqlmap unbedingt mitteilen muss, damit der Angriff gelingt. Dies lässt sich beispielsweise mit dem Firefox-Plugin "Tamper Data" herausfinden. Der zusammengesetzte Befehl sieht nun so aus :

sqlmap.py -u "http://127.0.0.1/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#"--cookie="PHPSESSID=ce0aa7922720f3190bf9bbff7f24c434;security=low" --forms

SQLmap findet nach kurzer Zeit das passende Feld »ID« und fragt nach, ob dieses Feld überprüft werden soll. Nach dem Bestätigen startet die Analyse des Feldes.

GET http://127.0.0.1:80/dvwa/vulnerabilities/sqli/?id=&Submit=Submit
Cookie: PHPSESSID=ce0aa7922720f3190bf9bbff7f24c434;security=low
do you want to test this form? [Y/n/q]

Nach einem erfolgreichen Scan präsentiert SQLmap die möglichen Angrifsvektoren in Form fertiger SQL-Statements. An diesem Punkt kann der Benutzer entscheiden, ob er den Angriff manuell fortführt oder ob SQLmap versuchen soll, die Lücke auszunützen. Nach der Bestätigung ist die Arbeit erledigt, da es keine weiterführenden Parameter gibt.

Ähnliche Artikel

Kommentare

Sehr gut!

Sehr informativer und guter Artikel! Weiter so!

comments powered by Disqus
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Ausgabe /2023