Перевод: Разведка для Bug Bounty Hunting
@Ent_TranslateIB
Вспомните те дни, когда вы смотрели на погоду или в приложении погоды и готовились к погодным условиям в этот день. Допустим, вы увидели в приложении погоды, что сегодня будет дождь, поэтому, выходя из дома, вы возьмете с собой зонтик или дождевик, чтобы не пострадать от дождя.
Точно так же в bug bounty hunting или тестировании веб-уязвимостей. Вам нужно посмотреть, изучить целевой сайт и подготовиться. Предположим, сайт, который вы атакуете, сделан на php, тогда вам нужно искать CVE старой версии php. Нет смысла искать CVE для nodejs на php-сайте. Итак, у вас может возникнуть вопрос, как узнать, какой язык, технологию, поддомен использует сайт?
Что ж, именно об этом мы и поговорим в этой статье. Мы можем узнать о техническом стеке, сети, поддомене, языках, используемых целевым сайтом, проведя разведку.
Введение в разведку
Разведка - это процесс/методология сбора как можно больше информации о целевом сайте. Разведка - это первый шаг, который вы должны сделать перед атакой на любой сайт. Разведка отделяет хороших хакеров от великих. Если вы посмотрите статьи/интервью известных багхантеров, они в основном упоминают, что только благодаря разведке им удалось найти множество ошибок на сайте. Разведка помогает значительно увеличить поверхность атаки. Предположим, вы задали домен сайта для атаки,
https://example.com/
Вы видите, что у вас есть только один основной домен для атаки, поэтому ваша поверхность атаки мала. Но что если мы сможем перечислить больше поддоменов этого домена и если мы сможем это сделать, наша поверхность атаки будет больше. Вот почему разведка имеет решающее значение.
Как проводить разведку
У каждого свой способ проведения разведки. Здесь я собираюсь показать вам, как великие хакеры, такие как hakuluke, tomnomnom, jason haddix, проводят свою разведку.
Сканирование портов
Первое, что нужно сделать, когда вам дают сайт для тестирования, это посмотреть, открыты ли какие-нибудь сочные порты или нет. Для этого необходимо выполнить сканирование портов с помощью nmap (рекомендуется).
$ nmap -sC -sV targetwebsite.com
Здесь targetwebsite.com - это сайт, на который мы нацеливаемся. Флаг `-sC` предназначен для использования стандартного скрипта nmap, а `-sV` - для зондирования открытых портов с целью определения информации о службе/версии. Чтобы узнать больше о nmap, посетите сайт https://nmap.org/.
Если вы обнаружите, что открыт какой-либо сочный порт, которого не должно быть, то вы можете поискать версию CVE этой службы.
Перечисление поддоменов
Перечисление поддоменов - это процесс поиска поддоменов целевого домена. Для перечисления поддоменов используются следующие популярные инструменты:
Инструмент Amass, разработанный OWASP, может быть единственным инструментом, который вам нужен для перечисления поддоменов. Кроме перечисления поддоменов, у него есть много других вариантов использования, но для нас основным является перечисление поддоменов.
$ amass enum -d targetwebsite.com
Вы также можете установить другие флаги, например ` -active` для активной разведки, при которой существует большая вероятность блокировки вашего ip-адреса, поскольку ваша система будет посылать пакеты на целевой сервер. По умолчанию в amass используется флаг ` -passive`, при котором вероятность блокировки или отправки пакетов на целевой сервер меньше или вовсе отсутствует.
$ amass enum -active targetwebsite.com
$ amass enum -passive targetwebsite.com
Если вы хотите сохранить его в файл, то существует много подходов, но я в основном сохраняю эти поддомены в файл с помощью команды tee. Таким образом, приведенный выше код будет выглядеть следующим образом:
$ amass enum targetwebsite.com | tee -a subdomains.txt
В приведенной выше команде все, что мы делаем, это передаем вывод amass в файл subdomains.txt . Флаг ` -a` добавит вывод amass в файл subdomains.txt, а не перезапишет его.
Проверьте, находятся ли поддомены в сети или нет
После выполнения перечисления поддоменов вы получите сотни и тысячи поддоменов, это будет суматошно для одного человека, чтобы пройти через все поддомены и проверить, доступны ли они или нет. Поэтому, чтобы автоматизировать этот процесс, есть несколько отличных инструментов, таких как:
EyeWitness делает снимок экрана всех поддоменов и сохраняет его в папке. Проще говоря, он просмотрит каждый поддомен и сделает его скриншот.
$ ./EyeWitness.py -f subdomains.txt - web
EyeWitness будет запрашивать домен или файл, состоящий из доменов. Здесь мы передаем ему файл subdomains.txt, который мы получили из вышеприведенного перечисления поддоменов. `- web` флаг означает, что мы говорим Eyewitness, что поддомены должны быть обработаны как веб-сайт.
Инструмент Aquatone похож на инструмент eyewitness, который дает вам визуальное представление о доменах, делая их скриншот.
$ cat subdomains.txt | aquatone -out ~/aquatone/targetwebsite.com
Здесь мы передаем файл поддоменов в aquatone, чтобы он сделал скриншот и сохранил результат в ~/aquatone/targetwebite.com.
Перебор каталогов/конечных точек
Следующим шагом разведки является поиск всех конечных точек домена и поддомена, скрытых файлов и скрытых каталогов. Для этого существует множество инструментов, некоторые из них перечислены ниже.
Gobuster - это быстрый инструмент для перебора каталогов/файлов, написанный на языке Go. Он перебирает URL сайта с помощью словаря, и если хоть какое-то слово из списка совпадает, то вы нашли каталог/файл целевого сайта.
$ gobuster dir -u https://targetwebsite.com -w common-folder.txt
В приведенной выше команде мы указываем gobuster выполнить операцию поиска по каталогам, где `-u` - флаг для URL, `-w` - флаг для словаря, а common-folder.txt - это словарь, состоящий из общих каталогов для проверки на сайте.
DirSearch - это следующий популярный инструмент для перебора файлов/каталогов, написанный на python. Я предпочитаю DirSearch для перебора скрытых файлов и файлов сайта, на который вы нацелены.
$ python3 dirsearch.py -e php,html -u https://targetsite.com -w /path/to/wordlist
Здесь вам необходимо иметь установленный python (версия 3), флаг `-e` указывает dirsearch искать только файлы с расширением php,html, `-u` - URL и `-w` - путь к словарю. Если вы не предоставите какой-либо словарь dirsearch, он будет использовать свой словарь по умолчанию.
Zap - это графический интерфейс, который можно использовать для обнаружения конечных точек сайта и многого другого. Главный недостаток zap - он медленнее по сравнению с вышеперечисленными инструментами. Но тем, кто только начинает заниматься веб-безопасностью, будет проще использовать графический интерфейс, такой как ZAP.
Инструменты, которые я использовал в этой статье, и многое другое
Для сканирования портов
Для перечисления поддоменов
Для брутфорса файлов и каталогов
Для создания скриншотов URL-адресов
Словари
Для поиска информации о сертификате домена
Для снятия отпечатков технического стека
Примечание ☠️
В этой статье я не упомянул об обнаружении технического стека и google dorking. Для обнаружения технического стека вы можете просто использовать такие расширения, как Wappalyzer и builtWith. Что касается google dorking, я планирую написать следующую статью об этом, потому что google dorking сам по себе требует отдельной статьи.
Также обратите внимание, что у каждого есть своя методология. Так что это не какой-то последовательный процесс. Но эти шаги вдохновлены великими багхантерами.
Если хотите со мной связаться 👋
LinkedIn : https://www.linkedin.com/in/manish-basnet-200526213/
Github : https://github.com/maheshbasnet089
Оригинал статьи - здесь.
Поддержите автора хлопками на Medium.
Перевод статьи был выполнен проектом перевод энтузиаста:
- 📚 @Ent_TranslateIB - Телеграмм канал с тематикой информационной безопасности
- 🔥 @Ent_Translate - Инстаграм проекта