В этой статье будем прокачивать скилл пентестера. А именно будем учится проводить предварительную разведку сайта. Мы научимся находить файлы и каталоги на сервере и получать из всего этого полезную информацию. Отмечу, что в качестве цели мы будем использовать виртуальную машину Matasploitable, дабы никого не тревожить без надобности. Хочу сказать, что есть онлайн версия сканера
Поиск файлов и каталогов на сервере.
Для чего нужно искать файлы и каталоги? На самом деле причин огромное количество. Например находить папки полезно для понимания структуры каталогов сервера, что, в свою очередь, очень полезно на определенных этапах тестирования, а файлы, как вариант могут содержать учетные данные пользователей, конфигурацию сервера, данные о самом сервере, можно находить админки, ну а если наша цель сбор данных, то, например, данные о интересующей нас организации или людях, какие-то внутренние документы часто встречаются, тут все упирается в границы человеческого раздолбайства, а оно, как известно, безгранично. Вообщем никогда не знаешь что ты там найдешь, но иногда попадается очень неожиданная информация. Я покажу несколько способов поиска файлов, каждый из них прекрасно справляется со своей задачей, ну а что именно использовать уже зависит от конкретных задач, ну и от твоих предпочтений.
Инструкция по использованию Dirb.
Dirb – это, наверное, одна из самых известных утилит подобного плана и именно она совмещает в себе простоту и эффективность, а потому мы начнем именно с неё. Она уже предустановленна в Kali Linux, потому давай взглянем на файл справки:
Из справки мы видим синтаксис запуска утилиты и какие доступны опции:
В комплекте с Dirb идет набор словарей под разные нужды, все они находятся в каталоге: /usr/share/dirb/wordlists/, при желании можно использовать собственные словари, просто вписывая в конце команды путь к нужному словарю
Запустим Dirb со стандартными параметрами и посмотрим на результат:
Как видишь мы нашли каталоги и файлы которые есть на сервере, а также мы видим код ответа сервера и размер найденного файла, ну а как используем эту информацию уже зависит от наших намерений.
Теперь давай, для примера, найдём все файлы с расширением .php используя при этом, не стандартный, а другой словарь:
Как видишь, Dirb вполне успешно, справляется со своими обязанностями. Но во всей этой истории есть одно НО, а именно – брудфорс. Это не всегда хорошо с точки зрения скрытности, и почти всегда плохо с точки зрения эффективности, потому что создавая словарь под конкретный сайт, ты практически гарантированно можешь что-то упустить, особенно если креативный админ насоздавал каталогов с очень уж непредсказуемыми названиями.
А потому мы плавно переходим к следующей очень полезной утилите.
Инструкция по использованию Dirhunt
Dirhunt – это веб-сканер заточенный под поиск каталогов без использования брудфорса, причем со своей задачей он справляется на отлично. В Kali его нет, потому установим (не забудь установить pip если он не установлен):
После установки, запустим с параметром help и посмотрим что он может.
Использование: dirhunt [OPTIONS] [URLS]…
Один или несколько доменов или URL. Загрузить URL-адреса из файлов, используя /full/path или
./relative/path.
Опции:
В результате мы получим данные о каталогах и файлах которые находятся на сервере, но иногда этих результатов может быть довольно много, особенно если это какой-то большой ресурс, и не все они могут быть нам нужны, а потому, используя дополнительные опции мы можем подстроить работу утилиты под свои нужды.
Как видно из справки мы можем не просто исследовать интересующий нас ресурс, а, например, искать файлы только с интересующим нас расширением, или нужным нам именем.
Что касается расширений фалов, то по умолчанию Dirhunt исчет фалы с расширением php, zip, sh, asp, csv и log. Если нужны какие-то другие то нужно использовать параметр -e и через запятую перечислить нужные расширения.
Также нужно знать, что у Dirhunt есть такое понятие как интересные файлы, по умолчанию это файлы с именем: access_log, error_log, error, logs, dump. Если тебя интересуют какие-то другие имена фалов, то их можно искать используя параметр -f и через запятую перечислить нужные имена фалов.
Также есть такое важное понятие как флаги, используя которые тоже можно разными способами влиять на работу Dirhunt, а соответственно подстраивать вывод результатов под свои нужды, собственно флаги как раз и нужны для удобства изучения полученных результатов и состоят они из двух элементов, хотя на самом деле это два разных флага:
– в начале строки в виде кода состояния (соответствует коду ответа сервера)
– в конце строки в скобках
Стандартными флагами считаются:
В примере на скриншоте мы дали команду показать нам результаты по флагу Not Found. В целом использование флагов простая, но очень полезная функция т.к. позволяет экономить время и оставлять меньше следов на целевом сервере.
Еще один важный момент: с результатами работы Dirhunt не всегда удобно работать из терминала, особенно если они объёмные, а иногда их нужно сохранить для последующего использования, а потому стоит сохранять результаты в файл используя символ > и указав имя файла для сохранения (тут надо помнить что сохраняются только найденные каталоги), например:
Следующая утилита с которой мы познакомимся это DirBuster, она делает всё тоже самое т.е. ищет файлы и каталоги на сервере методом перебора. При этом использовать именно эту программу лично мне не нравится, в основном из-за медленной скорости работы, но знать про её существование стоит. Основное отличие в том, что DirBuster имеет графический интерфейс, а потому кому-то она может понравится больше.
После знакомства с предыдущими утилитами, вряд ли у кого-то возникнут сложности при использовании DirBuster. В поле Target вписываем адрес цели, выбираем метод перебора: либо по словарю (List based), тогда указываем словарь (словари поставляемые в комплекте лежат /usr/share/dirbuster/wordlists/) либо перебором всех символов, тогда выбираем Pure Brute Force, можно также указать интересующие расширения файлов и выбрать что именно искать: файлы, каталоги или и то и другое. Чтобы начать жмём Start, и идем заниматься своими делами потому, что ждать предстоит долго.
По окончании DirBuster покажем нам отчет с результатами работы.
Также можно посмотреть дерево каталогов, которые DirBuster смог найти.
Нажав кнопку Report можно сохранить отчет.
Поиск файлов и каталогов на сервере.
Для чего нужно искать файлы и каталоги? На самом деле причин огромное количество. Например находить папки полезно для понимания структуры каталогов сервера, что, в свою очередь, очень полезно на определенных этапах тестирования, а файлы, как вариант могут содержать учетные данные пользователей, конфигурацию сервера, данные о самом сервере, можно находить админки, ну а если наша цель сбор данных, то, например, данные о интересующей нас организации или людях, какие-то внутренние документы часто встречаются, тут все упирается в границы человеческого раздолбайства, а оно, как известно, безгранично. Вообщем никогда не знаешь что ты там найдешь, но иногда попадается очень неожиданная информация. Я покажу несколько способов поиска файлов, каждый из них прекрасно справляется со своей задачей, ну а что именно использовать уже зависит от конкретных задач, ну и от твоих предпочтений.
Инструкция по использованию 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[ort]> : Использовать этот прокси. (Стандартный порт 1080)
-P <proxy_usernameroxy_password> : Прокси аутентификация.
-r : Не искать рекурсивно.
-R : Интерактивная рекурсия. (Запрос для каждого каталога)
-S : Бесшумный режим. Не показывать проверенные слова. (Для обычных терминалов)
-t : Не вводить окончание '/' в URL.
-u <usernameassword> : HTTP аутентификация.
-v : Показывать страницы NOT_FOUND.
-w : Не останавливаться на сообщениях WARNING.
-X <extensions> / -x <exts_file> : Добавить каждое слово с этими расширениями.
-z <millisecs> : Добавьте задержку в миллисекундах, чтобы не вызывать лишний флуд.
В комплекте с Dirb идет набор словарей под разные нужды, все они находятся в каталоге: /usr/share/dirb/wordlists/, при желании можно использовать собственные словари, просто вписывая в конце команды путь к нужному словарю
Запустим Dirb со стандартными параметрами и посмотрим на результат:
dirb
Как видишь мы нашли каталоги и файлы которые есть на сервере, а также мы видим код ответа сервера и размер найденного файла, ну а как используем эту информацию уже зависит от наших намерений.
Теперь давай, для примера, найдём все файлы с расширением .php используя при этом, не стандартный, а другой словарь:
В итоге получаем ответ:dirb /usr/share/dirb/wordlists/big.txt -X .php
Как видишь, Dirb вполне успешно, справляется со своими обязанностями. Но во всей этой истории есть одно НО, а именно – брудфорс. Это не всегда хорошо с точки зрения скрытности, и почти всегда плохо с точки зрения эффективности, потому что создавая словарь под конкретный сайт, ты практически гарантированно можешь что-то упустить, особенно если креативный админ насоздавал каталогов с очень уж непредсказуемыми названиями.
А потому мы плавно переходим к следующей очень полезной утилите.
Инструкция по использованию Dirhunt
Dirhunt – это веб-сканер заточенный под поиск каталогов без использования брудфорса, причем со своей задачей он справляется на отлично. В Kali его нет, потому установим (не забудь установить pip если он не установлен):
Также можно скачать самую последнюю версию:sudo pip3 install 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
В результате мы получим данные о каталогах и файлах которые находятся на сервере, но иногда этих результатов может быть довольно много, особенно если это какой-то большой ресурс, и не все они могут быть нам нужны, а потому, используя дополнительные опции мы можем подстроить работу утилиты под свои нужды.
Как видно из справки мы можем не просто исследовать интересующий нас ресурс, а, например, искать файлы только с интересующим нас расширением, или нужным нам именем.
Что касается расширений фалов, то по умолчанию 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
В примере на скриншоте мы дали команду показать нам результаты по флагу Not Found. В целом использование флагов простая, но очень полезная функция т.к. позволяет экономить время и оставлять меньше следов на целевом сервере.
Еще один важный момент: с результатами работы Dirhunt не всегда удобно работать из терминала, особенно если они объёмные, а иногда их нужно сохранить для последующего использования, а потому стоит сохранять результаты в файл используя символ > и указав имя файла для сохранения (тут надо помнить что сохраняются только найденные каталоги), например:
Инструкция по использованию DirBusterdirhunt > test.txt
Следующая утилита с которой мы познакомимся это DirBuster, она делает всё тоже самое т.е. ищет файлы и каталоги на сервере методом перебора. При этом использовать именно эту программу лично мне не нравится, в основном из-за медленной скорости работы, но знать про её существование стоит. Основное отличие в том, что DirBuster имеет графический интерфейс, а потому кому-то она может понравится больше.
После знакомства с предыдущими утилитами, вряд ли у кого-то возникнут сложности при использовании DirBuster. В поле Target вписываем адрес цели, выбираем метод перебора: либо по словарю (List based), тогда указываем словарь (словари поставляемые в комплекте лежат /usr/share/dirbuster/wordlists/) либо перебором всех символов, тогда выбираем Pure Brute Force, можно также указать интересующие расширения файлов и выбрать что именно искать: файлы, каталоги или и то и другое. Чтобы начать жмём Start, и идем заниматься своими делами потому, что ждать предстоит долго.
По окончании DirBuster покажем нам отчет с результатами работы.
Также можно посмотреть дерево каталогов, которые DirBuster смог найти.
Нажав кнопку Report можно сохранить отчет.