Injection-Punkte durch Crawling einer Website mit sqlmap entdecken

Kali LinuxBeginner
Jetzt üben

Einleitung

SQL-Injection ist eine gängige Web-Schwachstelle, die es Angreifern ermöglicht, die Abfragen zu manipulieren, die eine Anwendung an ihre Datenbank stellt. sqlmap ist ein Open-Source-Penetration-Testing-Tool, das den Prozess der Erkennung und Ausnutzung von SQL-Injection-Schwachstellen automatisiert und die Übernahme von Datenbankservern ermöglicht.

Während sqlmap hauptsächlich für seine Injection-Testing-Fähigkeiten bekannt ist, bietet es auch leistungsstarke Funktionen zur Entdeckung potenzieller Injection-Punkte durch das Crawlen einer Ziel-Website. Dies ist besonders nützlich, wenn Sie keine spezifische URL oder keinen spezifischen Parameter im Sinn haben und möchten, dass sqlmap die Website erkundet und alle möglichen Einstiegspunkte für Injection identifiziert.

In diesem Lab lernen Sie, wie Sie die Crawling-Funktionalität von sqlmap nutzen, um automatisch URLs und Formulare auf einer Ziel-Website zu entdecken und diese dann auf SQL-Injection-Schwachstellen zu testen. Sie werden eine Root-URL identifizieren, das --crawl-Flag verwenden, die Crawling-Tiefe festlegen, den Vorgang ausführen und schließlich die entdeckten Injection-Punkte überprüfen.

Identifizieren einer Root-URL für die Ziel-Website

In diesem Schritt identifizieren Sie die Root-URL der Ziel-Website, von der aus sqlmap mit dem Crawling beginnen wird. Dies ist der Einstiegspunkt für sqlmap, um Links und Formulare zu entdecken. Für dieses Lab werden wir einen einfachen lokal laufenden Webserver verwenden.

Stellen Sie zunächst sicher, dass der Webserver läuft und zugänglich ist. Sie können curl verwenden, um zu überprüfen, ob der Server antwortet.

curl http://127.0.0.1:8000

Sie sollten eine HTML-Ausgabe sehen, die anzeigt, dass der Server aktiv ist. Die Root-URL für unsere Ziel-Website wird http://127.0.0.1:8000 sein.

Als Nächstes werden wir diese URL als Startpunkt für sqlmap verwenden.

In diesem Schritt lernen Sie, wie Sie das --crawl-Flag mit sqlmap verwenden. Dieses Flag weist sqlmap an, die Ziel-Website zu durchsuchen und neue URLs und Formulare zu entdecken, die auf SQL-Injection-Schwachstellen getestet werden sollen. Ohne dieses Flag würde sqlmap nur die explizit angegebene URL testen.

Die grundlegende Syntax für die Verwendung von --crawl lautet:

sqlmap -u < target_url > --crawl

Versuchen wir, sqlmap mit dem --crawl-Flag auf unserer Ziel-URL auszuführen. Dieser Befehl startet den Crawling-Prozess.

sqlmap -u http://127.0.0.1:8000 --crawl

Sie werden sehen, wie sqlmap beginnt, die Website zu durchsuchen und Links und Formulare zu identifizieren. Während des Prozesses werden Ihnen einige Fragen gestellt. Für die Zwecke dieses Labs können Sie im Allgemeinen die Standardoptionen akzeptieren, indem Sie Enter drücken oder y eingeben, wenn Sie dazu aufgefordert werden.

Wenn Sie beispielsweise gefragt werden "Möchten Sie die Ergebnisse in einer CSV-Datei speichern?", können Sie n eingeben und Enter drücken. Wenn Sie gefragt werden "Möchten Sie auf andere gängige Schwachstellen testen?", können Sie n eingeben und Enter drücken.

Festlegen der Crawling-Tiefe mit --crawl-depth=2

In diesem Schritt verfeinern Sie den Crawling-Prozess, indem Sie eine spezifische Crawling-Tiefe mit dem --crawl-depth-Flag festlegen. Die Crawling-Tiefe bestimmt, wie viele Ebenen sqlmap beim Entdecken neuer URLs durchläuft. Eine Tiefe von 1 bedeutet, dass nur Links direkt von der ursprünglichen URL besucht werden. Eine Tiefe von 2 bedeutet, dass Links von der ursprünglichen URL besucht werden und dann Links von diesen neu entdeckten Seiten usw.

Für unsere kleine Ziel-Website ist eine Tiefe von 2 ausreichend, um alle verfügbaren Seiten zu entdecken.

Die Syntax zum Festlegen der Crawling-Tiefe lautet:

sqlmap -u <target_url> --crawl --crawl-depth=<depth_value>

Führen wir sqlmap erneut aus und geben diesmal eine Crawling-Tiefe von 2 an.

sqlmap -u http://127.0.0.1:8000 --crawl --crawl-depth=2

Beobachten Sie, wie sich die Ausgabe von sqlmap ändert und möglicherweise weitere Links oder Formulare entdeckt werden, während es tiefer in die Seitenstruktur vordringt. Auch hier können Sie Standardaufforderungen akzeptieren, indem Sie Enter drücken oder n für zusätzliche Tests eingeben.

Ausführen des Crawl- und Testvorgangs

In diesem Schritt führen Sie den vollständigen Crawl- und Testvorgang aus. Während die vorherigen Schritte die Crawling-Flags demonstrierten, versucht sqlmap standardmäßig auch, die entdeckten URLs auf Injection-Punkte zu testen. Um das Testen expliziter zu gestalten und sicherzustellen, dass sqlmap eine gründliche Überprüfung durchführt, können wir das --batch-Flag hinzufügen, um Antworten auf Aufforderungen zu automatisieren, und das --forms-Flag, um speziell Formulare anzuzielen.

Das --batch-Flag weist sqlmap an, im nicht-interaktiven Modus zu laufen und Standardantworten für alle Aufforderungen zu akzeptieren. Dies ist nützlich für die Automatisierung. Das --forms-Flag weist sqlmap speziell an, HTML-Formulare auf dem Ziel zu parsen und zu testen.

Kombinieren wir diese Flags mit unserem vorherigen Befehl:

sqlmap -u http://127.0.0.1:8000 --crawl --crawl-depth=2 --batch --forms

Dieser Befehl wird:

  1. Mit dem Crawling von http://127.0.0.1:8000 beginnen.
  2. Zwei Ebenen tief gehen (--crawl-depth=2).
  3. Aufforderungen automatisch mit Standardwerten beantworten (--batch).
  4. Speziell nach HTML-Formularen suchen und diese testen (--forms).

Beobachten Sie die Ausgabe. sqlmap listet die von ihm entdeckten URLs und die getesteten Parameter auf. Es wird auch angezeigt, ob potenzielle Injection-Punkte gefunden wurden.

Überprüfung der entdeckten URLs und potenziellen Injection-Punkte

In diesem letzten Schritt überprüfen Sie die Ausgabe von sqlmap, um zu verstehen, welche URLs und Formulare entdeckt wurden und ob potenzielle Injection-Punkte identifiziert wurden.

Nach Abschluss der Ausführung von sqlmap erhalten Sie eine Zusammenfassung der Ergebnisse. Suchen Sie nach Zeilen, die "parameter is vulnerable" oder ähnliche Meldungen anzeigen.

Auch wenn sqlmap keine bestätigte SQL-Injection-Schwachstelle findet (was für unsere einfache Dummy-Website zu erwarten ist), zeigt es Ihnen dennoch die getesteten URLs und Parameter an. Diese Informationen sind entscheidend für die manuelle Analyse oder weitere automatisierte Tests.

Beispielhafte Ausgaben, die Sie möglicherweise sehen:

...
[INFO] retrieved new form: 'http://127.0.0.1:8000/search.php' (GET)
...
[INFO] testing GET parameter 'id'
...
[INFO] testing GET parameter 'param'
...
[INFO] testing GET parameter 'query'
...

Die wichtigste Erkenntnis ist, dass sqlmap die Website erfolgreich gecrawlt, index.php, page.php und search.php (über das Formular) identifiziert und dann mit dem Testen ihrer jeweiligen Parameter (id, name, param, query) fortgefahren ist. Dies demonstriert die Leistungsfähigkeit der Crawling-Funktion von sqlmap bei der automatischen Abbildung der Angriffsfläche einer Zielanwendung.

Sie können auch die sqlmap-Logdateien (normalerweise unter ~/.sqlmap/output/) für einen detaillierteren Bericht überprüfen, obwohl für dieses Lab die Konsolenausgabe ausreichend ist.

Zusammenfassung

In diesem Lab haben Sie erfolgreich gelernt, wie Sie die leistungsstarken Crawling-Funktionen von sqlmap nutzen, um potenzielle SQL-Injection-Punkte auf einer Zielwebsite zu entdecken. Sie haben mit der Identifizierung einer Root-URL begonnen und dann das --crawl-Flag verwendet, um sqlmap anzuweisen, die Website zu erkunden. Sie haben den Crawling-Prozess weiter verfeinert, indem Sie mit --crawl-depth eine bestimmte Tiefe festgelegt haben. Schließlich haben Sie einen umfassenden Crawl- und Testvorgang mit --batch und --forms ausgeführt, um den Prozess zu automatisieren und gezielt Formulare anzusprechen.

Durch den Abschluss dieses Labs verstehen Sie nun, wie Sie:

  • Eine Start-URL für das Crawling von sqlmap identifizieren.
  • Das --crawl-Flag verwenden, um Links und Formulare zu entdecken.
  • Die Crawling-Tiefe mit --crawl-depth steuern.
  • Einen automatisierten Crawl- und Testvorgang mit --batch und --forms ausführen.
  • Die Ausgabe von sqlmap interpretieren, um entdeckte URLs, Parameter und potenzielle Injection-Punkte zu identifizieren.

Diese Fähigkeit ist grundlegend für die Aufklärung bei Web-Penetrationstests und ermöglicht es Ihnen, die Angriffsfläche einer Webanwendung effizient abzubilden, bevor Sie versuchen, spezifische Schwachstellen auszunutzen.