Разведка сайтов. Поиск каталогов и файлов. Dirb, Dirhunt, DirBuster
Привет, друг. В этой статье будем прокачивать скилл пентестера. А именно узнаем что такое предварительная разведка сайтов и как её делать. Что-то подобное мы уже делали в статье про Maltego, но сейчас мы сделаем это более целенаправленно и углубленно. А если точнее мы научимся находить файлы и каталоги на сервере и получать из всего этого полезную информацию. Отмечу, что в качестве цели мы будем использовать виртуальную машину Matasploitable, дабы никого не тревожить без надобности.
Поиск файлов и каталогов на сервере
Для чего нужно искать файлы и каталоги? И при чём тут разведка сайтов? На самом деле причин огромное количество. Например, находить папки полезно для понимания структуры каталогов сервера. Что, в свою очередь, очень полезно на определенных этапах тестирования. А файлы, как вариант, могут содержать учетные данные пользователей, конфигурацию сервера, данные о самом сервере. Ещё можно находить админки. Ну а если наша цель сбор данных, то, например, часто встречаются данные о интересующей нас организации или людях, какие-то внутренние документы. Тут все упирается в границы человеческого раздолбайства, а оно, как известно, безгранично. Вообщем никогда не знаешь что ты там найдешь, но иногда попадается очень неожиданная информация. Я покажу несколько способов поиска файлов, каждый из них прекрасно справляется со своей задачей, ну а что именно использовать уже зависит от конкретных задач, ну и от твоих предпочтений.
Разведка сайтов с Dirb. Инструкция по Dirb
Dirb — это, наверное, одна из самых известных утилит подобного плана и именно она совмещает в себе простоту и эффективность. А потому мы начнем именно с неё. Она уже предустановленна в Kali Linux, потому давай взглянем на файл справки:
Из справки мы видим синтаксис запуска утилиты и какие доступны опции:
======================== 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
Как видишь мы нашли каталоги и файлы которые есть на сервере, а также мы видим код ответа сервера и размер найденного файла. Ну а как мы используем эту информацию уже зависит от наших намерений.
Теперь давай, для примера, найдём все файлы с расширением .php используя при этом, не стандартный, а другой словарь:
dirb http://10.0.2.4 /usr/share/dirb/wordlists/big.txt -X .php
В итоге получаем ответ:
Как видишь, Dirb вполне успешно, справляется со своими обязанностями. Но во всей этой истории есть одно НО, а именно — брудфорс. Это не всегда хорошо с точки зрения скрытности, и почти всегда плохо с точки зрения эффективности. Потому что создавая словарь под конкретный сайт, ты практически гарантированно можешь что-то упустить, особенно если креативный админ насоздавал каталогов с очень уж непредсказуемыми названиями.
А потому мы плавно переходим к следующей очень полезной утилите.
Разведка сайтов с Dirhunt. Инструкция по Dirhunt
Dirhunt — это веб-сканер заточенный под поиск каталогов без использования брудфорса. Причем со своей задачей он справляется на отлично. В Kali его нет, потому установим (не забудь установить pip, если он не установлен):
sudo pip3 install dirhunt
Также можно скачать самую последнюю версию: https://github.com/Nekmo/dirhunt
После установки, запустим с параметром help и посмотрим что он может.
dirhunt --help
Использование: 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 исчет фалы с расширением php, zip, sh, asp, csv и log. Если нужны какие-то другие то нужно использовать параметр -e и через запятую перечислить нужные расширения.
Также нужно знать, что у Dirhunt есть такое понятие как интересные файлы. По умолчанию это файлы с именем: access_log, error_log, error, logs, dump. Если тебя интересуют какие-то другие имена фалов, то их можно искать используя параметр -f и через запятую перечислить нужные имена фалов.
Флаги в Dirhunt
Также есть такое важное понятие как флаги. Используя которые, тоже можно разными способами влиять на работу Dirhunt. А соответственно подстраивать вывод результатов под свои нужды. Собственно флаги как раз и нужны для удобства изучения полученных результатов и состоят они из двух элементов. Хотя на самом деле это два разных флага:
— в начале строки в виде кода состояния (соответствует коду ответа сервера)
— в конце строки в скобках
Стандартными флагами считаются:
- generic
- redirect
- not_found
- html
- index_of
- blank
Также иногда встречаются дополнительные флаги, такие как:
- .nothing
- .fake
- wordpress
Фильтровать вывод можно по любым флагам, в любых комбинациях. При этом есть два варианта использования: «исключить» (-x) т.е. из вывода будут убраны все перечисленные в этой опции флаги и второй вариант «включить» (-i) т.е. будут выведены результаты только по интересующим нас флагам. Например:
В примере на скриншоте мы дали команду показать нам результаты по флагу Not Found. В целом использование флагов простая, но очень полезная функция т.к. позволяет экономить время и оставлять меньше следов на целевом сервере.
Еще один важный момент. С результатами работы Dirhunt не всегда удобно работать из терминала, особенно если они объёмные. А иногда их нужно сохранить для последующего использования, а потому стоит сохранять результаты в файл используя символ > и указав имя файла для сохранения (тут надо помнить что сохраняются только найденные каталоги), например:
dirhunt http://10.0.2.4 > test.txt
Разведка сайтов с DirBuster. Инструкция по DirBuster
Следующая утилита, помогающая проводить разведку сайтов, это DirBuster. Она делает всё тоже самое т.е. ищет файлы и каталоги на сервере методом перебора. При этом использовать именно эту программу лично мне не нравится, в основном из-за медленной скорости работы. Но знать про её существование стоит. Основное отличие в том, что DirBuster имеет графический интерфейс, а потому кому-то она может понравится больше.
После знакомства с предыдущими утилитами, вряд ли у кого-то возникнут сложности при использовании DirBuster. В поле Target вписываем адрес цели. Выбираем метод перебора: либо по словарю (List based), тогда указываем словарь (словари поставляемые в комплекте лежат /usr/share/dirbuster/wordlists/), либо перебором всех символов, тогда выбираем Pure Brute Force. Можно также указать интересующие расширения файлов и выбрать что именно искать: файлы, каталоги или и то и другое. Чтобы начать, жмём Start, и идем заниматься своими делами потому, что ждать предстоит долго.
По окончании DirBuster покажем нам отчет с результатами работы.
Также можно посмотреть дерево каталогов, которые DirBuster смог найти.
Нажав кнопку Report можно сохранить отчет.
Напоследок, для полноты рассказа так сказать, отмечу что есть онлайн версия сканера файлов и каталогов:
https://pentest-tools.com/website-vulnerability-scanning/discover-hidden-directories-and-files
Ну а на этом пожалуй всё. Ты получил +1 к скиллу пентестера, но не забывай возвращаться к нам, ведь, на самом деле, это был не сам пентест, а только подготовка к нему).
Твой Pulse.