Разведка сайтов. Поиск каталогов и файлов. Dirb, Dirhunt, DirBuster

Привет, друг.

В этой статье будем прокачивать скилл пентестера. А именно будем учится проводить предварительную разведку сайта. Что-то подобное мы уже делали в статье про Maltego, но сейчас мы сделаем это более целенаправленно и углубленно. А если точнее мы научимся находить файлы и каталоги на сервере и получать из всего этого полезную информацию. Отмечу, что в качестве цели мы будем использовать виртуальную машину Matasploitable, дабы никого не тревожить без надобности.

Поиск файлов и каталогов на сервере

Для чего нужно искать файлы и каталоги? На самом деле причин огромное количество. Например находить папки полезно для понимания структуры каталогов сервера, что, в свою очередь, очень полезно на определенных этапах тестирования, а файлы, как вариант могут содержать учетные данные пользователей, конфигурацию сервера, данные о самом сервере, можно находить админки, ну а если наша цель сбор данных, то, например, данные о интересующей нас организации или людях, какие-то внутренние документы часто встречаются, тут все упирается в границы человеческого раздолбайства, а оно, как известно, безгранично. Вообщем никогда не знаешь что ты там найдешь, но иногда попадается очень неожиданная информация. Я покажу несколько способов поиска файлов, каждый из них прекрасно справляется со своей задачей, ну а что именно использовать уже зависит от конкретных задач, ну и от твоих предпочтений.

Инструкция по использованию Dirb

Dirb – это, наверное, одна из самых известных утилит подобного плана и именно она совмещает в себе простоту и эффективность, а потому мы начнем именно с неё. Она уже предустановленна в Kali Linux, потому давай взглянем на файл справки:

dirb

Из справки мы видим синтаксис запуска утилиты и какие доступны опции:

 ======================== HOTKEYS ========================
'n' -> Перейти в следующий каталог.
'q' -> Остановить сканирование. (Сохранит состояние для возобновления)
'r' -> Статистика оставшегося сканирования.
======================== OPTIONS ========================
-a <agent_string> : Укажите свой собственный USER_AGENT.
-b : Использовать путь как есть.
-c <cookie_string> : Установить куки для HTTP-запроса.
-E <certificate> : путь к клиентскому сертификату.
-f : Точная настройка обнаружения NOT_FOUND (404).
-H <header_string> : Добавить пользовательский заголовок в запрос HTTP.
-i : Использовать поиск без учета регистра.
-l : Показать заголовок "Location" если найден.
-N <nf_code> : Игнорировать ответы с этим HTTP-кодом.
-o <output_file> : Сохранить вывод на диск.
-p <proxy[:port]> : Использовать этот прокси. (Стандартный порт 1080)
-P <proxy_username:proxy_password> : Прокси аутентификация.
-r : Не искать рекурсивно.
-R : Интерактивная рекурсия. (Запрос для каждого каталога)
-S : Бесшумный режим. Не показывать проверенные слова. (Для обычных терминалов)
-t : Не вводить окончание '/' в URL.
-u <username:password> : HTTP аутентификация.
-v : Показывать страницы NOT_FOUND.
-w : Не останавливаться на сообщениях WARNING.
-X <extensions> / -x <exts_file> : Добавить каждое слово с этими расширениями.
-z <millisecs> : Добавьте задержку в миллисекундах, чтобы не вызывать лишний флуд.

Принцип работы Dirb в том, что он по словарю перебирает все возможные каталоги и имена файлов, формирует запрос к серверу и анализирует полученный ответ. Причем если говорить именно про файлы, то как видно из справки, можно к именам файлов добавлять какие-либо расширения, либо можно добавить список интересующих расширений из файла.

В комплекте с Dirb идет набор словарей под разные нужды, все они находятся в каталоге: /usr/share/dirb/wordlists/, при желании можно использовать собственные словари, просто вписывая в конце команды путь к нужному словарю

Запустим Dirb со стандартными параметрами и посмотрим на результат:

dirb http://10.0.2.4
dirb

Как видишь мы нашли каталоги и файлы которые есть на сервере, а также мы видим код ответа сервера и размер найденного файла, ну а как используем эту информацию уже зависит от наших намерений.

Теперь давай, для примера, найдём все файлы с расширением .php используя при этом, не стандартный, а другой словарь:

dirb http://10.0.2.4 /usr/share/dirb/wordlists/big.txt -X .php

В итоге получаем ответ:

dirb

Как видишь, Dirb вполне успешно, справляется со своими обязанностями. Но во всей этой истории есть одно НО, а именно – брудфорс. Это не всегда хорошо с точки зрения скрытности, и почти всегда плохо с точки зрения эффективности, потому что создавая словарь под конкретный сайт, ты практически гарантированно можешь что-то упустить, особенно если креативный админ насоздавал каталогов с очень уж непредсказуемыми названиями.

А потому мы плавно переходим к следующей очень полезной утилите.

Инструкция по использованию Dirhunt

Dirhunt – это веб-сканер заточенный под поиск каталогов без использования брудфорса, причем со своей задачей он справляется на отлично. В Kali его нет, потому установим (не забудь установить pip если он не установлен):

sudo pip3 install dirhunt

Также можно скачать самую последнюю версию: https://github.com/Nekmo/dirhunt

После установки, запустим с параметром help и посмотрим что он может.

dirhunt --help
dirhunt
Использование: dirhunt [OPTIONS] [URLS]…
Один или несколько доменов или URL. Загрузить URL-адреса из файлов, используя /full/path или
./relative/path.
Опции:
-t, --threads INTEGER          Количество потоков для использования.
-x, --exclude-flags TEXT       Исключить результаты с этими флагами. Смотрите документацию.
-i, --include-flags TEXT       Включить результаты только с этими флагами. Смотрите документацию.
-e, --interesting-extensions TEXT Файлы с интересующим расширением
-f, --interesting-files TEXT   Файлы с интересующим именем
--stdout-flags TEXT            Вернуть только стандартный поток urls
--progress-enabled / --progress-disabled
--timeout INTEGER
--max-depth INTEGER            Максимальное количество ссылок для перехода без увеличения глубины каталогов
--not-follow-subdomains        Поддомены будут игнорироваться
--exclude-sources TEXT         Исключить исходные движки. Возможные варианты: 
                               robots, virustotal, google
-p, --proxies TEXT             Установите один или несколько прокси для чередования между ними
-d, --delay FLOAT              Задержка между запросами, чтобы избежать запретов сервером
--not-allow-redirects          Не следовать редиректам 
--limit INTEGER                Максимальное количество страниц, обрабатываемых для поиска каталогов.
--version
--help                         Показать это сообщение и выйти.

Давай, для примера запустим стандартный анализ:

dirhunt http://10.0.2.4
dirhunt

В результате мы получим данные о каталогах и файлах которые находятся на сервере, но иногда этих результатов может быть довольно много, особенно если это какой-то большой ресурс, и не все они могут быть нам нужны, а потому, используя дополнительные опции мы можем подстроить работу утилиты под свои нужды.

Как видно из справки мы можем не просто исследовать интересующий нас ресурс, а, например, искать файлы только с интересующим нас расширением, или нужным нам именем.

Что касается расширений фалов, то по умолчанию Dirhunt исчет фалы с расширением php, zip, sh, asp, csv и log. Если нужны какие-то другие то нужно использовать параметр -e и через запятую перечислить нужные расширения.

Также нужно знать, что у Dirhunt есть такое понятие как интересные файлы, по умолчанию это файлы с именем: access_log, error_log, error, logs, dump. Если тебя интересуют какие-то другие имена фалов, то их можно искать используя параметр -f и через запятую перечислить нужные имена фалов.

Также есть такое важное понятие как флаги, используя которые тоже можно разными способами влиять на работу Dirhunt, а соответственно подстраивать вывод результатов под свои нужды, собственно флаги как раз и нужны для удобства изучения полученных результатов и состоят они из двух элементов, хотя на самом деле это два разных флага:
– в начале строки в виде кода состояния (соответствует коду ответа сервера)
– в конце строки в скобках

Стандартными флагами считаются:

  • generic
  • redirect
  • not_found
  • html
  • index_of
  • blank

Также иногда встречаются дополнительные флаги, такие как:

  • .nothing
  • .fake
  • wordpress

Фильтровать вывод можно по любым флагам, в любых комбинациях. При этом есть два варианта использования: “исключить” (-x) т.е. из вывода будут убраны все перечисленные в этой опции флаги и второй вариант “включить” (-i) т.е. будут выведены результаты только по интересующим нас флагам. Например:

dirhunt

В примере на скриншоте мы дали команду показать нам результаты по флагу Not Found. В целом использование флагов простая, но очень полезная функция т.к. позволяет экономить время и оставлять меньше следов на целевом сервере.

Еще один важный момент: с результатами работы Dirhunt не всегда удобно работать из терминала, особенно если они объёмные, а иногда их нужно сохранить для последующего использования, а потому стоит сохранять результаты в файл используя символ > и указав имя файла для сохранения (тут надо помнить что сохраняются только найденные каталоги), например:

dirhunt http://10.0.2.4 > test.txt

Инструкция по использованию DirBuster

Следующая утилита с которой мы познакомимся это DirBuster, она делает всё тоже самое т.е. ищет файлы и каталоги на сервере методом перебора. При этом использовать именно эту программу лично мне не нравится, в основном из-за медленной скорости работы, но знать про её существование стоит. Основное отличие в том, что DirBuster имеет графический интерфейс, а потому кому-то она может понравится больше.

После знакомства с предыдущими утилитами, вряд ли у кого-то возникнут сложности при использовании DirBuster. В поле Target вписываем адрес цели, выбираем метод перебора: либо по словарю (List based), тогда указываем словарь (словари поставляемые в комплекте лежат /usr/share/dirbuster/wordlists/) либо перебором всех символов, тогда выбираем Pure Brute Force, можно также указать интересующие расширения файлов и выбрать что именно искать: файлы, каталоги или и то и другое. Чтобы начать жмём Start, и идем заниматься своими делами потому, что ждать предстоит долго.

DirBuster

По окончании DirBuster покажем нам отчет с результатами работы.

DirBuster

Также можно посмотреть дерево каталогов, которые DirBuster смог найти.

DirBuster

Нажав кнопку Report можно сохранить отчет.

Напоследок, для полноты рассказа так сказать, отмечу есть онлайн версия сканера файлов и каталогов:
https://pentest-tools.com/website-vulnerability-scanning/discover-hidden-directories-and-files

url fuzzer

Ну а на этом пожалуй всё, ты получил +1 к скиллу пентестера, но не забывай возвращаться к нам, ведь, на самом деле, это был не сам пентест, а только подготовка к нему).

Твой Pul$e.