
Schnelles Verzeichnis-Scan- und Scraping-Tool
Dirble ist ein Tool zum Scannen von Website-Verzeichnissen für Windows und Linux. Es ist darauf ausgelegt, schnell ausgeführt und einfach zu bedienen zu sein.
Laden Sie eine der vorkompilierten Binärdateien für Linux, Windows oder Mac herunter, oder kompilieren Sie den Quellcode mit Cargo, und führen Sie ihn dann von einem Terminal aus aus. Die Standard-Wortliste, die Dirble verwendet, ist dirble_wordlist.txt im selben Verzeichnis wie die ausführbare Datei.
Es kann in BlackArch mit sudo pacman -S dirble installiert werden.
Es gibt auch ein Docker-Image, das wie folgt ausgeführt werden kann:
docker run --rm -t isona/dirble [dirble arguments]
Der Hilfetext kann mit dirble --help angezeigt werden, alternativ ist er im GitHub-Wiki zu finden: https://github.com/nccgroup/dirble/wiki/Help-Text
Ausführen gegen eine Website mit der Standard-datei dirble_wordlist.txt aus dem aktuellen Verzeichnis:
dirble [address]
Ausführen mit einer anderen Wortliste und einschließlich der Erweiterungen .php und .html:
dirble [address] -w example_wordlist.txt -x .php,.html
Mit aktiviertem Scannen von auflistbaren Verzeichnissen:
dirble [address] --scrape-listable
Bereitstellen einer Liste von Erweiterungen und einer Liste von Hosts:
dirble [address] -X wordlists/web.lst -U hostlist.txt
Bereitstellen mehrerer zu scannender Hosts über die Befehlszeile:
dirble [address] -u [address] -u [address]
Ausführen mit Threading im Gobuster-Standardstil, Deaktivieren der Rekursion und Scannen des Hauptverzeichnisses mit 10 Threads:
dirble [address] --max-threads 10 --wordlist-split 10 -r
Um auf Ihrer aktuellen Plattform zu bauen, stellen Sie sicher, dass Cargo installiert ist, und führen Sie dann cargo build --release aus. Alternativ erstellt die Ausführung von make die Binärdatei im Release-Modus (intern wird cargo build --release ausgeführt).
Für die Cross-Kompilierung für 32- und 64-Bit-Linux- und Windows-Ziele gibt es ein praktisches Makefile. make release erstellt für alle vier Ziele mit cross. Dies erfordert, dass cross und docker installiert sind (cargo install cross).
Das folgende Diagramm wurde durch Ausführen jedes Tools mit Hyperfine gegen einen Testserver mit 5 ms Latenz und 1 % Paketverlust erstellt. (Gobuster wurde aufgrund fehlender Rekursion ausgelassen).

Dirble erkennt Dateien anhand des vom Server gesendeten Antwortcodes. Das Verhalten kann grob nach Antwortcodetyp kategorisiert werden.
200: Der Pfad existiert und ist gültig301, 302: Weiterleitung; melde den Code, die Größe und den Location-Header404: nicht gefunden; standardmäßig werden diese Antworten nicht gemeldet+ [url] (CODE:[code]|SIZE:[size]) gemeldetEin Pfad wird als Verzeichnis klassifiziert, wenn eine Anfrage an [url] (ohne nachgestellten Schrägstrich) eine 301- oder 302-Weiterleitung zu [url]/ (mit nachgestelltem Schrägstrich) zurückgibt. Dies wird mit einem D-Präfix gemeldet und, falls Rekursion aktiviert ist, zur Scan-Warteschlange hinzugefügt.
Diese Methode ist nicht davon abhängig, dass das Weiterleitungsziel existiert oder erreichbar ist, daher wird eine separate Anfrage durchgeführt, um den Antwortcode und die Größe des Verzeichnisses zu ermitteln.
Auflistbare Verzeichnisse werden durch Überprüfen des Inhalts von url/ erkannt: Wenn es einen 200-Antwortcode zurückgibt und der Text entweder "parent directory", "up to" oder "directory listing for" (Groß-/Kleinschreibung nicht beachtend) enthält, handelt es sich wahrscheinlich um ein auflistbares Verzeichnis. Wenn --scrape-listable aktiviert ist, werden URLs aus der Auflistung extrahiert (unter Ignorierung von Sortierlinks oder Links außerhalb des Bereichs) und zur Scan-Warteschlange hinzugefügt, wenn sie einen nachgestellten Schrägstrich haben. Auflistbare Verzeichnisse haben im Ausgabe ein L-Präfix.
Das Threading-Verhalten von Dirble basiert auf den Konzepten von Wortlisten und Aufträgen. Ein Auftrag ist jede Aufgabe, die unabhängig von anderen Aufgaben ausgeführt werden kann, z. B. das Anfordern einer Reihe von URLs. Eine Wortliste ist eine Liste von Wörtern mit einer definierten Transformation, zum Beispiel bildet die Liste {admin, config, shop} zusammen mit der Transformation append ".php" eine einzelne Wortlisteninstanz.
Um die Leistung weiter zu verbessern, führen wir das Konzept der Wortlistenaufteilung ein. Dabei wird eine einzelne Wortlisten-Instanz (d.h. Wörter mit einer Transformation) in mehrere Aufträge aufgeteilt, die jeweils für einen Teil der Liste verantwortlich sind. Die Anzahl der verschachtelten Teile, in die jede Wortliste aufgeteilt wird, wird durch die Option --wordlist-split (Standard 3) festgelegt.
Wann immer ein Verzeichnis erkannt wird (und Rekursion aktiviert ist), werden neue Aufträge für jede aufgeteilte Wortliste (mit Transformation) erstellt und zu einer zentralen Auftragswarteschlange hinzugefügt.
Die maximale Anzahl gleichzeitiger Aufgaben wird durch den Parameter --max-threads definiert, und Dirble startet Aufträge, sobald sie zur Warteschlange hinzugefügt werden, bis zu diesem Limit. Sobald ein Auftrag abgeschlossen ist (d.h. eine aufgeteilte Wortliste erschöpft ist), nimmt Dirble den nächsten Auftrag aus der Warteschlange und startet ihn.
Veröffentlicht unter GPL v3.0, siehe LICENSE für weitere Informationen.