Eine Fallstudie in Datenbanksicherheit Vulnerability

In dieser Fallstudie, Chip Andrews, ein Experte in der SQL Server-Sicherheit, teilte diese Erfahrung (ethisch) Hacking in eine Client-Datenbank zu Sicherheitslücken aufzudecken. Dieses Beispiel stellt ein warnendes Beispiel, Ihre wichtigen Daten zu schützen, indem sie auf Klang-Datenbank-Sicherheit.

Menu

Die Situation

Bei einer Routinepenetrationstest durchgeführt, Herr Andrews die obligatorischen Google-Suchanfragen, Domainnamenforschung, das Betriebssystem von Fingerabdrücken und Port-Scans, aber diese spezielle Website wurde eng gesperrt. Bewegen Sie sich auf der Web-basierten Anwendung auf dem System ausgeführt wird, wurde er sofort mit einer Login-Seite mit SSL-verschlüsselte Formularauthentifizierung konfrontiert.

Durch die Überprüfung der Quelle der Web-Seite, bemerkte er, dass eine versteckte App Name Feld wurde an die Anwendung übergeben wird, wenn ein Benutzer auf die Website einzuloggen versucht. Könnte es sein, dass die Entwickler es versäumt haben, könnte die richtige Eingabevalidierung auf dieser unschuldig aussehende Parameter zu erfüllen? Die Jagd war.

Das Ergebnis

Erstens war es Zeit, das Toolkit zu montieren. Zum Zeitpunkt dieses Penetrationstest, bevorzugt Herr Andrews die folgende verwenden: Paros Proxy, Absinth, Cain Abel, Daten-Dieb, und die Microsoft SQL Server Management Studio / SQL Server (Express Edition), von denen alle kostenlos zur Verfügung stehen.

Für den Anfang, benutzte er Paros Proxy für mehr Kontrolle und Transparenz auf den Web-Anfragen an den Webserver gemacht zu ermöglichen.

Nach Spidern der Website verfügbaren Seiten und eine schnelle Prüfung auf Sicherheitsrisiken für SQL-Injection durchgeführt wird, wurde es, dass die bestätigt App Name Parameter erschien die Anwendung zu verursachen einen Fehler 500 Ausnahme zu werfen, was auf einen Anwendungsfehler. Penetrationstests sind eine der seltenen Gelegenheiten, wenn ein Anwendungsfehler ein wünschenswertes Ergebnis ist.

Da die Anwendung Versagen zeigt, dass Herr Andrews unbeabsichtigte Zeichen in den SQL-Code zu injizieren könnten, das sich aus der Anwendung an die Datenbank geschickt, konnte er sehen, ob es sich um eine ausnutzbare Zustand war.

Ein gemeinsamer Test, der mit Microsoft SQL Server-Datenbanken arbeitet, ist ein Befehl zu injizieren, wie WAITFOR DELAY '00: 00: 10 ', was bewirkt, dass der Datenbankserver 10 Sekunden zum Stillstand kommen. In einer Anwendung, die normalerweise eine Seite in einer Sekunde zurückgibt oder weniger, eine konsistente Verzögerung von 10 Sekunden ist ein guter Indikator, dass Sie Befehle in die SQL-Strom zu injizieren.

Als nächstes versuchte Herr Andrews die Daten-Dieb-Tool verwenden, um die Login-Seite zu attackieren. Dieses Tool versucht, die Datenbank zu zwingen, eine zu verwenden, OPENROWSET Befehlsdaten aus der Zieldatenbank zu Mr. Andrews Datenbank im Internet befindet, zu kopieren.

Dies ist in der Regel eine sehr effiziente Möglichkeit, große Datenmengen aus gefährdeten Datenbanken abschöpfen, aber in diesem Fall wurde sein Angriff vereitelt! Der Datenbankadministrator auf das Ziel hatte, gesperrt, um die OPENROWSET Funktionalität durch ordnungsgemäß die Disable Adhoc verteilte Abfragen Option konfigurieren.

Mit Fleiß als seine Losung, beharrte Herr Andrews mit dem nächsten Werkzeug - Absinth. Dieses Tool verwendet eine Technik namens Blind SQL Injection Bestimmungen über Daten mit einfachen Ja oder Nein-Fragen aus der Datenbank zu machen. Beispielsweise könnte das Werkzeug die Datenbank fragen, ob der erste Buchstabe eines Tisches kleiner als # 147-L # 148.

Wenn ja, könnte die Anwendung nichts zu tun, aber wenn nicht, könnte die Anwendung eine Ausnahme werfen. Mit dieser einfachen binären Logik ist es möglich, diese Technik zu verwenden, um die gesamte Datenbankstruktur zu offenbaren und auch die innerhalb von gespeicherten Daten - wenn auch sehr langsam. Mit Hilfe des Werkzeugs, identifiziert er eine Tabelle von sensiblen Kundeninformationen und heruntergeladen mehrere hundert Datensätze den Client zu zeigen.

Schließlich war es Zeit, einen letzten Akt der Datenbank Ruchlosigkeit zu versuchen. Zuerst geladen Herr Andrews das Tool Cain genannt Abel und setzen Sie ihn Sniffing Modus aufzurufen. Dann, mit Paros Proxy und den bereits identifizierten verletzlich Parameter, er verwendet die xp_dirtree erweiterte gespeicherte Prozedur, die SQL Server-Datenbank-Benutzer verfügbar ist, zu versuchen, ein Verzeichnis auf dem Internet verbundenen Gerät zu zeigen, einen Universal Naming Convention-Pfad verwenden.

Dies zwang die Zieldatenbank zu versuchen, tatsächlich selbst gegen Herrn Andrews Maschine zu authentifizieren. weil Kain Abel wurde auf den Draht zu hören, wurde es mit der Hash der Herausforderung verwendet, um die freiliegenden Dateifreigabe zu authentifizieren.

Durch die Übergabe baute diesen Hash mit dem Passwort-Cracker in Kain Abel, Herr Andrews würde den Benutzernamen und das Passwort für das Konto haben, unter denen die gefährdeten SQL Server wurde in nur eine Frage der Zeit ausgeführt wird.

Wäre das gehackten Konto das gleiche Passwort wie das Administratorkonto der Web-Anwendung verwenden? Wäre das Passwort auf dem Host das gleiche wie das lokale Administratorkonto sein? Das waren Fragen für einen anderen Tag. Es war Zeit, die gesammelten Daten zu montieren, einen Bericht für den Kunden vorbereitet und stellen die Werkzeuge für einen anderen Tag weg.

Chip Andrews ist ein Mitbegründer der Sicherheitsberatungsfirma Special Ops Security, Inc. und Inhaber von SQLSecurity.com, das hat mehrere Ressourcen zu Microsoft SQL Server-Sicherheit, einschließlich der SQLPing3 Werkzeug. Ein Co-Autor für mehrere Bücher über SQL Server-Sicherheit und eine Black-Hat-Moderator, Herr Andrews ist seit 1999 SQL Server und Anwendungssicherheit fördert.

Menü