Brute-Force-Angriffe auf Web-Authentifizierung

HydraBeginner
Jetzt üben

Einführung

In diesem Lab lernen Sie, wie Angreifer schwache Web-Authentifizierungssysteme kompromittieren. Sie analysieren standardmäßige HTTP-POST-Anmeldeanfragen und konfigurieren das Brute-Force-Tool Hydra, um automatisierte Wörterbuchangriffe auf das Anmeldeformular eines Webportals durchzuführen und gültige Zugangsdaten wiederherzustellen.

Bei Brute-Force-Angriffen werden systematisch viele Passwörter oder Passphrasen übermittelt, in der Hoffnung, irgendwann die richtige Kombination zu erraten. Wenn Angreifer Webanwendungen ins Visier nehmen, konzentrieren sie sich häufig auf Anmeldeformulare, die die HTTP-POST-Methode zur Übertragung von Benutzerdaten verwenden. Das Verständnis dieser Angriffsvektoren ist entscheidend für die Absicherung von Webanwendungen sowie für die Implementierung geeigneter Ratenbegrenzungen (Rate Limiting) und Kontosperrmechanismen.

Im Grunde handelt es sich hierbei um ein ökonomisches Problem der Authentifizierung. Wenn die Anwendung es Angreifern ermöglicht, kostengünstig viele Versuche zu unternehmen, wird die Wiederherstellung schwacher oder mehrfach verwendeter Zugangsdaten zu einem realistischen Szenario.

Analyse der Anmeldeanfrage-Parameter

In diesem Schritt analysieren Sie die Ziel-Webanwendung, um zu verstehen, wie sie Anmeldeanfragen verarbeitet. Bevor Sie einen Brute-Force-Angriff starten, müssen Sie die Ziel-URL, die verwendete HTTP-Methode, die Namen der Eingabefelder und die bei einem fehlgeschlagenen Anmeldeversuch zurückgegebene Meldung identifizieren.

Dieser Aufklärungsschritt ist wichtig, da Tools wie Hydra nur so gut sind wie die Anforderungsvorlage, die Sie ihnen geben. Wenn Sie das Formular falsch interpretieren, ist die Angriffslogik von Anfang an fehlerhaft.

Ein lokaler Webserver wurde für Sie auf Port 8080 gestartet. Lassen Sie uns zunächst den HTML-Quellcode der Anmeldeseite anzeigen, um die Formularparameter zu identifizieren. Sie können den Befehl curl verwenden, um den Inhalt der Webseite abzurufen.

curl -s http://127.0.0.1:8080/

Die Ausgabe zeigt ein einfaches HTML-Formular. Beachten Sie das Attribut action="/login", das uns mitteilt, wohin die Formulardaten gesendet werden. Das Attribut method="POST" zeigt an, dass die Daten mittels einer HTTP-POST-Anfrage übertragen werden. Beobachten Sie schließlich die name-Attribute der Eingabefelder: username und password.

Als Nächstes müssen Sie einen fehlgeschlagenen Anmeldeversuch simulieren, um zu sehen, wie der Server reagiert. Dies ist ein kritischer Schritt, da Brute-Force-Tools wissen müssen, wie ein "Fehlschlag" aussieht, damit sie einen "Erfolg" identifizieren können, wenn die Fehlermeldung ausbleibt.

Verwenden Sie curl, um eine POST-Anfrage mit Dummy-Zugangsdaten zu senden. Das Flag -X POST spezifiziert die HTTP-Methode, und das Flag -d ermöglicht es Ihnen, die Formulardaten zu senden.

curl -X POST -d "username=testuser&password=wrongpass" http://127.0.0.1:8080/login

Sie sollten die folgende Ausgabe sehen:

Invalid credentials. Please try again.

Diese spezifische Zeichenfolge, Invalid credentials, ist die Fehlermeldung. Sie werden diesen exakten Ausdruck später verwenden, um das Brute-Force-Tool zu konfigurieren.

Auswahl der Ziel-Wörterbücher

In diesem Schritt bereiten Sie die Wörterbücher (Wordlists) vor, die für den Brute-Force-Angriff verwendet werden. Ein Wörterbuchangriff stützt sich auf eine vordefinierte Liste potenzieller Benutzernamen und Passwörter.

Wörterbuchangriffe sind schneller als eine blinde, erschöpfende Suche (Exhaustive Search), da sie die Vorhersehbarkeit menschlichen Verhaltens ausnutzen. Menschen wählen Passwörter nicht gleichmäßig zufällig aus.

Anstatt jede mögliche Zeichenkombination auszuprobieren, verwenden Angreifer Wörterbücher, die gängige Benutzernamen (wie admin, root, user) und häufig verwendete Passwörter (wie 123456, password, qwerty) enthalten.

Sie erstellen zwei einfache Textdateien in Ihrem aktuellen Arbeitsverzeichnis (~/project). Die erste Datei enthält eine Liste potenzieller Benutzernamen. Verwenden Sie den Befehl echo, um Namen in eine Datei namens users.txt zu schreiben.

echo "root" > users.txt
echo "admin" >> users.txt
echo "test" >> users.txt

Der Operator > erstellt die Datei und schreibt die erste Zeile, während der Operator >> nachfolgende Zeilen an die bestehende Datei anhängt.

Erstellen Sie als Nächstes eine Datei namens passwords.txt, die eine Liste potenzieller Passwörter enthält.

echo "password123" > passwords.txt
echo "admin123" >> passwords.txt
echo "secret123" >> passwords.txt
echo "123456" >> passwords.txt

Sie können den Inhalt Ihrer neu erstellten Wörterbücher mit dem Befehl cat überprüfen.

cat users.txt
cat passwords.txt

In einem realen Szenario verwenden Penetration Tester riesige, öffentlich verfügbare Wörterbücher wie rockyou.txt, das Millionen kompromittierter Passwörter enthält. Für dieses Lehr-Lab sind diese kleinen, benutzerdefinierten Wörterbücher ausreichend.

Konfiguration von Hydra für HTTP-POST-Formulare

In diesem Schritt lernen Sie, wie Sie den Befehl für Hydra, einen leistungsstarken Netzwerk-Anmelde-Cracker, strukturieren. Hydra unterstützt zahlreiche Protokolle, darunter HTTP, FTP, SSH und mehr.

Um ein Web-Anmeldeformular anzugreifen, verwendet Hydra ein spezielles Modul namens http-post-form. Dieses Modul erfordert eine präzise formatierte Zeichenfolge, um zu verstehen, wie mit der Ziel-Webanwendung interagiert werden soll.

Die Syntax für das Modul http-post-form sieht wie folgt aus: "<Pfad>:<Formularparameter>:<Fehlermeldung>"

Lassen Sie uns aufschlüsseln, wie dies auf die Informationen angewendet wird, die Sie in Schritt 1 gesammelt haben. Zuerst kommt der Pfad, also die URL, an die das Formular gesendet wird; in unserem Fall ist dies /login. Als Nächstes folgen die Formularparameter, die die in der POST-Anfrage gesendeten Daten repräsentieren. Sie haben festgestellt, dass die Felder username und password lauten. Hydra verwendet spezielle Platzhalter ^USER^ und ^PASS^, um die Wörter aus Ihren Wörterbüchern einzufügen, sodass die Parameter-Zeichenfolge zu username=^USER^&password=^PASS^ wird. Schließlich ist die Fehlermeldung der Text, der auf der Seite erscheint, wenn eine Anmeldung fehlschlägt, den Sie als Invalid credentials identifiziert haben.

Wenn man diese drei Teile mit Doppelpunkten kombiniert, ergibt sich die Modul-Konfigurationszeichenfolge: "/login:username=^USER^&password=^PASS^:Invalid credentials"

Bevor Sie den eigentlichen Angriff starten, können Sie die integrierte Hilfe von Hydra für das Modul http-post-form erkunden, um dessen Fähigkeiten besser zu verstehen. Führen Sie den folgenden Befehl aus, um die modulspezifische Hilfe anzuzeigen:

hydra -U http-post-form

Dieser Befehl gibt detaillierte Anweisungen und Beispiele zur Formatierung der Modul-Zeichenfolge aus, was eine hervorragende Referenz darstellt, wenn Sie in Zukunft auf komplexere Anmeldeformulare stoßen.

Durchführung des Brute-Force-Angriffs

In diesem Schritt kombinieren Sie alles Gelernte, um den automatisierten Wörterbuchangriff gegen den lokalen Webserver auszuführen.

Sie verwenden den Befehl hydra mit mehreren Flags:

  • -L users.txt: Gibt die Datei an, die die Liste der Benutzernamen enthält.
  • -P passwords.txt: Gibt die Datei an, die die Liste der Passwörter enthält.
  • -s 8080: Gibt den Ziel-Port an.
  • 127.0.0.1: Die IP-Adresse des Zielservers.
  • http-post-form: Das zu verwendende Protokollmodul.
  • "/login:username=^USER^&password=^PASS^:Invalid credentials": Die Modul-Konfigurationszeichenfolge, die Sie im vorherigen Schritt erstellt haben.

Führen Sie den folgenden Befehl in Ihrem Terminal aus, um den Brute-Force-Angriff zu starten:

hydra -L users.txt -P passwords.txt -s 8080 127.0.0.1 http-post-form "/login:username=^USER^&password=^PASS^:Invalid credentials"

Hydra beginnt nun, jede Kombination aus Benutzernamen und Passwörtern aus Ihren Wörterbüchern zu testen. Da die Wörterbücher klein und der Server lokal ist, wird der Angriff sehr schnell abgeschlossen sein.

Sie sollten eine Ausgabe ähnlich der folgenden sehen:

Hydra v9.2 (c) 2021 by van Hauser/THC - Please do not use in military or secret service organizations, or for illegal purposes.

Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2026-10-25 10:00:00
[DATA] max 12 tasks per 1 server, overall 12 tasks, 12 login tries (l:3/p:4), ~1 tries per task
[DATA] attacking http-post-form://127.0.0.1:8080/login:username=^USER^&password=^PASS^:Invalid credentials
[8080][http-post-form] host: 127.0.0.1   login: admin   password: secret123
1 of 1 target successfully completed, 1 valid password found
Hydra (https://github.com/vanhauser-thc/thc-hydra) finished at 2026-10-25 10:00:01

Beachten Sie die Zeile, die den Erfolg anzeigt: [8080][http-post-form] host: 127.0.0.1 login: admin password: secret123. Hydra hat erfolgreich identifiziert, dass die Kombination aus dem Benutzernamen admin und dem Passwort secret123 nicht die Zeichenfolge "Invalid credentials" zurückgab, was bedeutet, dass die Anmeldung erfolgreich war.

Zusammenfassung

In diesem Lab haben Sie erfolgreich gelernt, wie man ein schwaches Web-Authentifizierungssystem analysiert und angreift. Sie begannen mit der Untersuchung eines HTTP-POST-Anmeldeformulars, um den Zielpfad, die Eingabeparameter und die Fehlermeldungen zu identifizieren. Anschließend haben Sie benutzerdefinierte Wörterbücher für einen Wörterbuchangriff erstellt. Abschließend haben Sie das Brute-Force-Tool Hydra konfiguriert und ausgeführt, um die Anmeldeversuche zu automatisieren und die gültigen Zugangsdaten erfolgreich wiederherzustellen.

Das Verständnis dieser Techniken unterstreicht, wie wichtig die Implementierung starker Sicherheitsmaßnahmen wie Kontosperren, CAPTCHAs und Multi-Faktor-Authentifizierung (MFA) ist, um Webanwendungen vor automatisierten Brute-Force-Angriffen zu schützen.