Opfer für SQL-Injection per Suchmaschine finden

Sonntag, 30. Mai 2010, 19:52 Uhr |  Autor:

SQL-Injection

SQL-Injection (dt. SQL-Einschleusung) bezeichnet das Ausnutzen einer Sicherheitslücke in Zusammenhang mit SQL-Datenbanken, die durch mangelnde Maskierung oder Überprüfung von Metazeichen in Benutzereingaben entsteht. Der Angreifer versucht dabei, über die Anwendung, die den Zugriff auf die Datenbank bereitstellt, eigene Datenbankbefehle einzuschleusen. Sein Ziel ist es, Daten in seinem Sinne zu verändern oder Kontrolle über den Server zu erhalten.

Quelle: http://de.wikipedia.org/wiki/SQL-Injection


Google indexiert nicht nur das was der Betreiber einer Website gerne unters Netzvolk bringen möchte, sondern auch peinliche oder gar gefährliche Fehlermeldungen, die schwerwiegende Sicherheitslücken anzeigen können.

Folgende Meldung hat jeder, der öfter im Netz unterwegs ist, sicher schon einmal gesehen:
SQL-Injection - Die Fehlermeldung für Suchmaschinen
Eine Fehlermeldung die anzeigt dass mit der Datenbank, bzw. dem Script welches auf sie zugreift, etwas nicht in Ordnung ist.

In diesem Fall hat Google eine Seite noch im Index gelistet die es nicht mehr gibt. Anstatt eines Hinweises, dass die Seite gelöscht wurde und eine Weiterleitung zur Startseite folgt, erscheint die Fehlermeldung aus der Datenbank. Ein Angreifer kann nun hoffen hier leichtes Spiel zu haben.


Suchmaschinen haben noch keine Algorithmen parat, die dafür sorgen dass solche Seiten sofort aus dem Index entfernt werden. Alleine das Auftauchen des Textes einer Fehlermeldung in einer Website bedeutet ja nicht unbedingt dass es sich um einen Fehler in der Website selber handelt. In den Suchergebnissen listen die Suchmaschinen auch Foreneinträge auf, in denen jemand fragt was es mit der Fehlermeldung auf sich hat und wie der Fehler behoben werden kann.


Ein Angreifer würde nun als erstes versuche zu ermitteln welches CMS, welcher Shop, etc. auf der Seite benutz wird. Wenn er dies herausfinden kann, dann weiß er unter Umständen welche Struktur die Datenbank hat und kann ganz gezielt versuchen Daten auszulesen.

In einem für ihn unbekannten System wird er versuchen zu klären wie viele Spalten die Tabelle hat, hierfür würde er folgenden Code injizieren:
UNION SELECT 1,2,3,4,5,6,7,8,9,10

Solange die Meldung The used SELECT statements have a different number of columns angezeigt wird, besteht der Datenbankeintrag aus mehr oder auch weniger Spalten.
SQL-Injection - Ermitteln der Anzahl der Spalten
Einfaches Anhängen eines weiteren Komma und einer Zahl wird solange wiederholt, bis diese Fehlermeldung nicht mehr erscheint. Wurde die Anzahl der Spalten erfolgreich ermittelt, wird auf der Website irgendwo eine oder mehrere der injizierten Zahlen angezeigt:
SQL-Injection - Anzahl der Spalten bekannt
Eine der Zahlen wird mit SQL-Befehlen ersetzt, die dem Angreifer die entsprechenden Informationen liefern:
SQL-Injection - Erste injizierten SQL-Befehle

Was ein Angreifer mit einer SQL-Injection anfangen kann, ist von dem verwendeten System abhängig. Auf jeden Fall wird er versuchen die Passworte bzw. deren Hash auszulesen, mit samt dem Usernamen. Da leider noch immer in vielen Systemen die Passworte nur aus einem ungesalzenen Hash bestehen, gibt es immer die Gefahr, dass einfache Passworte gecrackt werden können. Das Ziel eines Angreifers in einem Shop können aber auch die in der Datenbank gespeicherte Zahlungsinformationen der Kunden sein, um deren Bankkonto leerzuräumen oder die Kreditkarte zu belasten.


Von 500 untersuchten Suchergebnissen fand ich in mehr als 80% der Seiten die Fehlermeldung aus der Datenbank, also eine potenzielle Sicherheitslücke zu SQL-Injection. Zum Teil sind es alte Seiten, die wohl schon seit längerer Zeit nicht mehr gepflegt und genutzt werden. Warum diese Seiten nicht einfach gelöscht werden ist mir nicht klar, denn auch und vor allem diese Seiten können für Angreifer sehr interessant sein. Ein Angriff und eine erfolgte Injektion wird in solchen Seiten erst sehr spät, wenn überhaupt, erkannt.

Unter meinen, bzw. Googles, Fundstücken waren neben Shops, Dienstleister für IT-Security, Webagenturen und Programmierer, auch Seiten von Banken und Regierungsorganisationen. Schwachstellen zu SQL-Injection sind sehr weit verbreitet, was schon an der Vielzahl der Ergebnisse in Suchmaschinen abzuschätzen ist.

Tags »   

Trackback: Trackback-URL | Feed zum Beitrag: RSS 2.0
Thema: Google, Sicherheit, SQLi

Kommentare und Pings sind geschlossen.