Einleitung
SQL-Injection ist eine Web-Sicherheitslücke, die es einem Angreifer ermöglicht, die Abfragen zu manipulieren, die eine Anwendung an ihre Datenbank stellt. Im Allgemeinen kann ein Angreifer Daten einsehen, die er normalerweise nicht abrufen kann. Dazu können Daten anderer Benutzer oder andere Daten gehören, auf die die Anwendung selbst zugreifen kann. In vielen Fällen kann ein Angreifer diese Daten ändern oder löschen, was zu dauerhaften Änderungen am Inhalt oder Verhalten der Anwendung führt.
sqlmap ist ein Open-Source-Penetrationstest-Tool, das den Prozess der Erkennung und Ausnutzung von SQL-Injection-Schwachstellen sowie die Übernahme von Datenbankservern automatisiert. Es verfügt über eine leistungsstarke Erkennungs-Engine, viele Nischenfunktionen für den ultimativen Penetrationstester und eine breite Palette von Schaltern, die vom Datenbank-Fingerprinting über das Abrufen von Daten aus der Datenbank bis hin zum Zugriff auf das zugrunde liegende Dateisystem und der Ausführung von Befehlen auf dem Betriebssystem über Out-of-Band-Verbindungen reichen.
In diesem Lab lernen Sie, wie Sie verschiedene SQL-Injection-Techniken in sqlmap mit der Option --technique angeben. Dies ermöglicht es Ihnen, zu steuern, welche Methoden sqlmap für die Injektion versucht zu verwenden, was für die gezielte Ausrichtung auf spezifische Schwachstellen oder die Optimierung von Scan-Zeiten nützlich sein kann.
Die sechs SQLi-Technikcodes verstehen (B, E, U, S, T, Q)
In diesem Schritt lernen Sie die verschiedenen SQL-Injection-Technikcodes kennen, die sqlmap verwendet. sqlmap unterstützt verschiedene SQL-Injection-Techniken, und Sie können mit der Option --technique angeben, welche davon verwendet werden sollen. Jede Technik wird durch ein einzelnes Zeichen dargestellt.
Die sechs Haupt-SQL-Injection-Technikcodes sind:
- B: Boolesche-basierte Blind-SQL-Injection. Diese Technik beruht darauf, SQL-Abfragen zu senden, die ein WAHR- oder FALSCH-Ergebnis zurückgeben, und dann die Antwort der Anwendung (z. B. Änderungen am Seiteninhalt) zu beobachten, um Informationen abzuleiten.
- E: Fehlerbasierte SQL-Injection. Diese Technik zwingt die Datenbank, eine Fehlermeldung zu generieren, die Informationen über die Datenbankstruktur oder Daten enthält.
- U: UNION-Query-basierte SQL-Injection. Diese Technik verwendet den SQL-Operator
UNION, um die Ergebnisse von zwei oder mehrSELECT-Anweisungen zu einem einzigen Ergebnissatz zu kombinieren, was es einem Angreifer ermöglicht, Daten aus anderen Tabellen abzurufen. - S: Stacked Queries SQL-Injection. Diese Technik ermöglicht es einem Angreifer, mehrere SQL-Anweisungen in einer einzigen Abfrage auszuführen, was häufig zur Ausführung beliebiger Befehle auf dem Datenbankserver verwendet wird.
- T: Zeitbasierte Blind-SQL-Injection. Diese Technik beruht darauf, die Datenbank basierend auf einer WAHR- oder FALSCH-Bedingung für eine bestimmte Zeitspanne pausieren zu lassen, was es einem Angreifer ermöglicht, Informationen durch Beobachtung der Antwortzeiten abzuleiten.
- Q: Inline-Queries SQL-Injection. Diese Technik beinhaltet das direkte Einfügen von Subqueries in die ursprüngliche Abfrage.
Das Verständnis dieser Techniken ist entscheidend für die effektive Nutzung von sqlmap und für das Verständnis der zugrunde liegenden Prinzipien der SQL-Injection.
Erzwingen eines booleschen Blindtests mit --technique=B
In diesem Schritt lernen Sie, wie Sie sqlmap dazu zwingen, ausschließlich die boolesche Blind-SQL-Injection-Technik zu verwenden. Dies kann nützlich sein, wenn Sie vermuten, dass ein Ziel anfällig für diese spezifische Art von Injektion ist, oder wenn Sie die Scanzeit reduzieren möchten, indem Sie sich auf eine einzelne Technik konzentrieren.
Die Option --technique=B weist sqlmap an, ausschließlich boolesche Blind-Injection zu verwenden.
Lassen Sie uns die Ausführung von sqlmap mit dieser Option simulieren. In einem realen Szenario würden Sie http://testphp.vulnweb.com/artists.php?id=1 durch Ihre Ziel-URL ersetzen. Für dieses Lab demonstrieren wir nur den Befehl.
Öffnen Sie Ihr Terminal und führen Sie den folgenden Befehl aus:
sqlmap -u "http://testphp.vulnweb.com/artists.php?id=1" --technique=B --batch --eta --skip-waf
-u "http://testphp.vulnweb.com/artists.php?id=1": Gibt die Ziel-URL an. Dies ist eine bekannte anfällige Testseite.--technique=B: Zwingtsqlmap, nur boolesche Blind-Injection zu verwenden.--batch: Führtsqlmapim nicht-interaktiven Modus aus und akzeptiert Standardauswahlen.--eta: Zeigt die geschätzte Ankunftszeit für jede Ausgabe an.--skip-waf: Überspringt die Erkennung von Web Application Firewalls (WAF).
Sie werden die Ausgabe von sqlmap beobachten, die darauf hinweist, dass es sich hauptsächlich auf boolesche Blind-Schwachstellen testet. Die Ausgabe zeigt, wie sqlmap verschiedene Payloads ausprobiert und die Antworten analysiert.
_
___ ___ ___ ___
|_ -| . | . | . |
|___|_ |_ |_ |
|_| |_| |_| 3.7-dev (r12345)
[!] legal disclaimer: Usage of sqlmap for attacking targets without prior mutual consent is illegal. It is the end user's responsibility to obey all applicable local, state and federal laws. sqlmap developers assume no liability and are not responsible for any misuse or damage caused by this program.
[*] starting @ 12:00:00 /2023-01-01/
[12:00:00] [INFO] starting sqlmap 3.7-dev (r12345)
[12:00:00] [INFO] testing connection to the target URL
[12:00:01] [INFO] checking if the target is stable
[12:00:01] [INFO] target URL is stable
[12:00:01] [INFO] testing for SQL injection on URL 'http://testphp.vulnweb.com/artists.php?id=1'
[12:00:01] [INFO] testing 'Boolean-based blind - Parameter: id'
...
Die Ausgabe bestätigt, dass sich sqlmap auf die boolesche Blind-Technik konzentriert.
Erzwingen eines zeitbasierten Blindtests mit --technique=T
In diesem Schritt lernen Sie, wie Sie sqlmap dazu zwingen, ausschließlich die zeitbasierte Blind-SQL-Injection-Technik zu verwenden. Diese Technik wird oft eingesetzt, wenn andere Methoden wie Error-based oder Boolean-based keine Ergebnisse liefern, insbesondere in Szenarien, in denen die Antwort der Anwendung unabhängig von der Injektion konsistent ist.
Die Option --technique=T weist sqlmap an, ausschließlich zeitbasierte Blind-Injection zu verwenden.
Öffnen Sie Ihr Terminal und führen Sie den folgenden Befehl aus:
sqlmap -u "http://testphp.vulnweb.com/artists.php?id=1" --technique=T --batch --eta --skip-waf
-u "http://testphp.vulnweb.com/artists.php?id=1": Gibt die Ziel-URL an.--technique=T: Zwingtsqlmap, nur zeitbasierte Blind-Injection zu verwenden.--batch: Führtsqlmapim nicht-interaktiven Modus aus.--eta: Zeigt die geschätzte Ankunftszeit an.--skip-waf: Überspringt die WAF-Erkennung.
Sie werden die Ausgabe von sqlmap beobachten, die zeigt, wie Payloads injiziert werden, die Verzögerungen in der Serverantwort verursachen. Diese Methode kann aufgrund der Notwendigkeit, auf Zeitverzögerungen zu warten, langsamer sein als andere.
_
___ ___ ___ ___
|_ -| . | . | . |
|___|_ |_ |_ |
|_| |_| |_| 3.7-dev (r12345)
[!] legal disclaimer: Usage of sqlmap for attacking targets without prior mutual consent is illegal. It is the end user's responsibility to obey all applicable local, state and federal laws. sqlmap developers assume no liability and are not responsible for any misuse or damage caused by this program.
[*] starting @ 12:00:00 /2023-01-01/
[12:00:00] [INFO] starting sqlmap 3.7-dev (r12345)
[12:00:00] [INFO] testing connection to the target URL
[12:00:01] [INFO] checking if the target is stable
[12:00:01] [INFO] target URL is stable
[12:00:01] [INFO] testing for SQL injection on URL 'http://testphp.vulnweb.com/artists.php?id=1'
[12:00:01] [INFO] testing 'Time-based blind - Parameter: id'
...
Die Ausgabe bestätigt, dass sich sqlmap nun auf die zeitbasierte Blind-Technik konzentriert.
Erzwingen eines UNION-Query-basierten Tests mit --technique=U
In diesem Schritt lernen Sie, wie Sie sqlmap dazu zwingen, ausschließlich die UNION-Query-basierte SQL-Injection-Technik zu verwenden. Diese Technik ist äußerst effektiv, wenn die Anwendung die Ergebnisse der SQL-Abfrage direkt auf der Seite anzeigt, da sie es einem Angreifer ermöglicht, Daten aus anderen Tabellen in der Datenbank abzurufen.
Die Option --technique=U weist sqlmap an, ausschließlich UNION-Query-basierte Injektion zu verwenden.
Öffnen Sie Ihr Terminal und führen Sie den folgenden Befehl aus:
sqlmap -u "http://testphp.vulnweb.com/artists.php?id=1" --technique=U --batch --eta --skip-waf
-u "http://testphp.vulnweb.com/artists.php?id=1": Gibt die Ziel-URL an.--technique=U: Zwingtsqlmap, nur UNION-Query-basierte Injektion zu verwenden.--batch: Führtsqlmapim nicht-interaktiven Modus aus.--eta: Zeigt die geschätzte Ankunftszeit an.--skip-waf: Überspringt die WAF-Erkennung.
Sie werden die Ausgabe von sqlmap beobachten, die zeigt, wie versucht wird, UNION SELECT-Anweisungen zu injizieren. Bei Erfolg kann diese Technik schnell die Datenbankstruktur und Daten aufdecken.
_
___ ___ ___ ___
|_ -| . | . | . |
|___|_ |_ |_ |
|_| |_| |_| 3.7-dev (r12345)
[!] legal disclaimer: Usage of sqlmap for attacking targets without prior mutual consent is illegal. It is the end user's responsibility to obey all applicable local, state and federal laws. sqlmap developers assume no liability and are not responsible for any misuse or damage caused by this program.
[*] starting @ 12:00:00 /2023-01-01/
[12:00:00] [INFO] starting sqlmap 3.7-dev (r12345)
[12:00:00] [INFO] testing connection to the target URL
[12:00:01] [INFO] checking if the target is stable
[12:00:01] [INFO] target URL is stable
[12:00:01] [INFO] testing for SQL injection on URL 'http://testphp.vulnweb.com/artists.php?id=1'
[12:00:01] [INFO] testing 'UNION query - Parameter: id'
...
Die Ausgabe bestätigt, dass sich sqlmap nun auf die UNION-Query-basierte Technik konzentriert.
Ausführen eines Scans mit mehreren Techniken mit --technique=BEUST
In diesem Schritt lernen Sie, wie Sie mehrere SQL-Injection-Techniken in einem einzigen sqlmap-Scan kombinieren können. Dies ist oft der praktischste Ansatz, da er es sqlmap ermöglicht, verschiedene Methoden zur Suche nach Schwachstellen auszuprobieren und somit die Erfolgsaussichten zu erhöhen.
Sie können mehrere Techniken angeben, indem Sie deren jeweilige Codes nach --technique= verketten. Zum Beispiel weist --technique=BEUST sqlmap an, Boolean-based, Error-based, UNION query-based, Stacked queries und Time-based blind Injektionen auszuprobieren.
Öffnen Sie Ihr Terminal und führen Sie den folgenden Befehl aus:
sqlmap -u "http://testphp.vulnweb.com/artists.php?id=1" --technique=BEUST --batch --eta --skip-waf
-u "http://testphp.vulnweb.com/artists.php?id=1": Gibt die Ziel-URL an.--technique=BEUST: Zwingtsqlmap, Boolean-based, Error-based, UNION query-based, Stacked queries und Time-based blind Injektionen zu verwenden.--batch: Führtsqlmapim nicht-interaktiven Modus aus.--eta: Zeigt die geschätzte Ankunftszeit an.--skip-waf: Überspringt die WAF-Erkennung.
Sie werden die Ausgabe von sqlmap beobachten, die zeigt, wie jede der angegebenen Techniken systematisch getestet wird. Dieser umfassende Ansatz wird im Allgemeinen für anfängliche Scans empfohlen.
_
___ ___ ___ ___
|_ -| . | . | . |
|___|_ |_ |_ |
|_| |_| |_| 3.7-dev (r12345)
[!] legal disclaimer: Usage of sqlmap for attacking targets without prior mutual consent is illegal. It is the end user's responsibility to obey all applicable local, state and federal laws. sqlmap developers assume no liability and are not responsible for any misuse or damage caused by this program.
[*] starting @ 12:00:00 /2023-01-01/
[12:00:00] [INFO] starting sqlmap 3.7-dev (r12345)
[12:00:00] [INFO] testing connection to the target URL
[12:00:01] [INFO] checking if the target is stable
[12:00:01] [INFO] target URL is stable
[12:00:01] [INFO] testing for SQL injection on URL 'http://testphp.vulnweb.com/artists.php?id=1'
[12:00:01] [INFO] testing 'Boolean-based blind - Parameter: id'
[12:00:02] [INFO] testing 'Error-based - Parameter: id'
[12:00:03] [INFO] testing 'UNION query - Parameter: id'
[12:00:04] [INFO] testing 'Stacked queries - Parameter: id'
[12:00:05] [INFO] testing 'Time-based blind - Parameter: id'
...
Die Ausgabe bestätigt, dass sqlmap nun wie angegeben mehrere Techniken testet.
Zusammenfassung
In diesem Lab haben Sie erfolgreich gelernt, wie Sie die von sqlmap verwendeten SQL-Injection-Techniken spezifizieren und steuern können. Sie haben die einzelnen Technikcodes (B, E, U, S, T, Q) kennengelernt und geübt, sqlmap dazu zu zwingen, spezifische Methoden wie Boolean-based blind, Time-based blind und UNION query-based Injektionen zu verwenden. Schließlich haben Sie gelernt, wie Sie mehrere Techniken für einen umfassenderen Scan kombinieren können.
Das Verständnis und die Nutzung der --technique-Option in sqlmap ermöglichen es Ihnen, Ihre Schwachstellenbewertungen fein abzustimmen, Scanzeiten zu optimieren und spezifische Arten von SQL-Injection-Schwachstellen effektiver anzuzielen. Diese Fähigkeit ist entscheidend für effizientes und präzises Penetration Testing.


