Ergebnisse nach Antwortlänge im Gobuster Fuzz-Modus ausschließen

Beginner
Jetzt üben

Einleitung

Gobuster ist ein leistungsstarkes Werkzeug, das für das Brute-Forcing von Verzeichnissen und Dateien, das Brute-Forcing von DNS-Subdomains und die Enumeration von S3-Buckets verwendet wird. Bei Fuzzing-Operationen, insbesondere gegen Webserver, ist es üblich, eine große Anzahl von "verrauschten" Ergebnissen zu erhalten. Dazu gehören oft Antworten für nicht existierende Pfade, die einen konsistenten HTTP-Statuscode (z. B. 404 Not Found) und, entscheidend, eine konsistente Antwortkörperlänge zurückgeben. Dies kann die Ausgabe überladen und es schwierig machen, legitime Funde zu identifizieren.

In diesem Lab lernen Sie, wie Sie Gobusters --exclude-length Flag im Fuzz-Modus nutzen können. Diese Funktion ermöglicht es Ihnen, eine oder mehrere Antwortkörperlängen anzugeben, die ignoriert werden sollen, wodurch diese verrauschten Ergebnisse effektiv herausgefiltert werden. Am Ende dieses Labs werden Sie in der Lage sein, gezieltere und effizientere Fuzzing-Scans durchzuführen und sich nur auf die relevanten Antworten zu konzentrieren.

Ausführen eines Fuzz-Scans und Identifizieren einer gemeinsamen Antwortgröße für ungültige Anfragen

In diesem Schritt führen Sie einen initialen Gobuster Fuzz-Scan gegen einen lokalen Webserver durch. Dies hilft Ihnen, die typische Ausgabe zu beobachten, insbesondere die Antwortlängen für nicht existierende Pfade, die oft "verrauschte" Ergebnisse darstellen.

Stellen Sie zunächst sicher, dass der Webserver läuft. Sie können überprüfen, ob der Prozess aktiv ist:

ps aux | grep "python3 -m http.server 8000" | grep -v grep

Sie sollten eine Ausgabe ähnlich dieser sehen, die anzeigt, dass der Server läuft:

labex       1234  0.0  0.0  12345  6789 ?        Sl   HH:MM   0:00 python3 -m http.server 8000 --directory /tmp/web_root

Führen Sie nun einen Gobuster Fuzz-Scan mit der im Setup erstellten Wortliste durch. Wir zielen auf http://127.0.0.1:8000.

gobuster fuzz -u http://127.0.0.1:8000/FUZZ -w /tmp/wordlist.txt

Beobachten Sie die Ausgabe. Sie werden mehrere Einträge mit demselben Statuscode (z. B. 404) und, was noch wichtiger ist, derselben Länge bemerken. Diese konsistente Länge für ungültige Anfragen ist das, was wir zum Ausschließen verwenden werden. Zum Beispiel sollten nonexistentpath123 und anothernonexistentpath dieselbe Länge aufweisen.

/index.html           (Status: 200) [Size: 19]
/admin                (Status: 404) [Size: 19]
/login                (Status: 404) [Size: 19]
/config               (Status: 404) [Size: 19]
/robots.txt           (Status: 404) [Size: 19]
/nonexistentpath123   (Status: 404) [Size: 19]
/anothernonexistentpath (Status: 404) [Size: 19]

Identifizieren Sie aus der Ausgabe die gemeinsame Antwortgröße für die 404 (Not Found) Fehler. In diesem Beispiel ist es 19. Dies ist die Länge, die wir im nächsten Schritt verwenden werden, um das Rauschen herauszufiltern.

Erneutes Ausführen des Scans mit dem Flag --exclude-length und der identifizierten Größe

In diesem Schritt führen Sie den Gobuster-Scan erneut aus, diesmal jedoch mit dem Flag --exclude-length, um die verrauschten Ergebnisse basierend auf der im vorherigen Schritt identifizierten Antwortlänge herauszufiltern.

Erinnern Sie sich an die gemeinsame Antwortlänge für die 404-Fehler aus dem vorherigen Schritt. In unserem Beispiel war dies 19. Fügen Sie nun --exclude-length 19 zu Ihrem Gobuster-Befehl hinzu:

gobuster fuzz -u http://127.0.0.1:8000/FUZZ -w /tmp/wordlist.txt --exclude-length 19

Führen Sie den Befehl aus und beobachten Sie die Ausgabe.

Beobachten, wie die verrauschten Ergebnisse herausgefiltert werden

Nachdem Sie den Befehl im vorherigen Schritt ausgeführt haben, sollten Sie sofort einen deutlichen Unterschied in der Ausgabe feststellen. Die Einträge, die der ausgeschlossenen Länge entsprechen (z. B. 404-Antworten mit einer Länge von 19), sollten nicht mehr erscheinen.

Vergleichen Sie die Ausgabe dieses Scans mit der Ausgabe aus Schritt 1.

Erwartete Ausgabe:

/index.html           (Status: 200) [Size: 19]

Sie sollten nur den Eintrag /index.html sehen, da dies der einzige ist, der einen 200 OK-Status mit einer anderen Inhaltslänge zurückgegeben hat (obwohl in diesem speziellen Setup die 404-Seite ebenfalls eine Länge von 19 hat, was eine Einschränkung unseres einfachen Servers ist. In einem realen Szenario haben 404-Seiten oft eine andere Länge als gültige Seiten). Die wichtigste Erkenntnis ist, dass jede Antwort mit der angegebenen Länge nun herausgefiltert wird.

Dies zeigt, wie effektiv das Flag --exclude-length Rauschen reduzieren kann, sodass Sie sich auf potenziell interessante Ergebnisse konzentrieren können.

Verfeinern des Ausschlusses mit einer durch Kommas getrennten Liste von Längen

Manchmal kann ein Webserver unterschiedliche Antwortlängen für verschiedene Arten von "nicht gefundenen" oder "ungültigen" Anfragen zurückgeben. Gobuster ermöglicht es Ihnen, mehrere Längen auszuschließen, indem Sie eine durch Kommas getrennte Liste für das Flag --exclude-length angeben.

Um dies zu demonstrieren, stellen wir uns vor, unser Server könnte 404-Seiten mit den Längen 19 und 50 zurückgeben. Wir simulieren dies, indem wir einen weiteren "gültigen" Pfad hinzufügen, der eine andere Länge zurückgibt.

Zuerst fügen wir eine neue Datei mit einer anderen Größe zu unserem Web-Root hinzu:

echo "This is a test page with a different length." > /tmp/web_root/testpage.html

Nun fügen wir testpage.html zu unserer Wortliste hinzu:

echo "testpage.html" >> /tmp/wordlist.txt

Führen Sie den Scan erneut aus, aber diesmal gehen wir davon aus, dass wir sowohl 19 als auch 39 (die Länge von testpage.html ist 39) ausschließen möchten.

gobuster fuzz -u http://127.0.0.1:8000/FUZZ -w /tmp/wordlist.txt --exclude-length 19,39

Beobachten Sie die Ausgabe. Sie sollten sehen, dass sowohl die ursprünglichen 404-Antworten (Länge 19) als auch die testpage.html-Antwort (Länge 39) nun ausgeschlossen sind.

Analyse der bereinigten Ausgabe auf interessante Ergebnisse

In diesem letzten Schritt analysieren Sie die bereinigte Ausgabe, die durch die Verwendung des Flags --exclude-length erzeugt wurde. Ziel ist es zu verstehen, wie diese Filterung dabei hilft, bei einer Fuzzing-Operation wirklich interessante Ergebnisse zu identifizieren.

Nachdem Sie den Befehl im vorherigen Schritt ausgeführt haben, sollte die Ausgabe noch prägnanter sein. Wenn es andere Pfade in Ihrer Wortliste gab, die einen Statuscode und eine Länge zurückgaben, die nicht auf Ihrer Ausschlussliste standen, würden diese nun hervorstechen.

Wenn Sie beispielsweise einen Pfad wie /secret_admin_panel hätten, der einen 200 OK mit einer eindeutigen Länge zurückgibt, wäre dieser in der gefilterten Ausgabe klar sichtbar, während er bei einem ungefilterten Scan inmitten Hunderter von 404ern untergegangen wäre.

In unserem aktuellen Setup, bei dem 19 und 39 ausgeschlossen sind und index.html eine Länge von 19 hat, sollte die Ausgabe leer sein, da nun alle Einträge ausgeschlossen sind. Dies demonstriert die Leistungsfähigkeit präziser Filterung.

Diese Technik ist bei realen Penetrationstests und Bug-Bounty-Jagden von unschätzbarem Wert, wo große Wortlisten überwältigende Mengen an irrelevanten Daten erzeugen können. Durch das systematische Ausschließen gängiger "Rausch"-Längen können Sie den manuellen Aufwand für die Überprüfung von Scan-Ergebnissen erheblich reduzieren und Ihre Chancen erhöhen, versteckte Verzeichnisse oder Dateien zu entdecken.

Um die Umgebung zu bereinigen, können Sie den Python-Webserver stoppen:

kill $(cat /tmp/web_server_pid)

Damit ist das Lab abgeschlossen. Sie haben erfolgreich gelernt, wie Sie das --exclude-length-Flag von Gobuster verwenden, um Ihre Fuzzing-Scans zu verfeinern.

Zusammenfassung

In diesem Lab haben Sie praktische Erfahrungen mit der Verwendung des --exclude-length-Flags von Gobuster im Fuzz-Modus gesammelt. Sie haben mit einem anfänglichen Scan begonnen, um gängige Antwortlängen für ungültige Anfragen zu identifizieren, die oft Rauschen darstellen. Anschließend haben Sie gelernt, wie Sie das --exclude-length-Flag mit einer einzelnen Länge verwenden, um diese irrelevanten Ergebnisse herauszufiltern, was zu einer saubereren Ausgabe führt. Schließlich haben Sie untersucht, wie Sie den Ausschluss durch Angabe einer durch Kommas getrennten Liste von Längen weiter verfeinern können, was die Flexibilität bei der Handhabung verschiedener Arten von verrauschten Antworten demonstriert.

Durch die Beherrschung dieser Technik können Sie die Effizienz und Effektivität Ihrer Webanwendungs-Fuzzing-Operationen erheblich verbessern, sodass Sie sich auf wirklich interessante Ergebnisse konzentrieren und Ihren Prozess zur Entdeckung von Schwachstellen beschleunigen können.