
Outil rapide de scan et d'extraction de répertoires
Dirble est un outil de scan de répertoires web pour Windows et Linux. Il est conçu pour être rapide à exécuter et facile à utiliser.
Téléchargez l'un des binaires précompilés pour Linux, Windows ou Mac, ou compilez le code source avec Cargo, puis exécutez-le depuis un terminal. La liste de mots par défaut utilisée par Dirble est dirble_wordlist.txt dans le même répertoire que l'exécutable.
Il peut être installé dans BlackArch en utilisant sudo pacman -S dirble
Il existe aussi une image Docker, qui peut être exécutée comme suit :
docker run --rm -t isona/dirble [dirble arguments]
Le texte d'aide peut être affiché avec dirble --help, ou bien il se trouve sur le wiki GitHub : https://github.com/nccgroup/dirble/wiki/Help-Text
Lancer contre un site web avec la liste de mots par défaut dirble_wordlist.txt depuis le répertoire courant :
dirble [address]
Lancer avec une liste de mots différente et incluant les extensions .php et .html :
dirble [address] -w example_wordlist.txt -x .php,.html
Avec le scraping des répertoires listables activé :
dirble [address] --scrape-listable
En fournissant une liste d'extensions et une liste d'hôtes :
dirble [address] -X wordlists/web.lst -U hostlist.txt
En fournissant plusieurs hôtes à scanner via la ligne de commande :
dirble [address] -u [address] -u [address]
Lancer avec le threading dans le style par défaut de Gobuster, en désactivant la récursivité et avec 10 threads scannant le répertoire principal :
dirble [address] --max-threads 10 --wordlist-split 10 -r
Pour compiler sur votre plateforme actuelle, assurez-vous que cargo est installé, puis exécutez cargo build --release. Sinon, lancer make construira le binaire en mode release (en exécutant en interne cargo build --release).
Pour cross-compiler pour les cibles Linux et Windows 32 et 64 bits, il y a un makefile pratique. make release construira pour les quatre cibles en utilisant cross. Cela dépend de l'installation de cross et de docker (cargo install cross).
Le graphique suivant a été généré en exécutant chaque outil avec Hyperfine contre un serveur de test avec une latence de 5 ms et 1 % de perte de paquets. (Gobuster a été omis en raison de l'absence de récursivité).

Dirble détecte les fichiers en fonction du code de réponse envoyé par le serveur. Le comportement peut être grossièrement catégorisé par type de code de réponse.
200 : le chemin existe et est valide301, 302 : redirection ; signaler le code, la taille et l'en-tête Location404 : non trouvé ; par défaut, ces réponses ne sont pas signalées+ [url] (CODE:[code]|SIZE:[size])Un chemin est classifié comme répertoire si une requête vers [url] (sans slash final) renvoie une redirection 301 ou 302 vers [url]/ (avec un slash final). Cela est signalé avec un préfixe D et si la récursivité est activée, il sera ajouté à la file d'attente de scan.
Cette méthode ne dépend pas de l'existence ou de l'accessibilité de la cible de redirection, donc une requête séparée sera faite pour déterminer le code de réponse et la taille du répertoire.
Les répertoires listables sont détectés en inspectant le contenu de url/ : s'il renvoie un code de réponse 200 et que le corps contient soit "parent directory", soit "up to " ou "directory listing for" (insensible à la casse), alors il est probablement un répertoire listable. Si --scrape-listable est activée, les URLs sont extraites du listing (en ignorant les liens de tri ou les liens hors de portée) et ajoutées à la file d'attente de scan si elles ont un slash final. Les répertoires listables ont un préfixe L dans la sortie.
Le comportement de multithreading de Dirble est basé sur les concepts de wordlists et de jobs. Un job est toute tâche pouvant être exécutée indépendamment d'autres tâches, par exemple la requête d'une série d'URLs. Une wordlist est une liste de mots avec une transformation définie, par exemple la liste {admin, config, shop} avec la transformation append ".php" forme une instance de wordlist.
Pour améliorer encore les performances, nous introduisons le concept de wordlist splitting. C'est le processus par lequel une instance de wordlist (c.-à-d. des mots avec une transformation) est divisée en plusieurs jobs, chacun responsable d'une partie de la liste. Le nombre de parties entrelacées dans lesquelles chaque wordlist est divisée est défini par l'option --wordlist-split (par défaut 3).
Chaque fois qu'un répertoire est détecté (et que la récursivité est activée), de nouveaux jobs sont créés pour chaque wordlist divisée (avec transformation) et ajoutés à une file d'attente de jobs centrale.
Le nombre maximal de tâches simultanées est défini par le paramètre --max-threads, et Dirble démarre les jobs au fur et à mesure qu'ils sont ajoutés à la file, jusqu'à cette limite. Chaque fois qu'un job se termine (c.-à-d. qu'une wordlist divisée est épuisée), Dirble prend le job suivant de la file et le démarre.
Publié sous licence GPL v3.0, voir LICENSE pour plus d'informations.