
Strumento di scansione e scraping rapido delle directory
Dirble è uno strumento di scanning di directory web per Windows e Linux. È progettato per essere veloce da eseguire e facile da usare.
Scarica uno dei binari precompilati per Linux, Windows o Mac, o compila il sorgente usando Cargo, quindi eseguilo da un terminale. La wordlist predefinita che Dirble utilizza è dirble_wordlist.txt nella stessa directory dell'eseguibile.
Può essere installato in BlackArch usando sudo pacman -S dirble
Esiste anche un'immagine docker, che può essere eseguita come:
docker run --rm -t isona/dirble [dirble arguments]
Il testo di aiuto può essere visualizzato usando dirble --help, in alternativa si trova sulla wiki di github: https://github.com/nccgroup/dirble/wiki/Help-Text
Esegui contro un sito web usando la dirble_wordlist.txt predefinita dalla directory corrente:
dirble [address]
Esegui con una wordlist diversa e includendo le estensioni .php e .html:
dirble [address] -w example_wordlist.txt -x .php,.html
Con lo scraping delle directory listabili abilitato:
dirble [address] --scrape-listable
Fornendo un elenco di estensioni e un elenco di host:
dirble [address] -X wordlists/web.lst -U hostlist.txt
Fornendo più host da scansionare tramite riga di comando:
dirble [address] -u [address] -u [address]
Esecuzione con threading nello stile predefinito di Gobuster, disabilitando la ricorsione e con 10 thread che scansionano la directory principale:
dirble [address] --max-threads 10 --wordlist-split 10 -r
Per compilare sulla tua piattaforma corrente, assicurati che cargo sia installato e poi esegui cargo build --release. In alternativa, eseguire make compilerà il binario in modalità release (eseguendo internamente cargo build --release).
Per cross-compilare per target Linux e Windows a 32 e 64 bit, è disponibile un pratico makefile. make release compilerà per tutti e quattro i target usando cross. Questo dipende dall'avere cross e docker installati (cargo install cross).
Il seguente grafico è stato generato eseguendo ogni strumento con Hyperfine contro un server di test con latenza di 5 ms e 1% di perdita di pacchetti. (Gobuster è stato omesso a causa della mancanza di ricorsione).

Dirble rileva i file in base al codice di risposta inviato dal server. Il comportamento può essere suddiviso approssimativamente per tipo di codice di risposta.
200: il percorso esiste ed è valido301, 302: reindirizzamento; segnala il codice, la dimensione e l'intestazione Location404: non trovato; per impostazione predefinita queste risposte non vengono segnalate+ [url] (CODE:[code]|SIZE:[size])Un percorso viene classificato come directory se una richiesta a [url] (senza slash finale) restituisce un reindirizzamento 301 o 302 a [url]/ (con slash finale). Questo viene segnalato con un prefisso D e, se la ricorsione è abilitata, verrà aggiunto alla coda di scansione. Questo metodo non dipende dal fatto che la destinazione del reindirizzamento esista o sia accessibile, quindi verrà effettuata una richiesta separata per determinare il codice di risposta e la dimensione della directory.
Le directory listabili vengono rilevate esaminando il contenuto di url/: se restituisce un codice di risposta 200 e il corpo contiene "parent directory", "up to " o "directory listing for" (senza distinzione tra maiuscole e minuscole), allora è probabile che sia una directory listabile. Se --scrape-listable è abilitato, gli URL vengono estratti dall'elenco (ignorando i link di ordinamento o i link fuori ambito) e aggiunti alla coda di scansione se hanno uno slash finale. Le directory listabili hanno un prefisso L nell'output.
Il comportamento di threading di Dirble si basa sui concetti di wordlist e job. Un job è qualsiasi attività che può essere eseguita indipendentemente da altre attività, ad esempio richiedere una serie di URL. Una wordlist è un elenco di parole con una trasformazione definita, ad esempio l'elenco {admin, config, shop} insieme alla trasformazione append ".php" forma una singola istanza di wordlist.
Per migliorare ulteriormente le prestazioni, introduciamo il concetto di suddivisione della wordlist. Questo è il processo mediante il quale una singola istanza di wordlist (cioè parole con una trasformazione) viene suddivisa in più job, ciascuno responsabile di una porzione dell'elenco. Il numero di porzioni interlacciate in cui ogni wordlist viene suddivisa è definito dall'opzione --wordlist-split (predefinito 3).
Ogni volta che viene rilevata una directory (e la ricorsione è abilitata), vengono creati nuovi job per ogni wordlist suddivisa (con trasformazione) e aggiunti a una coda di job centrale.
Il numero massimo di attività concorrenti è definito dal parametro --max-threads e Dirble avvierà i job man mano che vengono aggiunti alla coda, fino a questo limite. Ogni volta che un job viene completato (cioè una wordlist suddivisa è esaurita), Dirble prenderà il job successivo dalla coda e lo avvierà.
Rilasciato sotto GPL v3.0, vedere LICENSE per maggiori informazioni