Tabellen aus einer bestimmten Datenbank mit sqlmap aufzählen

Beginner
Jetzt üben

Einleitung

Im Bereich der Cybersicherheit ist das Verständnis von Datenbankstrukturen ein entscheidender Schritt zur Bewertung der Sicherheitslage von Webanwendungen. SQL-Injection-Schwachstellen können sensible Informationen preisgeben, und Tools wie sqlmap sind unverzichtbar für die Automatisierung der Entdeckung und Ausnutzung solcher Schwachstellen.

Dieses Lab konzentriert sich auf einen spezifischen, aber wichtigen Aspekt der Fähigkeiten von sqlmap: die Enumeration von Tabellen innerhalb einer Datenbank. Nachdem potenzielle SQL-Injection-Punkte identifiziert und verfügbare Datenbanken aufgelistet wurden, ist der nächste logische Schritt, tiefer in eine bestimmte Datenbank einzudringen, um deren Tabellenstruktur zu verstehen. Dieses Wissen ist entscheidend für weitere Ausnutzungen, wie z. B. das Auslesen sensibler Daten aus bestimmten Tabellen.

Am Ende dieses Labs werden Sie in der Lage sein, sqlmap gezielt für eine bestimmte Datenbank einzusetzen und alle zugehörigen Tabellen aufzulisten – eine grundlegende Fähigkeit für jeden Penetration Tester oder Sicherheitsenthusiasten.

Auswahl einer Zieldatenbank aus der aufzählenden Liste

In diesem Schritt simulieren wir, dass wir zuvor Datenbanken aufzählen und wählen eine aus, auf die wir uns konzentrieren möchten. In einem realen Szenario hätten Sie sqlmap bereits mit dem Flag --dbs ausgeführt, um alle verfügbaren Datenbanken aufzulisten. Für dieses Lab gehen wir davon aus, dass Sie eine Datenbank namens acuart als Ihr Ziel identifiziert haben.

Stellen Sie zunächst sicher, dass sqlmap verfügbar ist. Wenn es nicht installiert ist, können Sie es mit sudo apt update && sudo apt install sqlmap -y installieren.

Wir werden eine bekannte anfällige URL als unser Ziel verwenden. Zu Demonstrationszwecken verwenden wir http://testphp.vulnweb.com/listproducts.php?cat=1.

Um zu beginnen, listen wir die auf unserem Ziel verfügbaren Datenbanken auf. Dieser Befehl wird einige Zeit in Anspruch nehmen, da sqlmap seine Prüfungen durchführt.

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

Sie sehen eine Ausgabe ähnlich dieser, die die Datenbanken auflistet:

---
[INFO] fetching database names
[INFO] the back-end DBMS is MySQL
...
available databases [X]:
[*] acuart
[*] information_schema
[*] mysql
[*] performance_schema
...

Aus dieser Liste wählen wir acuart für die weitere Enumeration aus.

Verwendung des Flags -D zur Angabe der Datenbank

In diesem Schritt lernen wir, wie wir sqlmap mitteilen, mit welcher spezifischen Datenbank wir interagieren möchten. Dies geschieht mit dem Flag -D (oder --db), gefolgt vom Namen der Datenbank.

Fortfahrend mit dem vorherigen Schritt, in dem wir acuart als unsere Zieldatenbank identifiziert haben, werden wir sqlmap nun anweisen, seine Operationen auf diese spezielle Datenbank zu konzentrieren.

Die allgemeine Syntax zur Angabe einer Datenbank lautet:

sqlmap -u "ZIEL_URL" -D "DATENBANKNAME" [ANDERE_FLAGS]

Für unser Lab verwenden wir acuart als Datenbanknamen. Wir listen noch keine Tabellen auf, sondern legen nur den Kontext für sqlmap fest.

Führen Sie den folgenden Befehl in Ihrem Terminal aus:

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

Dieser Befehl weist sqlmap an, die Datenbank acuart anzuvisieren und dann zu versuchen, die aktuelle Datenbank zu identifizieren, mit der es verbunden ist, um unsere Auswahl zu bestätigen. Die Ausgabe wird bestätigen, dass acuart die angezielte Datenbank ist.

---
[INFO] fetching current database
...
current database: 'acuart'
...

Verwendung des Flags --tables zum Auflisten von Tabellen

Nachdem wir die Zieldatenbank mit dem Flag -D angegeben haben, ist der nächste logische Schritt die Auflistung der Tabellen innerhalb dieser Datenbank. Hier kommt das Flag --tables ins Spiel.

Das Flag --tables weist sqlmap an, alle in der aktuell ausgewählten Datenbank vorhandenen Tabellen aufzulisten. In Kombination mit dem Flag -D bietet es eine leistungsstarke Möglichkeit, die Struktur einer bestimmten Datenbank abzubilden.

Die allgemeine Syntax zum Auflisten von Tabellen in einer bestimmten Datenbank lautet:

sqlmap -u "ZIEL_URL" -D "DATENBANKNAME" --tables

Für unser Lab kombinieren wir die Ziel-URL, die Datenbank acuart und das Flag --tables.

Führen Sie den folgenden Befehl in Ihrem Terminal aus:

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

Dieser Befehl initiiert den Prozess, bei dem sqlmap alle Tabellen innerhalb der Datenbank acuart identifiziert und auflistet. Diese Operation kann je nach Komplexität und Größe der Datenbank einige Zeit in Anspruch nehmen.

Ausführen des Befehls zum Auflisten von Tabellen

In diesem Schritt führen wir den vollständigen sqlmap-Befehl aus, der alle bisher gelernten Flags kombiniert, um Tabellen aus unserer spezifischen Zieldatenbank aufzulisten.

Wir verwenden die Ziel-URL http://testphp.vulnweb.com/listproducts.php?cat=1, geben die Datenbank acuart mit -D acuart an und weisen sqlmap an, ihre Tabellen mit --tables aufzulisten.

Öffnen Sie Ihr Terminal und führen Sie den folgenden Befehl aus:

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

sqlmap wird nun seine Prüfungen durchführen und versuchen, die Tabellennamen abzurufen. Sie werden verschiedene [INFO]-Meldungen sehen, während sqlmap seine Tests durchführt.

Nach einiger Zeit wird sqlmap eine Liste der in der Datenbank acuart gefundenen Tabellen anzeigen. Die Ausgabe wird in etwa wie folgt aussehen:

---
[INFO] fetching tables for database 'acuart'
...
Database: acuart
[X] articles
[X] carts
[X] categories
[X] guestbook
[X] pictures
[X] products
[X] users
...

Diese Ausgabe bestätigt, dass sqlmap die Tabellen in der Datenbank acuart erfolgreich aufgelistet hat.

Analyse der zurückgegebenen Liste von Tabellennamen

In diesem letzten Schritt analysieren wir die Ausgabe des vorherigen sqlmap-Befehls. Das Verständnis der zurückgegebenen Liste von Tabellennamen ist entscheidend für die Planung nachfolgender Ausbeutungsschritte.

Wenn sqlmap erfolgreich Tabellen aufzählt, präsentiert es diese in einer klaren, organisierten Liste. Für die Datenbank acuart sollten Sie Tabellen wie articles, carts, categories, guestbook, pictures, products und users gesehen haben.

Jeder dieser Tabellennamen gibt einen Hinweis auf die in der Datenbank gespeicherten Daten. Zum Beispiel:

  • users: Diese Tabelle enthält höchstwahrscheinlich Benutzeranmeldeinformationen (Benutzernamen, Passwörter, E-Mails), die oft ein primäres Ziel für Angreifer sind.
  • products: Diese Tabelle würde Informationen über die auf der Website verkauften Produkte enthalten.
  • articles, guestbook, categories: Diese Tabellen enthalten wahrscheinlich inhaltsbezogene Daten.

Das Vorhandensein einer users-Tabelle ist besonders bedeutsam, da sie oft sensible Informationen enthält. Bei einem echten Penetrationstest wäre Ihr nächster Schritt typischerweise die Auflistung der Spalten innerhalb der users-Tabelle (mit --columns) und dann das Auslesen der Daten aus diesen Spalten (mit --dump).

Dieses Lab hat Sie mit der grundlegenden Fähigkeit ausgestattet, Tabellen aus einer bestimmten Datenbank mit sqlmap aufzulisten, ein entscheidender Schritt bei jeder SQL-Injection-Bewertung.

Zusammenfassung

In diesem Lab haben Sie erfolgreich gelernt, wie man Tabellen aus einer bestimmten Datenbank mit sqlmap aufzählt. Sie haben mit dem Verständnis der Bedeutung der Auswahl einer Zieldatenbank begonnen, dann das -D-Flag verwendet, um diese anzugeben, und schließlich das --tables-Flag eingesetzt, um alle zugehörigen Tabellen aufzulisten.

Sie haben den vollständigen sqlmap-Befehl zur Durchführung der Auflistung ausgeführt und die zurückgegebene Liste von Tabellennamen analysiert, um deren potenzielle Bedeutung bei einer Sicherheitsbewertung zu verstehen. Diese Fähigkeit ist ein grundlegender Bestandteil des Prozesses zur Identifizierung und Ausnutzung von SQL-Injection-Schwachstellen, der es Ihnen ermöglicht, Datenbankstrukturen abzubilden und weitere Datenextraktionen zu planen.

Durch die Beherrschung dieser Technik sind Sie nun besser gerüstet, um die zugrunde liegenden Datenstrukturen von Webanwendungen zu navigieren und zu verstehen, ein entscheidender Schritt bei jedem Penetrationstest.