
Ferramenta rápida de varredura e raspagem de diretórios
Dirble é uma ferramenta de varredura de diretórios de sites para Windows e Linux. Ela foi projetada para ser rápida de executar e fácil de usar.
Baixe um dos binários pré-compilados para Linux, Windows ou Mac, ou compile o código-fonte usando Cargo e execute-o a partir de um terminal. A wordlist padrão que o Dirble usa é dirble_wordlist.txt no mesmo diretório do executável.
Pode ser instalado no BlackArch usando sudo pacman -S dirble
Há também uma imagem docker, que pode ser executada como:
docker run --rm -t isona/dirble [dirble arguments]
O texto de ajuda pode ser exibido usando dirble --help, alternativamente pode ser encontrado na wiki do github: https://github.com/nccgroup/dirble/wiki/Help-Text
Execute contra um site usando o dirble_wordlist.txt padrão do diretório atual:
dirble [address]
Execute com uma wordlist diferente e incluindo extensões .php e .html:
dirble [address] -w example_wordlist.txt -x .php,.html
Com a varredura de diretórios listáveis ativada:
dirble [address] --scrape-listable
Fornecendo uma lista de extensões e uma lista de hosts:
dirble [address] -X wordlists/web.lst -U hostlist.txt
Fornecendo vários hosts para escanear via linha de comando:
dirble [address] -u [address] -u [address]
Executando com threading no estilo padrão do Gobuster, desativando a recursão e tendo 10 threads escaneando o diretório principal:
dirble [address] --max-threads 10 --wordlist-split 10 -r
Para compilar em sua plataforma atual, certifique-se de que o cargo está instalado e então execute cargo build --release. Alternativamente, executar make irá compilar o binário em modo release (executando internamente cargo build --release).
Para compilar de forma cruzada para alvos Linux e Windows de 32 e 64 bits, há um makefile útil. make release irá compilar para todos os quatro alvos usando cross. Isso depende de ter cross e docker instalados (cargo install cross).
O gráfico a seguir foi gerado executando cada ferramenta com Hyperfine contra um servidor de teste com latência de 5ms e 1% de perda de pacotes. (Gobuster foi omitido devido à falta de recursão).

O Dirble detecta arquivos com base no código de resposta enviado pelo servidor. O comportamento pode ser categorizado livremente por tipo de código de resposta.
200: o caminho existe e é válido301, 302: redirecionamento; relata o código, tamanho e cabeçalho Location404: não encontrado; por padrão, essas respostas não são relatadas+ [url] (CODE:[code]|SIZE:[size])Um caminho é classificado como um diretório se uma requisição para [url] (sem barra no final) retornar um redirecionamento 301 ou 302 para [url]/ (com barra no final). Isso é relatado com um prefixo D e, se a recursão estiver ativada, será adicionado à fila de varredura. Este método não depende da existência ou acessibilidade do alvo de redirecionamento, então uma requisição separada será feita para determinar o código de resposta e o tamanho do diretório.
Diretórios listáveis são detectados inspecionando o conteúdo de url/: se retornar um código de resposta 200 e o corpo contiver "parent directory", "up to " ou "directory listing for" (maiúsculas/minúsculas ignoradas), então é provável que seja um diretório listável. Se --scrape-listable estiver ativado, as URLs são extraídas da listagem (ignorando links de ordenação ou links fora do escopo) e adicionadas à fila de varredura se tiverem uma barra no final. Diretórios listáveis têm um prefixo L na saída.
O comportamento de threading do Dirble é baseado nos conceitos de wordlists e jobs. Um job é qualquer tarefa que pode ser executada independentemente de outras tarefas, por exemplo, solicitar uma série de URLs. Uma wordlist é uma lista de palavras com uma transformação definida, por exemplo, a lista {admin, config, shop} juntamente com a transformação append ".php" forma uma única instância de wordlist.
Para melhorar ainda mais o desempenho, introduzimos o conceito de divisão de wordlist. Este é o processo pelo qual uma única instância de wordlist (ou seja, palavras com uma transformação) é dividida em vários jobs, cada um responsável por uma porção da lista. O número de porções intercaladas em que cada wordlist é dividida é definido pela opção --wordlist-split (padrão 3).
Sempre que um diretório é detectado (e a recursão está ativada), novos jobs são criados para cada wordlist dividida (com transformação) e adicionados a uma fila de jobs central.
O número máximo de tarefas concorrentes é definido pelo parâmetro --max-threads, e o Dirble iniciará os jobs à medida que forem adicionados à fila, até esse limite. Sempre que um job é concluído (ou seja, uma wordlist dividida é esgotada), o Dirble pegará o próximo job da fila e o iniciará.
Lançado sob GPL v3.0, veja LICENSE para mais informações