Überprüfen der HTTP POST-Optionen mit -U
In diesem Schritt werden wir die verfügbaren HTTP POST-Optionen in Hydra mithilfe der -U
-Flagge untersuchen. Die -U
-Flagge wird verwendet, um einen Benutzernamen bei der Durchführung einer POST-Anfrage anzugeben. Dies ist besonders nützlich, wenn der Ziel-Dienst einen Benutzernamen als Teil der POST-Daten senden muss.
Bevor wir uns in das praktische Beispiel stürzen, lassen Sie uns das Grundkonzept von HTTP POST-Anfragen verstehen. HTTP POST ist eine Methode, die verwendet wird, um Daten an einen Server zu senden, um eine Ressource zu erstellen oder zu aktualisieren. Im Gegensatz zu GET-Anfragen tragen POST-Anfragen die Daten im Anfragekörper, was sie geeignet macht, um größere Datenmengen zu senden, wie z.B. Formularübermittlungen.
Hydra ist ein leistungsstarkes Tool zum Brute-Force von Anmeldeinformationen. Wenn man auf Dienste abzielt, die HTTP POST für die Authentifizierung verwenden, müssen wir Hydra mit den erforderlichen Informationen versorgen, einschließlich der Benutzernamen- und Passwortfelder sowie der URL, an die die POST-Anfrage gesendet werden soll.
Die -U
-Option in Hydra ermöglicht es Ihnen, einen einzelnen Benutzernamen für alle Anmeldeversuche anzugeben. Dies ist nützlich, wenn Sie bereits den Benutzernamen kennen und nur das Passwort per Brute-Force ermitteln müssen.
Lassen Sie uns sehen, wie man die -U
-Option anhand eines einfachen Beispiels verwendet. Nehmen wir an, wir möchten eine Webanwendung angreifen, die HTTP POST für die Anmeldung verwendet, und wir wissen, dass der Benutzername testuser
ist. Wir können den folgenden Hydra-Befehl verwenden:
hydra -l testuser -P ~/project/password.txt "/login.php:username=^USER^&password=^PASS^:F=Invalid username or password" < target_ip > http-post-form
In diesem Befehl:
hydra
: Der Befehl, um Hydra aufzurufen.
-l testuser
: Gibt den Benutzernamen als testuser
an. Beachten Sie, dass wir hier -l
anstelle von -U
verwenden. -l
gibt einen einzelnen Benutzernamen an, während -U
eine Datei mit einer Liste von Benutzernamen angibt.
-P ~/project/password.txt
: Gibt den Pfad zur Passwortlisten-Datei an. Stellen Sie sicher, dass Sie eine password.txt
-Datei in Ihrem ~/project
-Verzeichnis haben. Sie können eine erstellen, indem Sie nano
verwenden:
nano ~/project/password.txt
Fügen Sie einige häufige Passwörter zur Datei hinzu, ein Passwort pro Zeile, beispielsweise:
password
123456
qwerty
Speichern Sie die Datei und verlassen Sie nano
.
<target_ip>
: Ersetzen Sie dies durch die IP-Adresse des Zielservers. Für dieses Lab müssen Sie dies durch die tatsächliche IP-Adresse des Servers ersetzen, den Sie angreifen. Wir gehen für Demonstrationszwecke davon aus, dass die Ziel-IP 127.0.0.1
ist.
http-post-form
: Gibt an, dass wir das HTTP POST-Formular-Modul verwenden.
"/login.php:username=^USER^&password=^PASS^:F=Invalid username or password"
: Dies ist der wichtigste Teil. Es sagt Hydra, wie die POST-Anfrage konstruiert werden soll.
/login.php
: Die URL, an die die POST-Anfrage gesendet werden soll.
username=^USER^&password=^PASS^
: Die POST-Daten. ^USER^
und ^PASS^
sind Platzhalter, die Hydra jeweils mit dem Benutzernamen und dem Passwort ersetzen wird.
F=Invalid username or password
: Dies sagt Hydra, nach welchem String in der Antwort gesucht werden soll, um zu bestimmen, ob der Anmeldeversuch fehlgeschlagen ist. Wenn Hydra diesen String findet, weiß es, dass der Anmeldeversuch nicht erfolgreich war.
Jetzt lassen Sie uns den Befehl mit der Beispiel-IP-Adresse ausführen:
hydra -l testuser -P ~/project/password.txt 127.0.0.1 http-post-form "/login.php:username=^USER^&password=^PASS^:F=Invalid username or password"
Dieser Befehl wird versuchen, das Passwort für das testuser
-Konto per Brute-Force zu ermitteln, indem er die Passwörter in der password.txt
-Datei verwendet. Hydra wird HTTP POST-Anfragen an die /login.php
-URL senden, wobei die Benutzernamen- und Passwortfelder entsprechend festgelegt sind. Wenn Hydra ein gültiges Passwort findet, wird es es auf dem Bildschirm anzeigen.
Dieses Beispiel zeigt die grundlegende Verwendung der -l
-Option mit dem http-post-form
-Modul. In den folgenden Schritten werden wir fortgeschrittenere Optionen und Techniken zum Angriff auf HTTP POST-Formulare mit Hydra untersuchen.