Kali SQL Injection mit sqlmap

Kali LinuxKali LinuxBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab lernen Sie, wie Sie SQL-Injection-Schwachstellen mithilfe von Kali Linux und dem leistungsstarken Tool sqlmap identifizieren und ausnutzen können. Durch eine Reihe von angeleiteten Schritten werden Sie potenziell injizierbare URLs erkennen, Datenbanken aufzählen, Tabellendaten extrahieren und Ergebnisse zur Analyse speichern. Alle Aktivitäten werden innerhalb einer sicheren LabEx VM-Umgebung unter Verwendung eines Kali Linux Containers durchgeführt. Dieses Lab ist für Anfänger konzipiert und bietet praktische Erfahrungen im Testen der Sicherheit von Webanwendungen mit manuellen und automatisierten Techniken. Wenn Sie das Terminal öffnen, werden Sie automatisch mit der Shell des Kali Linux Containers verbunden und können sofort mit dem Üben beginnen.

Einrichten der Umgebung und Installieren von sqlmap

In diesem ersten Schritt richten Sie Ihre Arbeitsumgebung innerhalb des Kali Linux Containers ein und stellen sicher, dass sqlmap, das primäre Tool für dieses Lab, installiert ist. Dies ist ein grundlegender Schritt zur Vorbereitung auf SQL-Injection-Tests.

Wenn Sie das Terminal in der LabEx VM öffnen, werden Sie automatisch mit der Shell des Kali Linux Containers verbunden. Es ist nicht erforderlich, den Container manuell zu starten oder die Shell aufzurufen; die Umgebung ist bereits für Sie konfiguriert.

Beginnen wir damit, die Paketliste zu aktualisieren und sqlmap zu installieren, ein Open-Source-Tool zur Automatisierung von SQL-Injection-Tests. Führen Sie die folgenden Befehle im Terminal aus, um das Paket-Repository zu aktualisieren und sqlmap zu installieren:

apt update
apt install -y sqlmap

Diese Befehle aktualisieren die Paketliste und installieren sqlmap, falls es noch nicht vorhanden ist. Dieser Vorgang kann einige Momente dauern, bitte warten Sie, bis er abgeschlossen ist.

Überprüfen Sie nach der Installation, ob sqlmap korrekt installiert wurde, indem Sie die Version überprüfen. Führen Sie den folgenden Befehl aus:

sqlmap --version

Erwartete Ausgabe (Beispiel, tatsächliche Ausgabe kann variieren):

sqlmap version 1.7.9

Das Anzeigen einer Versionsnummer bestätigt, dass sqlmap installiert und einsatzbereit ist. Dieser Schritt stellt sicher, dass Ihre Umgebung für die SQL-Injection-Testaufgaben in den folgenden Schritten vorbereitet ist. Nachdem das Tool installiert ist, können Sie mit der Identifizierung potenzieller Schwachstellen fortfahren.

Verstehen und Erkennen von injizierbaren URLs

Nachdem Ihre Umgebung mit installiertem sqlmap eingerichtet ist, wollen wir uns nun mit dem Verständnis von SQL-Injection und der Erkennung potenziell anfälliger URLs befassen. SQL-Injection ist eine häufige Schwachstelle in Webanwendungen, die es Angreifern ermöglicht, eine Datenbank zu manipulieren, indem sie schädlichen SQL-Code über Benutzereingabefelder, oft in URL-Parametern, injizieren.

Für Anfänger: Stellen Sie sich SQL-Injection als eine Möglichkeit vor, eine Webanwendung dazu zu bringen, unbeabsichtigte Datenbankbefehle auszuführen. Ein typischer Einstiegspunkt ist ein URL-Parameter wie id=1 in http://example.com/page?id=1. Wenn die Anwendung diese Eingabe nicht ordnungsgemäß validiert, bevor sie in einer Datenbankabfrage verwendet wird, könnte sie anfällig sein. Das Erkennen solcher URLs beinhaltet das Testen dieser Parameter, indem Sonderzeichen wie ein einzelnes Anführungszeichen ' hinzugefügt und beobachtet wird, ob die Anwendung mit einem Fehler oder ungewöhnlichem Verhalten reagiert.

In diesem Lab simulieren wir diesen Prozess mit einer Dummy-URL, da wir uns in einer kontrollierten Umgebung befinden. Sie erstellen eine Datei, um eine Beispiel-Ziel-URL zu Demonstrationszwecken zu speichern. Führen Sie den folgenden Befehl aus, um im Verzeichnis /root innerhalb des Kali Linux Containers eine Datei namens target_url.txt zu erstellen:

echo "http://example.com/page?id=1" > /root/target_url.txt

Überprüfen Sie nun den Inhalt der Datei, um sicherzustellen, dass sie korrekt erstellt wurde. Führen Sie den folgenden Befehl aus:

cat /root/target_url.txt

Erwartete Ausgabe:

http://example.com/page?id=1

Diese Datei speichert die Dummy-URL, die wir während des gesamten Labs verwenden werden. In einem realen Szenario würden Sie diese URL testen, indem Sie Zeichen wie ' an den Parameter anhängen (z. B. id=1') und Tools wie curl verwenden, um die Antwort des Servers auf SQL-Fehler zu überprüfen. Da dies eine Simulation ist, konzentrieren wir uns auf den Prozess und nicht auf das tatsächliche Testen. Die wichtigste Erkenntnis ist, dass die Identifizierung injizierbarer URLs der erste Schritt beim SQL-Injection-Testen ist und das Suchen nach Fehlermeldungen oder unerwartetem Verhalten in der Antwort der Anwendung beinhaltet.

Mit der vorbereiteten Ziel-URL sind Sie bereit, zum nächsten Schritt überzugehen, in dem Sie sqlmap verwenden, um den Erkennungs- und Ausnutzungsprozess zu automatisieren.

Aufzählen von Datenbanken mit sqlmap

Nachdem eine Ziel-URL vorbereitet wurde, wollen wir nun sqlmap verwenden, um das Aufzählen von Datenbanken auf einem anfälligen System zu simulieren. Die Datenbankaufzählung (Database Enumeration) ist der Prozess der Identifizierung der auf einem Ziel vorhandenen Datenbanken, was ein kritischer Schritt beim Verständnis der Struktur des Backend-Datenspeichers während einer Sicherheitsbewertung ist.

Für Anfänger: sqlmap automatisiert die mühsame Aufgabe des manuellen Testens auf SQL-Injection-Schwachstellen. Es sendet verschiedene, speziell erstellte Payloads an die Ziel-URL und analysiert die Antworten, um festzustellen, ob eine Schwachstelle existiert und welche Informationen extrahiert werden können, wie z. B. Datenbanknamen. In einem realen Szenario würden Sie sqlmap auf eine anfällige URL ausrichten, aber da wir eine Dummy-URL verwenden, simulieren wir die Ausgabe.

Beginnen Sie mit der Ausführung des folgenden Befehls, um die Datenbankaufzählung mit sqlmap zu simulieren. Dieser Befehl erstellt eine Datei mit Mock-Ergebnissen im Verzeichnis /root:

echo "Simulating sqlmap database enumeration..." > /root/sqlmap_dbs.txt
echo "Available databases: [information_schema, test_db]" >> /root/sqlmap_dbs.txt

Überprüfen Sie nun den Inhalt der Datei, um die simulierten Ergebnisse der Datenbankaufzählung zu sehen. Führen Sie den folgenden Befehl aus:

cat /root/sqlmap_dbs.txt

Erwartete Ausgabe:

Simulating sqlmap database enumeration...
Available databases: [information_schema, test_db]

In einem realen Test würde sqlmap, wenn es eine Schwachstelle erkennt, die Datenbanken wie in dieser Mock-Ausgabe auflisten. Häufige Datenbanken wie information_schema in MySQL enthalten Metadaten über andere Datenbanken auf dem System. Dieser Schritt hilft Ihnen zu verstehen, wie sqlmap allgemeine Informationen über die Datenbankstruktur eines Ziels extrahieren kann.

Nachdem die Datenbanken identifiziert wurden, sind Sie bereit, im nächsten Schritt tiefer in die Extraktion spezifischer Daten aus einer dieser Datenbanken einzutauchen.

Daten aus Tabellen mit sqlmap auslesen

Aufbauend auf der Datenbankaufzählung aus dem vorherigen Schritt simulieren Sie nun die Verwendung von sqlmap, um Tabellendaten aus einer bestimmten Datenbank auszulesen. Dieser Prozess beinhaltet das Auflisten der Tabellen innerhalb einer Datenbank und das Extrahieren ihres Inhalts, was sensible Informationen offenlegen kann, wenn eine Schwachstelle existiert.

Für Anfänger: Stellen Sie sich eine Datenbank als eine Sammlung von Tabellen vor, ähnlich wie Tabellenkalkulationen mit Zeilen und Spalten von Daten. sqlmap kann SQL-Injection-Schwachstellen ausnutzen, um diese Tabellen aufzulisten und ihre Daten auszulesen, wie z. B. Benutzeranmeldeinformationen oder andere kritische Informationen. Da wir eine Dummy-URL verwenden, simulieren wir diesen Prozess mit einer Mock-Ausgabe.

Simulieren wir das Extrahieren von Tabelleninformationen aus der zuvor identifizierten test_db-Datenbank. Führen Sie den folgenden Befehl aus, um eine Datei mit Mock-Tabellenaufzählungsergebnissen im Verzeichnis /root zu erstellen:

echo "Simulating sqlmap table enumeration for test_db..." > /root/sqlmap_tables.txt
echo "Tables in test_db: [users, orders, products]" >> /root/sqlmap_tables.txt

Überprüfen Sie als Nächstes den Inhalt der Datei, um die simulierte Tabellenliste zu bestätigen. Führen Sie den folgenden Befehl aus:

cat /root/sqlmap_tables.txt

Erwartete Ausgabe:

Simulating sqlmap table enumeration for test_db...
Tables in test_db: [users, orders, products]

Simulieren Sie nun das Auslesen von Daten aus der Tabelle users. Führen Sie den folgenden Befehl aus, um eine Datei mit Mock-Daten im Verzeichnis /root zu erstellen:

echo "Simulating sqlmap data dump for users table..." > /root/sqlmap_users_data.txt
echo "Data in users table:" >> /root/sqlmap_users_data.txt
echo "ID | Username | Password" >> /root/sqlmap_users_data.txt
echo "1  | admin    | pass123" >> /root/sqlmap_users_data.txt
echo "2  | user1    | test456" >> /root/sqlmap_users_data.txt

Überprüfen Sie den Inhalt dieser Datei, um die simulierten ausgelesenen Daten zu sehen. Führen Sie den folgenden Befehl aus:

cat /root/sqlmap_users_data.txt

Erwartete Ausgabe:

Simulating sqlmap data dump for users table...
Data in users table:
ID | Username | Password
1  | admin    | pass123
2  | user1    | test456

In einem realen Szenario würde sqlmap tatsächliche Daten aus der Zieldatenbank extrahieren, wenn eine Schwachstelle vorhanden ist. Dieser Schritt zeigt, wie detaillierte Informationen abgerufen werden können, und unterstreicht die Bedeutung der Sicherung von Webanwendungen gegen SQL-Injection-Angriffe. Mit den extrahierten Daten konzentriert sich der nächste Schritt auf das Organisieren und Speichern dieser Ergebnisse.

Speichern und Organisieren von sqlmap-Ergebnissen

In diesem letzten Schritt lernen Sie, wie Sie die Ergebnisse Ihrer sqlmap-Simulationen speichern und organisieren können. Das Speichern von Ergebnissen ist ein entscheidender Bestandteil von Penetrationstests, da es Ihnen ermöglicht, Ergebnisse zu dokumentieren, sie später zu überprüfen oder in einem Sicherheitsbericht zu teilen.

Für Anfänger: Stellen Sie sich dies als Erstellung einer Zusammenfassung Ihrer Arbeit vor. Anstatt die Ausgabe im Terminal zu verlieren, speichern Sie sie in Dateien, um sie leicht zugänglich zu machen. In einem realen Szenario kann sqlmap die Ausgabe direkt in Dateien speichern, aber da wir den Prozess simulieren, werden Sie die Ergebnisse manuell in einer einzigen Berichtdatei zusammenführen.

Lassen Sie uns die Inhalte der in den vorherigen Schritten erstellten Dateien in einem umfassenden Bericht namens sqlmap_report.txt im Verzeichnis /root zusammenführen. Führen Sie die folgenden Befehle aus, um diesen Bericht Schritt für Schritt zu erstellen:

echo "SQL Injection Test Report" > /root/sqlmap_report.txt
echo "=========================" >> /root/sqlmap_report.txt
echo "" >> /root/sqlmap_report.txt
echo "Target URL:" >> /root/sqlmap_report.txt
cat /root/target_url.txt >> /root/sqlmap_report.txt
echo "" >> /root/sqlmap_report.txt
echo "Database Enumeration Results:" >> /root/sqlmap_report.txt
cat /root/sqlmap_dbs.txt >> /root/sqlmap_report.txt
echo "" >> /root/sqlmap_report.txt
echo "Table Enumeration Results:" >> /root/sqlmap_report.txt
cat /root/sqlmap_tables.txt >> /root/sqlmap_report.txt
echo "" >> /root/sqlmap_report.txt
echo "Dumped Data from Users Table:" >> /root/sqlmap_report.txt
cat /root/sqlmap_users_data.txt >> /root/sqlmap_report.txt

Überprüfen Sie nun den Inhalt der Datei sqlmap_report.txt, um den konsolidierten Bericht zu sehen. Führen Sie den folgenden Befehl aus:

cat /root/sqlmap_report.txt

Erwartete Ausgabe (Beispiel):

SQL Injection Test Report
=========================

Target URL:
http://example.com/page?id=1

Database Enumeration Results:
Simulating sqlmap database enumeration...
Available databases: [information_schema, test_db]

Table Enumeration Results:
Simulating sqlmap table enumeration for test_db...
Tables in test_db: [users, orders, products]

Dumped Data from Users Table:
Simulating sqlmap data dump for users table...
Data in users table:
ID | Username | Password
1  | admin    | pass123
2  | user1    | test456

Dieser Bericht kombiniert alle simulierten Ergebnisse in einer Datei, wodurch es einfach ist, die Ergebnisse Ihres SQL-Injection-Testprozesses zu überprüfen. Dieser Schritt unterstreicht die Bedeutung der Dokumentation bei Sicherheitstests und stellt sicher, dass kritische Informationen für Analyse- oder Berichtszwecke erhalten bleiben.

Zusammenfassung

In diesem Lab haben Sie gelernt, wie Sie SQL-Injection-Schwachstellen mithilfe von Kali Linux und sqlmap innerhalb einer sicheren LabEx VM-Umgebung untersuchen können. Sie begannen mit der Einrichtung der Umgebung und der Installation von sqlmap, bevor Sie sich mit dem Verständnis und der Erkennung von injizierbaren URLs befassten. Durch simulierte Übungen haben Sie Datenbanken aufgezählt, Tabellendaten ausgelesen und schließlich die Ergebnisse in einem umfassenden Bericht gespeichert und organisiert. Diese Schritte vermittelten ein grundlegendes Verständnis sowohl manueller als auch automatisierter Techniken für Sicherheitstests von Webanwendungen und bereiteten Sie auf weiteres Lernen im Bereich Cybersicherheit vor.