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
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