
Быстрый инструмент для сканирования и скрапинга директорий
Dirble — это инструмент для сканирования каталогов веб-сайтов для Windows и Linux. Он создан для быстрой работы и простоты использования.
Загрузите один из предварительно скомпилированных бинарных файлов для Linux, Windows или Mac, или скомпилируйте исходный код с помощью Cargo, затем запустите его из терминала. По умолчанию Dirble использует файл dirble_wordlist.txt, находящийся в той же директории, что и исполняемый файл.
Его можно установить в BlackArch с помощью sudo pacman -S dirble
Также существует Docker-образ, который можно запустить так:
docker run --rm -t isona/dirble [dirble arguments]
Текст справки можно отобразить с помощью dirble --help, альтернативно его можно найти на GitHub wiki: https://github.com/nccgroup/dirble/wiki/Help-Text
Запуск против веб-сайта с использованием стандартного dirble_wordlist.txt из текущей директории:
dirble [address]
Запуск с другим списком слов и включением расширений .php и .html:
dirble [address] -w example_wordlist.txt -x .php,.html
С включенным сбором содержимого листинговых каталогов:
dirble [address] --scrape-listable
Предоставление списка расширений и списка хостов:
dirble [address] -X wordlists/web.lst -U hostlist.txt
Указание нескольких хостов для сканирования через командную строку:
dirble [address] -u [address] -u [address]
Запуск с многопоточностью в стиле Gobuster по умолчанию, отключением рекурсии и 10 потоками, сканирующими основную директорию:
dirble [address] --max-threads 10 --wordlist-split 10 -r
Чтобы собрать на вашей текущей платформе, убедитесь, что cargo установлен, затем выполните cargo build --release. Альтернативно, выполнение make соберет бинарный файл в режиме release (внутренне выполняя cargo build --release).
Для кросс-компиляции под 32- и 64-битные цели Linux и Windows есть удобный makefile. make release соберет для всех четырех целей с помощью cross. Это зависит от наличия установленных cross и docker (cargo install cross).
Следующий график был создан при запуске каждого инструмента с помощью Hyperfine на тестовом сервере с задержкой 5 мс и потерей пакетов 1%. (Gobuster был опущен из-за отсутствия рекурсии).

Dirble обнаруживает файлы на основе кода ответа, отправленного сервером. Поведение можно условно разделить по типу кода ответа.
200: путь существует и действителен301, 302: перенаправление; сообщается код, размер и заголовок Location404: не найдено; по умолчанию эти ответы не сообщаются+ [url] (CODE:[code]|SIZE:[size])Путь классифицируется как каталог, если запрос к [url] (без завершающего слеша) возвращает перенаправление 301 или 302 на [url]/ (с завершающим слешем). Это сообщается с префиксом D, и если рекурсия включена, будет добавлено в очередь сканирования. Этот метод не зависит от существования или доступности цели перенаправления, поэтому будет выполнен отдельный запрос для определения кода ответа и размера каталога.
Листинговые каталоги обнаруживаются путем проверки содержимого url/: если он возвращает код ответа 200, а тело содержит "parent directory", "up to " или "directory listing for" (без учета регистра), то это, скорее всего, листинговый каталог. Если включен --scrape-listable, из листинга извлекаются URL (игнорируя ссылки сортировки или выходящие за пределы области) и добавляются в очередь сканирования, если они имеют завершающий слеш. Листинговые каталоги имеют префикс L в выводе.
Поведение многопоточности Dirble основано на концепциях списков слов и задач. Задача — это любая задача, которая может быть выполнена независимо от других, например, запрос серии URL. Список слов — это список слов с определенным преобразованием, например, список {admin, config, shop} вместе с преобразованием append ".php" образует один экземпляр списка слов.
Для дальнейшего повышения производительности мы вводим концепцию разделения списка слов. Это процесс, при котором один экземпляр списка слов (т.е. слова с преобразованием) разбивается на несколько задач, каждая из которых отвечает за часть списка. Количество перемежающихся частей, на которые разбивается каждый список слов, определяется опцией --wordlist-split (по умолчанию 3).
Всякий раз, когда обнаруживается каталог (и рекурсия включена), для каждого разделенного списка слов (с преобразованием) создаются новые задачи и добавляются в центральную очередь задач.
Максимальное количество одновременных задач определяется параметром --max-threads, и Dirble будет запускать задачи по мере их добавления в очередь, до этого лимита. Когда задача завершается (т.е. разделенный список слов исчерпан), Dirble берет следующую задачу из очереди и запускает ее.
Выпущено под лицензией GPL v3.0, см. LICENSE для получения дополнительной информации.