Einleitung
In diesem Lab erkunden Sie die flexiblen Fuzzing-Fähigkeiten von Gobuster, einem beliebten Tool für das Brute-Forcing von Verzeichnissen und Dateien. Während Gobuster hauptsächlich für seinen dir-Modus bekannt ist, bietet sein fuzz-Modus eine leistungsstarke Möglichkeit, versteckte Webinhalte zu entdecken, indem Payloads in verschiedene Teile einer URL injiziert werden. Sie lernen, wie Sie URLs mit dem speziellen Schlüsselwort FUZZ erstellen, benutzerdefinierte Wortlisten bereitstellen, Fuzzing-Scans ausführen und die Ergebnisse interpretieren, um potenzielle Schwachstellen oder versteckte Ressourcen auf einem Webserver zu identifizieren. Diese praktische Erfahrung wird Ihre Fähigkeiten in der Web-Enumeration verbessern, die für Penetrationstests und Sicherheitsbewertungen unerlässlich sind.
Zweck des fuzz-Modus und des FUZZ-Schlüsselworts verstehen
In diesem Schritt lernen Sie den fuzz-Modus in Gobuster und die Bedeutung des FUZZ-Schlüsselworts kennen. Im Gegensatz zum dir-Modus, der hauptsächlich Verzeichnis- und Dateinamen per Brute-Force durchsucht, ermöglicht der fuzz-Modus das Einfügen von Payloads an beliebigen Stellen innerhalb einer URL. Das FUZZ-Schlüsselwort fungiert als Platzhalter, an dem Gobuster jeden Eintrag aus Ihrer bereitgestellten Wortliste einfügt. Diese Flexibilität ermöglicht es Ihnen, verschiedene Teile einer URL, wie Pfadsegmente, Dateierweiterungen oder sogar Query-Parameter, auf versteckte Inhalte oder Schwachstellen zu testen.
Wenn Sie beispielsweise versteckte Verzeichnisse unter http://localhost:8000/ entdecken möchten, würden Sie eine URL wie http://localhost:8000/FUZZ verwenden. Gobuster ersetzt dann FUZZ durch jedes Wort aus Ihrer Wortliste.
Lassen Sie uns überprüfen, ob Gobuster in Ihrer Umgebung installiert und zugänglich ist.
gobuster version
Sie sollten eine Ausgabe ähnlich der folgenden sehen, die die Gobuster-Version anzeigt.
Gobuster v3.x.x
Eine URL mit dem FUZZ-Schlüsselwort im Pfad konstruieren
In diesem Schritt konstruieren Sie eine Ziel-URL, die das FUZZ-Schlüsselwort enthält. Dieses Schlüsselwort teilt Gobuster mit, wo die Einträge aus der Wortliste während des Fuzzing-Prozesses eingefügt werden sollen. Für dieses Lab werden wir einen einfachen HTTP-Server anvisieren, der lokal auf Port 8000 läuft. Wir werden das FUZZ-Schlüsselwort im Pfadsegment platzieren, um versteckte Verzeichnisse oder Dateien zu entdecken.
Die grundlegende Syntax für gobuster fuzz lautet gobuster fuzz -u <URL_mit_FUZZ> -w <wortliste>.
Lassen Sie uns die Basis-URL für unseren Zielserver definieren. Der Server läuft auf http://localhost:8000. Wir möchten versteckte Pfade direkt unterhalb des Root-Verzeichnisses entdecken, daher wird unsere gefuzzte URL http://localhost:8000/FUZZ lauten.
Sie können versuchen, auf die Basis-URL zuzugreifen, um zu bestätigen, dass der Server läuft:
curl http://localhost:8000/
Sie sollten den Inhalt von index.html sehen:
Hello from index.html
Nun bereiten wir die Befehlsstruktur vor. Wir werden ihn noch nicht ausführen, aber wir stellen sicher, dass die URL korrekt gebildet ist.
echo "Die gefuzzte URL wird sein: http://localhost:8000/FUZZ"
Dieser Befehl gibt einfach die URL-Zeichenkette aus und bestätigt Ihr Verständnis, wie das FUZZ-Schlüsselwort platziert wird.
Das -w Flag zur Bereitstellung einer Payload-Wortliste verwenden
In diesem Schritt lernen Sie, wie Sie eine Wortliste für Gobuster während des Fuzzing-Prozesses angeben. Das -w-Flag wird verwendet, um den Pfad zu Ihrer Wortlistendatei anzugeben. Jede Zeile in dieser Datei wird verwendet, um das FUZZ-Schlüsselwort in Ihrer Ziel-URL zu ersetzen.
Für dieses Lab wurde während der Einrichtungsphase eine einfache Wortliste namens fuzz_wordlist.txt in Ihrem ~/project-Verzeichnis erstellt. Diese Wortliste enthält einige Einträge, die vorhandenen und nicht vorhandenen Pfaden auf unserem Dummy-Webserver entsprechen.
Lassen Sie uns den Inhalt der Wortliste untersuchen, um zu verstehen, welche Payloads verwendet werden:
cat ~/project/fuzz_wordlist.txt
Sie sollten den folgenden Inhalt sehen:
secret_dir
admin_panel
test_page.html
nonexistent
Nun kennen Sie die Payloads, die Gobuster ausprobieren wird. Wenn wir den Scan ausführen, wird Gobuster versuchen, auf URLs wie http://localhost:8000/secret_dir, http://localhost:8000/admin_panel usw. zuzugreifen.
Den gobuster fuzz Scan ausführen
In diesem Schritt werden Sie das gesamte bisherige Wissen kombinieren, um den gobuster fuzz-Scan auszuführen. Sie werden die in Schritt 2 konstruierte gefuzzte URL und die in Schritt 3 angegebene Wortliste verwenden.
Der vollständige Befehl lautet:
gobuster fuzz -u http://localhost:8000/FUZZ -w ~/project/fuzz_wordlist.txt
Lassen Sie uns den Befehl aufschlüsseln:
gobuster fuzz: Ruft Gobuster im Fuzzing-Modus auf.-u http://localhost:8000/FUZZ: Gibt die Ziel-URL mit demFUZZ-Platzhalter an.-w ~/project/fuzz_wordlist.txt: Stellt den Pfad zur Wortliste mit den Payloads bereit.
Führen Sie nun den Befehl in Ihrem Terminal aus:
gobuster fuzz -u http://localhost:8000/FUZZ -w ~/project/fuzz_wordlist.txt
Sie werden sehen, wie Gobuster die Wortliste durchläuft und die Statuscodes für jeden Versuch meldet.
===============================================================
Gobuster v3.x.x
===============================================================
[+] Url: http://localhost:8000/FUZZ
[+] Wordlist: /home/labex/project/fuzz_wordlist.txt
[+] Threads: 10
[+] Timeout: 10s
===============================================================
2024/01/01 12:00:00 Starting gobuster in fuzz mode
===============================================================
http://localhost:8000/secret_dir (Status: 200)
http://localhost:8000/admin_panel (Status: 200)
http://localhost:8000/test_page.html (Status: 200)
http://localhost:8000/nonexistent (Status: 404)
===============================================================
2024/01/01 12:00:00 Finished
===============================================================
Beachten Sie (Status: 200) für secret_dir, admin_panel und test_page.html, was darauf hinweist, dass diese Pfade existieren und eine erfolgreiche Antwort zurückgegeben haben. Der (Status: 404) für nonexistent zeigt an, dass dieser Pfad wie erwartet nicht gefunden wurde.
Analyse der Ergebnisse des flexiblen Fuzzings
In diesem letzten Schritt analysieren Sie die Ausgabe des gobuster fuzz-Scans, um zu verstehen, was entdeckt wurde. Das Hauptziel des Fuzzings ist die Identifizierung gültiger Antworten (typischerweise HTTP-Statuscodes wie 200 OK, 301 Moved Permanently usw.), die auf die Existenz einer Ressource hinweisen.
Aus der Ausgabe des vorherigen Schritts sollten Sie Zeilen wie diese beobachtet haben:
http://localhost:8000/secret_dir (Status: 200)
http://localhost:8000/admin_panel (Status: 200)
http://localhost:8000/test_page.html (Status: 200)
http://localhost:8000/nonexistent (Status: 404)
http://localhost:8000/secret_dir (Status: 200): Dies zeigt an, dass ein Verzeichnis namenssecret_dirunter dem Web-Root existiert. Sie können versuchen, darauf mitcurlzuzugreifen:curl http://localhost:8000/secret_dir/hidden_file.txtSie sollten sehen:
Secret contenthttp://localhost:8000/admin_panel (Status: 200): Dies deutet darauf hin, dass einadmin_panel-Verzeichnis existiert.curl http://localhost:8000/admin_panel/login.phpSie sollten sehen:
Admin loginhttp://localhost:8000/test_page.html (Status: 200): Dies zeigt an, dass eine Datei namenstest_page.htmlexistiert.curl http://localhost:8000/test_page.htmlSie sollten sehen:
Test pagehttp://localhost:8000/nonexistent (Status: 404): Dies ist ein "Not Found"-Status, der für einen nicht existierenden Pfad erwartet wird. Dies hilft zu bestätigen, dass Gobuster nicht vorhandene Ressourcen korrekt identifiziert.
Durch die Analyse der Statuscodes können Sie versteckte Verzeichnisse, Dateien oder andere Ressourcen effektiv identifizieren, die möglicherweise nicht direkt von der Hauptwebsite verlinkt sind. Dies ist ein entscheidender Schritt bei der Aufklärung während Sicherheitsbewertungen.
Zusammenfassung
In diesem Lab haben Sie erfolgreich gelernt, wie Sie den flexiblen Fuzzing-Modus in Gobuster verwenden. Sie haben die Rolle des FUZZ-Schlüsselworts als Platzhalter für das Einfügen von Payloads aus einer Wortliste verstanden. Sie haben eine gefuzzte URL konstruiert, eine benutzerdefinierte Wortliste bereitgestellt, einen gobuster fuzz-Scan ausgeführt und die Ergebnisse analysiert, um vorhandene Web-Ressourcen zu identifizieren. Diese praktische Erfahrung hat die Leistungsfähigkeit und Vielseitigkeit der Fuzzing-Fähigkeiten von Gobuster für die Web-Enumeration demonstriert, eine grundlegende Fähigkeit in der Cybersicherheit und im Penetration Testing. Sie können diese Techniken nun anwenden, um versteckte Inhalte auf verschiedenen Webanwendungen zu entdecken.
