Einleitung
In diesem Lab lernen Sie, wie Sie sqlmap, ein leistungsstarkes Open-Source-Penetrationstest-Tool, das den Prozess der Erkennung und Ausnutzung von SQL-Injection-Schwachstellen automatisiert, mit einem abfangenden Proxy wie Burp Suite integrieren.
Die Verwendung eines Proxys mit sqlmap ist eine entscheidende Fähigkeit für Sicherheitsexperten. Sie ermöglicht es Ihnen, die exakten Payloads zu sehen, die sqlmap sendet, seine Testlogik zu verstehen, potenzielle Probleme zu debuggen und sogar Anfragen im laufenden Betrieb zu modifizieren. Diese Transparenz ist sowohl für das Verständnis der Funktionsweise von SQL-Injection-Angriffen als auch für die Durchführung fortgeschrittener, kundenspezifischer Sicherheitsbewertungen von unschätzbarem Wert.
Am Ende dieses Labs werden Sie in der Lage sein, den Datenverkehr von sqlmap über Burp Suite zu leiten, die generierten Anfragen zu beobachten und die automatisierten Angriffsmuster zu analysieren.
Burp Suite für das Lauschen auf einem lokalen Port konfigurieren
In diesem Schritt starten Sie Burp Suite und überprüfen, ob der Proxy-Listener aktiv ist. Burp Suite fungiert als Web-Proxy-Server und sitzt als Man-in-the-Middle zwischen Ihrem Browser (oder in diesem Fall sqlmap) und der Zielanwendung. Standardmäßig lauscht es auf eingehende Verbindungen auf Port 8080 des lokalen Rechners (127.0.0.1).
Zuerst starten wir Burp Suite. Sie finden es im Anwendungsmenü.
- Klicken Sie auf das Anwendungsmenü (das Symbol in der oberen linken Ecke des Bildschirms).
- Navigieren Sie zu Web -> Burp Suite Community Edition.
- Ein Dialogfeld wird angezeigt. Sie können die Standardeinstellungen beibehalten und auf Next klicken.
- Ein weiterer Dialog fordert Sie auf, ein Projekt auszuwählen. Wählen Sie Use Burp defaults und klicken Sie auf Start Burp.
Sobald Burp Suite geladen ist, müssen Sie die Proxy-Einstellungen überprüfen.
- Klicken Sie auf den Tab Proxy.
- Klicken Sie auf den Unter-Tab Options innerhalb des Proxy-Tabs.
- Suchen Sie den Abschnitt "Proxy Listeners". Sie sollten einen Eintrag mit der Schnittstelle
127.0.0.1:8080sehen, bei dem das Kontrollkästchen "Running" aktiviert ist.
Dies bestätigt, dass Burp Suite aktiv auf den lokalen Port 8080 lauscht. Jede Anwendung, die so konfiguriert ist, dass sie Datenverkehr an diese Adresse und diesen Port sendet, wird von Burp Suite abgefangen und protokolliert.
sqlmap für die Verwendung des Proxys mit --proxy=http://127.0.0.1:8080 konfigurieren
In diesem Schritt lernen Sie, wie Sie sqlmap anweisen, seinen Netzwerkverkehr über den gerade konfigurierten Burp Suite-Proxy zu senden.
sqlmap bietet ein einfaches Kommandozeilenargument, --proxy, um einen HTTP-Proxy anzugeben. Sie müssen die Adresse des Proxys im Format http://<host>:<port> angeben.
Da Burp Suite auf 127.0.0.1:8080 lauscht, lautet das zu verwendende korrekte Argument:
--proxy=http://127.0.0.1:8080
Wenn Sie dieses Argument zu Ihrem sqlmap-Befehl hinzufügen, sendet sqlmap die Anfragen nicht direkt an den Ziel-Webserver, sondern an http://127.0.0.1:8080. Burp Suite empfängt diese Anfragen dann, protokolliert sie und leitet sie an das endgültige Ziel weiter.
Im nächsten Schritt werden wir dieses Proxy-Argument mit einer Ziel-URL kombinieren, um einen Scan durchzuführen. Vorerst ist es wichtig zu verstehen, dass dieser einzelne Parameter alles ist, was zur Integration der beiden Tools benötigt wird.
Einen grundlegenden sqlmap-Scan ausführen
In diesem Schritt führen Sie einen grundlegenden sqlmap-Scan gegen die Test-Webanwendung aus und leiten den Datenverkehr über Burp Suite. Wir werden sqlmap anweisen, die Datenbanken auf dem Server aufzulisten.
Öffnen Sie ein Terminal. Wir werden einen Befehl erstellen, der Folgendes enthält:
- Die Ziel-URL:
-u "http://127.0.0.1/index.php?id=1" - Die Proxy-Konfiguration:
--proxy=http://127.0.0.1:8080 - Die auszuführende Aktion:
--dbs(zum Auflisten von Datenbanken) - Ein nicht-interaktives Flag:
--batch(um alle Fragen automatisch mit 'ja' zu beantworten)
Führen Sie nun den vollständigen Befehl in Ihrem Terminal aus:
sqlmap -u "http://127.0.0.1/index.php?id=1" --proxy=http://127.0.0.1:8080 --dbs --batch
Sie sehen die Ausgabe von sqlmap im Terminal, während es mit dem Testen des Ziels beginnt. Es wird zuerst bestätigen, dass der Parameter id anfällig ist, und dann die verfügbaren Datenbanken auflisten.
Die Ausgabe sollte in etwa wie folgt aussehen (die Versionsnummern und einige Details können variieren):
___
__H__
___ ___[.]_____ ___ ___ {1.x.x#dev}
|_ -| . [.] | .'| . |
|___|_ [.]_|_|_|__,| _|
|_|V... |_| http://sqlmap.org
[INFO] starting @ ...
...
[INFO] GET parameter 'id' is 'MySQL >= 5.0 boolean-based blind' injectable
[INFO] GET parameter 'id' is 'MySQL >= 5.0.12 stacked queries' injectable
[INFO] GET parameter 'id' is 'MySQL >= 5.0.12 time-based blind' injectable
...
[INFO] fetching database names
[INFO] the following databases are available [4]:
[*] information_schema
[*] mysql
[*] performance_schema
[*] sys
[INFO] fetched data logged to text files under '/home/labex/.sqlmap/output/127.0.0.1'
Während sqlmap läuft, sendet es Hunderte von Anfragen über Burp Suite.
Den von sqlmap generierten Traffic in der HTTP-Historie von Burp Suite beobachten
In diesem Schritt wechseln Sie zurück zu Burp Suite, um den Traffic zu sehen, den sqlmap während seines Scans generiert hat.
Holen Sie das Burp Suite-Fenster in den Vordergrund.
- Stellen Sie sicher, dass Sie sich auf dem Tab Proxy befinden.
- Klicken Sie auf den Unter-Tab HTTP history.
Sie sehen nun eine Tabelle, die mit HTTP-Anfragen gefüllt ist. Alle diese Anfragen wurden von sqlmap über den Burp-Proxy an den Zielserver gesendet.
Nehmen Sie sich einen Moment Zeit, um die Liste zu betrachten:
- Host: Alle Anfragen sind an
127.0.0.1gerichtet. - Method: Die meisten Anfragen sind
GET-Anfragen. - URL: Die URL ist immer
/index.php, aber derid-Parameter in der Query-String ändert sich mit jeder Anfrage.
Diese Ansicht bietet ein vollständiges Protokoll der Aktivitäten von sqlmap. Sie können das schiere Volumen an Anfragen sehen, das ein automatisiertes Tool generiert, um eine einzelne Schwachstellenklasse zu testen. Dies ist der Hauptvorteil der Verwendung eines Proxys: Er macht die "Black-Box"-Operationen des Tools sichtbar.
Analyse der von sqlmap über den Proxy gesendeten Payloads
In diesem Schritt werden Sie die einzelnen Anfragen genauer untersuchen, um die spezifischen Payloads zu verstehen, die sqlmap zur Erkennung und Ausnutzung von SQL-Injection-Schwachstellen verwendet.
Klicken Sie im Tab HTTP history von Burp Suite auf eine beliebige Anfrage in der Liste. Wenn Sie eine Anfrage auswählen, erscheinen unter der Liste zwei neue Panels: Request und Response.
Klicken Sie auf das Panel Request, um die von sqlmap gesendete rohe HTTP-Anfrage anzuzeigen. Achten Sie genau auf den id-Parameter in der URL. Sie werden verschiedene getestete Payloads sehen.
Zum Beispiel könnten Sie einen booleschen Blind-Payload wie diesen finden:
GET /index.php?id=1%20AND%208003=8003 HTTP/1.1
Host: 127.0.0.1
...
Hier testet sqlmap, ob die Anwendung anders reagiert, wenn eine wahre Bedingung (AND 8003=8003) injiziert wird. Das %20 ist die URL-kodierte Darstellung eines Leerzeichens.
Sie könnten auch einen zeitbasierten Blind-Payload finden:
GET /index.php?id=1%20AND%20(SELECT%202079%20FROM%20(SELECT(SLEEP(5)))IImL) HTTP/1.1
Host: 127.0.0.1
...
Mit diesem Payload injiziert sqlmap einen SLEEP(5)-Befehl. Wenn der Server 5 Sekunden länger zur Antwort benötigt, weiß sqlmap, dass die Injektion erfolgreich war und die Datenbank anfällig ist.
Durch die Analyse dieser Anfragen erhalten Sie ein viel tieferes Verständnis dafür, wie automatisierte Scanner funktionieren. Sie können die Logik sehen, die sie zur Bestätigung von Schwachstellen verwenden, was weitaus lehrreicher ist, als nur das Endergebnis im Terminal zu sehen.
Zusammenfassung
In diesem Lab haben Sie erfolgreich das automatisierte Scan-Tool sqlmap in den abfangenden Proxy von Burp Suite integriert.
Sie haben gelernt, wie Sie:
- Burp Suite starten und bestätigen, dass sein Proxy-Listener auf
127.0.0.1:8080läuft. - Das Argument
--proxyinsqlmapverwenden, um den gesamten Traffic über Burp Suite zu leiten. - Einen Scan mit aktiviertem Proxy ausführen, um Traffic zu generieren.
- Die vollständige Liste der HTTP-Anfragen im Tab HTTP history von Burp Suite beobachten.
- Einzelne Anfragen analysieren, um die spezifischen booleschen und zeitbasierten SQL-Injection-Payloads zu verstehen, die
sqlmapzur Identifizierung von Schwachstellen verwendet.
Diese Technik ist für jeden Web-Sicherheitstester von grundlegender Bedeutung, da sie kritische Einblicke in das Verhalten automatisierter Tools bietet und während eines Penetrationstests mehr Kontrolle und Analyse ermöglicht.


