sqlmap-Spickzettel
SQLMap ist ein kostenloses Tool, das überprüft Datenbankschwachstellen . Wenn Sie eine Website betreiben, sind Sie einer Reihe von SQL-basierten Hackerangriffen ausgesetzt, die die Datenbank gefährden können, die hinter vielen Funktionen der Website steckt. Wenn Hacker in Ihr Netzwerk eindringen und einen Endpunkt infizieren können, können sie auch SQL-Injection-Techniken verwenden, um die unterstützten Datenbanken zu gefährden Back-Office-Funktionen .
Ihre Datenbank ist das Herzstück Ihres Unternehmensinformationssystems. Es fördert den Datenaustausch in ERP-Systemen und Filialen sensible Daten , wie Kundendatensätze und Umsatzinformationen. Um die potenzielle Schwachstelle in diesem Bereich vollständig zu verstehen, müssen Sie wissen, was ein SQL-Injection-Angriff ist.
SQL-Injection-Angriffe
SQL ist das Strukturierte Abfragesprache . Es ist die Sprache, die Programme verwenden, um auf Daten in einem zuzugreifen relationale Datenbank . Die Sprache umfasst auch Befehle zum Aktualisieren oder Löschen von Daten in Datenbanktabellen.
Für Endbenutzer erfolgt der Zugriff auf eine Datenbank über ein Formular, das sich entweder auf einer Webseite oder im Frontend einer Unternehmenssoftware befindet. Ein Beispiel hierfür ist das Feld, in das Sie auf einer Google-Seite eine Suchanfrage eingeben. Der Code hinter dem Bildschirm Nimmt die Eingabe, die Benutzer in das Feld eingeben, und verpackt sie in eine SQL-Abfrage. Dies wird dann an die Datenbank übermittelt, um passende Datensätze zu extrahieren.
Hacker haben Möglichkeiten entdeckt, eine vollständige SQL-Anweisung oder eine Klausel einer Anweisung in ein Eingabefeld einzufügen. Dadurch können die in das Formular eingebetteten Abfrageverarbeitungsmechanismen ausgetrickst und ein Ganzes übergeben werden SQL-Anweisung an die Datenbank weiterzuleiten, anstatt die Eingabe als Abfragewert zu übermitteln.
Dieser Cheat heißt „ SQL-Injektion ” und es kann Hackern vollen Zugriff auf Ihre Datenbank gewähren und dabei die Kontrollen umgehen, die in den Code der Anwendung oder Webseite integriert sind, die das Eingabefeld enthält.
Durch SQL-Injection-Angriffe können Hacker die gesamte Datenbank stehlen oder Werte aktualisieren. Die Möglichkeit, Daten in einer Datenbank zu ändern, ermöglicht Hackern dies Geld stehlen . Stellen Sie sich vor, ein Kunde könnte den Kontostand eines Kontos von einem negativen Betrag in einen positiven Betrag ändern. In automatisierten Systemen würde dies eine Zahlung auslösen und die Hacker könnten sich mit diesem Geld aus dem Staub machen, bevor irgendjemand im Unternehmen den Fehler bemerkt.
Siehe auch: Beste SQL Server-Überwachungstools
Klassifizierung von SQL-Injection-Angriffen
Der Öffnen Sie das Web Application Security-Projekt (OWASP) erstellt eine Liste der zehn größten Systemschwachstellen, die als endgültige Liste der zu suchenden Schwachstellen gilt. Schwachstellenscanner versprechen, nach dem zu suchen OWASP Top 10 . SQL-Injection ist die von OWASP am häufigsten aufgeführte Bedrohung. Die Organisation unterteilt diese Kategorie in vier Typen.
- Klassische SQL-Injection
- Blind- oder Inferenz-SQL-Injection
- DBMS-spezifische SQL-Injection
- Zusammengesetzte SQL-Injection
Diese Kategorien sind weiter nach Branche unterteilt. Ein klassischer SQL-Injection-Angriff wird auch als „Angriff“ bezeichnet In-Band-Angriff . Diese Kategorie umfasst zwei mögliche Methoden – fehlerbasiertes SQLI und Union-basiertes SQLI.
Zusammengesetzte SQL-Injection-Angriffe ergänzen die SQL-Injection-Aktivität um eine weitere Art von Hackerangriffen. Diese sind:
- Authentifizierungsangriffe
- DDoS-Angriffe
- DNS-Hijacking
- Cross-Site-Scripting (XSS)
Der Kürze halber konzentriert sich dieser Leitfaden auf sqlmap – Auf die Definition dieser Angriffsstrategien wird hier nicht eingegangen.
Prüfung auf SQL-Injection-Schwachstellen
Mit Sqlmap können Sie die Arten von Angriffen ausprobieren, die Hacker auf Datenbanken durchführen. Auf diese Weise können Sie sehen, ob Ihre Systeme dies tun vor Angriffen geschützt .
Hacker erfinden ständig neue Angriffsstrategien. Die Art und Weise, wie relationale Datenbanken und SQL funktionieren, bedeutet jedoch, dass es nur eine begrenzte Anzahl von Angriffsarten gibt, die funktionieren. Mit anderen Worten: Es gibt immer neue Angriffe Variationen zu einem Thema . Wenn Sie über ein Tool verfügen, das den Schutz vor allgemeinen Angriffskategorien gewährleistet, können Sie sicher sein, dass Sie alle möglichen Schwachstellen aufgedeckt haben.
Eine SQLmap-Prüfung versucht in jeder von mehreren Kategorien einen Angriff – insgesamt gibt es sechs. Wenn einer dieser Angriffe gelingt es , wissen Sie, dass Sie ein ernstes Problem haben und ein Teil der Schnittstelle vor Ihrer Datenbank neu geschrieben werden muss, um diesen Angriff zu blockieren.
Die Arten von Angriffen, die sqlmap versucht, sind:
- Boolesche blinde SQL-Injection
- Zeitbasierte blinde SQL-Injection
- Fehlerbasierte SQL-Injection
- Union-basierte SQL-Injection
- Gestapelte Abfragen
- Out-of-Band-Angriffe
Die von den SQLMap-Entwicklern verwendeten Definitionen stimmen nicht genau mit den von OWASP verwendeten Kategorien überein. Die Liste umfasst beide Arten von Klassische SQL-Injection und beide Arten von Blinde SQL-Injection .
Die von sqlmap durchgeführte Angriffsstrategie für gestapelte Abfragen sollte die OWASP-Begriffe abdecken DBMS-spezifische Angriffe . Die kombinierte Angriffskategorie von OWASP ist für das SQL-Injection-fokussierte SQLMap-Erkennungssystem nicht relevant.
Wenn Sie sicherstellen können, dass Ihr System nicht anfällig für einen SQL-Injection-Angriff ist, ist es logischerweise auch nicht automatisch anfällig für einen kombinierten Angriff. Sie sollten jedoch andere verwenden Stifttestwerkzeuge um zu prüfen, ob Ihre Website anfällig für DDoS-Angriffe, XSS oder DNS-Hijacking ist. Alle Systeme sind permanent anfällig für Authentifizierungsangriffe – Sie müssen eine sichere Identitäts- und Zugriffsverwaltungsstrategie sicherstellen, um Ihr Unternehmen vor der Bedrohung zu schützen Authentifizierungsknacken .
Die SQLmap-Systemprüfungen funktionieren mit den folgenden DBMS:
MySQL | Microsoft SQL Server | Microsoft Access | MariaDB |
Orakel | PostgreSQL | IBM DB2 | SQLite |
Feuervogel | Sybase | SAP Max DB | Informix |
MemSQL | TiDB | KakerlakeDB | HSQLDB |
H2 | MonetDB | Apache Derby | Apache Ignite |
Amazon Redshift | Vertikal | McCoy | Bald |
hohe Basis | MimerSQL | CrateDB | Grüne Pflaume |
Nieselregen | Kubrid | InterSystems-Cache | IRIS |
eXtremeDB | FrontBase | YugabyteDB | Virtuose |
Raima-Datenbankmanager |
Systemanforderungen für sqlmap
Sie können sqlmap installieren Windows , Mac OS , Und Linux .
Das SQLMAP-System ist in Python geschrieben und muss daher installiert werden Python 2.6 oder später auf Ihrem Computer, um sqlmap auszuführen. Die aktuelle Version (Stand Juli 2021) ist 3.9.
Um herauszufinden, ob Sie Python installiert haben, öffnen Sie unter Windows eine Eingabeaufforderung und geben Sie ein Python-Version . Wenn Sie Python nicht haben, wird eine Meldung angezeigt, die Sie auffordert, Python erneut ohne Parameter einzugeben. Typ Python Dadurch wird der Microsoft Store mit dem zum Herunterladen eingerichteten Python-Paket geöffnet. Klick auf das Erhalten Klicken Sie auf die Schaltfläche und befolgen Sie die Installationsanweisungen.
Wenn Sie macOS-Typ haben Python-Version . Wenn Sie eine Fehlermeldung erhalten, geben Sie die folgenden Befehle ein:
|_+_|In diesen Zeilen die $ stellt die Systemeingabeaufforderung dar – geben Sie diese nicht ein.
Wenn Sie Linux haben, ist Python bereits installiert.
Installieren Sie sqlmap
So installieren Sie sqlmap:
- Besuchen Sie die Website des SQLMap-Projekts unter sqlmap.org .
- Wenn Sie Windows haben, klicken Sie auf Laden Sie .zip herunter Datei-Schaltfläche. Wenn Sie macOS oder Linux haben, klicken Sie auf Laden Sie .tar.gz herunter Datei-Schaltfläche.
- Entpacken Sie die komprimierte Datei.
Ihr System benennt das Verzeichnis automatisch genauso wie die komprimierte Datei. Da es sich jedoch um einen sehr langen Namen handelt, entscheiden Sie sich dafür, das neue Verzeichnis nur „sqlmap“ zu nennen. Es spielt keine Rolle, wo auf Ihrem Computer Sie dieses Verzeichnis erstellen.
Ausführen von sqlmap
Das sqlmap-System ist ein Befehlszeilendienstprogramm. Es gibt keine GUI-Oberfläche dafür. Gehen Sie also zur Befehlszeile Ihres Computers, um sqlmap zu verwenden. Wechseln Sie in das von Ihnen erstellte sqlmap-Verzeichnis, um das Dienstprogramm auszuführen. Sie müssen kein Programm kompilieren.
Das Programm, das Sie zur Verwendung von sqlmap ausführen, heißt sqlmap.py. Es wird nicht ausgeführt, es sei denn, Sie fügen am Ende des Programmnamens eine Option hinzu.
Die Optionen für sqlmap sind:
-u URL | Die Ziel-URL Format:-in 'http://www.target.com/path/file.htm?variable=1' |
-d DIREKT | Verbindungszeichenfolge für direkte Datenbankverbindung Format:-d DBMS://DATABASE_FILEPATHoder -d DBMS://USER:PASSWORD@DBMS_IP:DBMS_PORT/DATABASE_NAME |
-l LOGFILE | Analysieren Sie Ziele aus der Burp- oder WebScarab-Proxy-Protokolldatei |
-m BULKFILE | Scannen Sie mehrere in einer Textdatei angegebene Ziele Format:Die Datei sollte pro Zeile eine URL enthalten |
-r ANFRAGEDATEI | HTTP-Anfrage aus einer Datei laden Format:Die Datei kann eine HTTP- oder eine HTTPS-Transaktion enthalten |
-g GOOGLEDORK | Verarbeiten Sie Google-Idioten-Ergebnisse als Ziel-URLs |
-c KONFIGFILE | Laden Sie Optionen aus einer Konfigurations-INI-Datei |
--Magier | Ein geführter Ausführungsservice |
--aktualisieren | Aktualisieren Sie sqlmap auf die neueste Version |
--säubern | Leeren Sie den SQLMAP-Datenordner |
--purge-output | Wie oben |
--Abhängigkeiten | Suchen Sie nach fehlenden SQLMAP-Abhängigkeiten |
-H | Grundlegende Hilfe |
-hh | Erweiterte Hilfe |
-- Ausführung | Zeigt die Versionsnummer an |
Sie können sqlmap nicht ohne eine dieser Optionen ausführen. Es gibt viele andere Möglichkeiten und es ist oft notwendig, mehrere Optionen nacheinander in einer Befehlszeile aneinanderzureihen.
Ein vollständiger Angriff erfordert so viele Optionen und Eingaben, dass es einfacher ist, alle diese Optionen in einer Datei abzulegen und dann die Datei aufzurufen, anstatt sie alle einzugeben. In diesem Szenario handelt es sich um eine Konvention, alle Optionen darin zu speichern eine Textdatei mit der Erweiterung .INI. Sie würden diese Optionsliste mit der Option -c gefolgt vom Dateinamen in die Befehlszeile einfügen. Diese Methode verhindert, dass der gesamte lange Befehl immer wieder eingegeben werden muss, um Rechtschreib- oder Formatfehler auszugleichen.
Weitere SQLmap-Optionen
Es gibt viele andere Schalter, die Sie zu einem hinzufügen können sqlmap Befehl. Optionsparameter, die auf Zeichen basieren, sollten in doppelte Anführungszeichen („ “) eingeschlossen werden, numerische Parameter sollten nicht in Anführungszeichen gesetzt werden.
Der Kürze halber haben wir in diesem Leitfaden alles in einer PDF-Datei dargestellt:
Klicken Sie auf das Bild oben, um das vollständige Bild zu öffnen sqlmap-Spickzettel JPG in einem neuen Fenster, oder Klicken Sie hier, um den SQLMAP-Spickzettel herunterzuladenPDF .
Ausführen eines SQL-Injection-Angriffsscans mit sqlmap
Die große Anzahl der für sqlmap verfügbaren Optionen ist entmutigend. Es gibt zu viele Optionen, um herauszufinden, wie man einen SQL-Injection-Angriff gestaltet. Der beste Weg, sich das Wissen über die Durchführung der verschiedenen Angriffsarten anzueignen, ist: am Beispiel lernen .
Um zu erfahren, wie ein SQLMAP-Testsystem abläuft, führen Sie den folgenden Testlauf durch und ersetzen Sie dabei die URL Ihrer Website durch die Markierung
Dieser Befehl löst einen Durchlauf aller sqlmap-Prozeduren aus und bietet Ihnen Optionen für den weiteren Testverlauf.
Das System wird angezeigt die Startzeit des Tests. Jede Berichtszeile enthält die Zeit, zu der jeder Test abgeschlossen wurde.
Der sqlmap-Dienst wird Testen Sie die Verbindung an den Webserver senden und dann verschiedene Aspekte der Site scannen. Zu diesen Attributen gehört der Standardzeichensatz der Site, eine Prüfung auf das Vorhandensein von Verteidigungssysteme B. eine Webanwendungs-Firewall oder Intrusion-Detection-Systeme.
In der nächsten Testphase wird das für die Site verwendete DBMS identifiziert. Es wird versucht eine Reihe von Angriffen um die Schwachstelle der Datenbank der Website zu untersuchen. Diese sind:
- Ein GET-Eingabeangriff – dieser identifiziert die Anfälligkeit für klassische SQLI- und XSS-Angriffe
- DBMS-spezifische Angriffe
- Boolescher blinder SQLI
- Das System fragt nach einem Level und einem Risikowert. Wenn diese hoch genug sind, wird ein zeitbasierter blinder SQLI ausgeführt
- Ein fehlerbasierter SQLI-Angriff
- Ein UNION-basierter SQLI, wenn die Level- und Risikowerte hoch genug sind
- Gestapelte Abfragen
Als Antwort auf die in diesem Lauf verwendete Banner-Option schließt sqlmap seinen Lauf durch Abrufen ab das Datenbankbanner . Abschließend werden alle extrahierten Daten mit Erläuterungen zu ihrer Bedeutung beschrieben eine Protokolldatei .
Wie Sie sehen, durchläuft das sqlmap-System ohne die Angabe vieler Optionen für den Befehl eine Standardserie von Angriffen und fragt den Benutzer im weiteren Verlauf des Tests nach Entscheidungen über die Testtiefe.
Eine kleine Änderung am Befehl führt die gleiche Testbatterie aus, jedoch unter Verwendung von a POST als Testmethode statt a ERHALTEN .
Probieren Sie den folgenden Befehl aus:
|_+_|Passwort knacken mit sqlmap
Eine Änderung von nur einem Wort im ersten Befehl, der für den vorherigen Abschnitt verwendet wurde, gibt Ihnen eine Reihe von Tests, um zu sehen, ob das Anmeldeinformationsverwaltungssystem Ihrer Datenbank weist Schwachstellen auf.
Geben Sie den folgenden Befehl ein:
|_+_|Auch hier müssen Sie die URL Ihrer Website ersetzen
Wenn Sie diesen Befehl ausführen, startet sqlmap eine Reihe von Tests und bietet Ihnen nebenbei eine Reihe von Optionen.
Der sqlmap-Lauf versucht einen zeitbasierten Blind-SQLI und dann einen UNION-basierten Blindangriff. Es bietet Ihnen dann die Möglichkeit, Passwort-Hashes zur Analyse mit einem anderen Tool in einer Datei zu speichern, und bietet dann die Möglichkeit für einen wörterbuchbasierten Angriff.
Die Dienste probieren eine Reihe bekannter Benutzerkontonamen aus und gehen für jeden Kandidatenbenutzernamen eine Liste häufig verwendeter Passwörter durch. Dies nennt man „ Streubomben ' Attacke. Die Dateisuite von sqlmap enthält eine Datei mit Nutzlasten für diesen Angriff, Sie können jedoch stattdessen Ihre eigene Datei bereitstellen.
Immer wenn sqlmap auf eine Kombination aus Benutzername und Passwort trifft, wird diese angezeigt. Alle Aktionen für den Lauf werden dann in eine Protokolldatei geschrieben, bevor das Programm seinen Lauf beendet.
Erhalten Sie eine Liste der Datenbanken auf Ihrem System und ihrer Tabellen
Informationen sind Macht und Hacker müssen zunächst wissen, welche Datenbankinstanzen Sie auf Ihrem System haben, um in sie einzudringen. Ob diese Basisinformationen leicht zugänglich sind, erfahren Sie hier Eindringlinge mit folgendem Befehl:
|_+_|Dieser Test umfasst zeitbasierte, fehlerbasierte und UNION-basierte SQL-Injection-Angriffe. Anschließend wird die DBMS-Marke identifiziert und die Datenbanknamen aufgelistet. Die während des Testlaufs gewonnenen Informationen werden dann beim Beenden des Programms in eine Protokolldatei geschrieben.
Recherchieren Sie etwas weiter und rufen Sie mit dem folgenden Befehl eine Liste der Tabellen in einer dieser Datenbanken ab.
|_+_|Geben Sie den Namen einer der Datenbankinstanzen ein, die Sie in der ersten Abfrage dieses Abschnitts aus der Liste erhalten haben.
Dieser Teststapel umfasst zeitbasierte, fehlerbasierte und UNION-basierte SQL-Injection-Angriffe. Anschließend werden die Namen der Tabellen aufgelistet, die sich in der angegebenen Datenbankinstanz befinden. Diese Daten werden nach Abschluss des Programms in eine Protokolldatei geschrieben.
Erhalten die Inhalte einer dieser Tabellen mit dem folgenden Befehl:
|_+_|Ersetzen Sie den Namen einer der Tabellen, die Sie gefunden haben