Любой взлом начинается со сбора информации о цели. Чем быстрее и качественнее вы соберете информацию — тем больше шанс найти крутую багу, зарепортить ее первым и получить вознаграждение. В отличие от пентеста, в багбаунти участвуют сотни тысяч людей одновременно, а сервисы, которые у всех на виду, вдоль и поперек исследованы, и обнаружить там что‑нибудь крайне сложно. В этой статье я расскажу об инструментах, которые помогут тебе провести разведку и собрать максимально много информации о цели.
Как искать поддомены
Каждый поддомен — это потенциальная задача, например собственно что их разведка — раз из первых шагов при разведке. В больших компаниях, вроде IBM или же Microsoft, используются десятки тыс. поддоменов, и все их нужно поддерживать в актуальном состоянии, своевременно ставить обновления софта и фиксить баги. Как показывает практика, о некоторых поддоменах просто забывают или же ставят заглушки, но целый контент при данном остается доступен. Критические уязвимости, вроде RCE, SSTI, SSRF или же XXE, почаще всего обнаруживают на поддоменах. Чем больше ты их найдешь, что обширнее станет поверхность атаки. Существует довольно много инструментов для их поиска, поэтому я рассмотрю только те, которые прошли проверку и показали себя эффективными на разных программах bug bounty.
Начнем с варианта для бездеятельных. Утилита Chaos собирает информацию об абсолютно всех публичных программах, находящихся в известных багбаунти‑платформах, вроде Bugcrowd, HackerOne, Intigrity.
Chaos
В то время когда пишется эта статья на сайте 513 программ. Информация постоянно обновляется, поэтому вы всегда будете видеть самую свежую информацию.
Поиск и сортировка по программам очень удобны. Например, вы можете просматривать только те программы, которые предлагают вознаграждение за обнаруженные уязвимости или которые имеют много поддоменов, или отслеживать новые программы. В отличие от большинства исследовательских сайтов, это бесплатно.
chaos -d uber.com -silent
restaurants.uber.com
testcdn.uber.com
approvalservice.uber.com
zoom-logs.uber.com
eastwood.uber.com
meh.uber.com
webview.uber.com
kiosk-api.uber.com
…
recon.dev
Такой же сайт, который поможет собрать много полезной информации о поддоменах. В отличие от Chaos, recon.dev бесплатно показывает только первые 20 результатов поиска. За остальное придется заплатить, но цена полученного набора данных невелика.
recon.dev
subfinder
Subfinder считается наследником sublist3r — утилита также собирает информацию о поддоменах, используя множество пассивных онлайн-источников, таких как Baidu, Bing, Censys. Некоторые источники требуют, чтобы вы добавляли ключи API в файл конфигурации ($ HOME / .config / subfinder / config.yaml).
Subfinder имеет практичную модульную архитектуру и написан на Go, поэтому работает очень быстро.
Subfinder
СЛОВАРИ
Перед тем как начинать разведку, стоит запастись пачкой добротных словарей. От выбора хорошего словаря зависит многое: чем больше будет собрано скрытых параметров, поддоменов, директорий и файлов, тем выше шанс обнаружить какую‑нибудь брешь в безопасности.
В Интернете можно найти множество словарей, но не все из них эффективны. После некоторого вознаграждения за ошибки и одновременного пробования разных словарей я выбрал несколько очень интересных вариантов, которые помогли мне не один раз и помогли мне найти места, которых другие охотники за ошибками еще не достигли.
fuzz.txt
Я всегда начинаю с файла fuzz.txt, который содержит список потенциально опасных файлов и каталогов. Словарь пополняется новыми словами почти каждый месяц. Он быстро прокручивается, поэтому вы можете быстро сортировать находки и одновременно просматривать другие, более объемные списки. Словарь содержит 4842 слова, но опыт показывает, что он идеально подходит для начального изучения веб-приложения.
SecLists
SecLists — это полный набор словарей, которые будут очень полезны не только для выявления ошибок, но и для тестирования на проникновение. Словари включают имена пользователей, пароли, параметры URL, поддомены, веб-оболочки и многое другое. Я настоятельно рекомендую вам потратить некоторое время на подробное изучение содержимого коллекции.
Страница проекта
Assetnote Wordlists
Еще один классный сборник словарей для изучения всевозможного контента и поддоменов. Словари создаются 28 числа каждого месяца с помощью действия commonspeak2 и GitHub Actions.
Assetnote
Помимо автоматически сгенерированных коллекций, на сайте также есть словари, созданные вручную с помощью Google BigQuery.
Самостоятельная генерация
Часто вам приходится создавать собственные словари. Написание сценария, конечно, не составит труда, но зачем изобретать велосипед?
Есть много инструментов для создания словарей, но среди всех я использую Pydictor. Tulza предлагает множество функций, которые помогут вам создать идеальный словарь практически для любой ситуации. Кроме того, Pydictor может сравнивать файлы, подсчитывать частоту слов и объединять несколько словарей в один.
Возьмем пример. Предположим, мы знаем, что пароль представляет собой модифицированную версию слова Password и может содержать:
-
-
-
-
-
-
- вместо
а
знак@
; - вместо
о
0
; - в конце от одного до трех чисел.
- вместо
-
-
-
-
-
Генерируется такой словарь с помощью следующей команды:
./pydictor.py --conf '[P[a,@]{1,1}<none>ssw[o,0]{1,1}<none>rd[0-9]{1,3}<none>' --output /home/kali/Desktop/pydict
Здесь <
означает, что утилите не нужно делать никаких дополнительных действий с подстановочной комбинацией.
В конце Pydictor показывает краткое описание процесса генерации. Не очень важная информация, но озабоченность разработчика чувствуется.
СКАНЕРЫ ПОРТОВ
Прогулка по всем портам в поисках интересных вещей — приятное занятие на багбаунти. Еще лучше, если вы найдете приложение, которое еще никто не исследовал! В то же время не забывайте, что даже кажущиеся безобидными порты могут скрыть то, чего вы не совсем ожидаете. Например, я нашел HTTP-сервис на 22-м порту: его даже нельзя ввести в браузере, только через curl или wget!
Если объем не особенно велик, то Nmap хорошо подходит для скана. Nmap определенно не нуждается в представлении. Но что, если хостов много? Хотя Nmap — мощный инструмент, у него есть существенный недостаток — он медленный. Альтернативой, но не конкурентом, является masscan: он быстрый, но не такой функциональный, как Nmap. Чтобы сканирование портов было действительно быстрым и эффективным, вы можете использовать оба сканера вместе.
MassMap
С MassMap вы можете сканировать большое количество IP-адресов со скоростью masscan и тщательностью Nmap. MassMap написан на Bash, поэтому вам не нужно ничего компилировать, чтобы использовать его.
Перед запуском сканирования скрипт проверяет наличие всего, что требуется для выполнения работы, и автоматически устанавливает его, если что-то отсутствует.
Алгоритм работает просто: сначала с помощью masscan все 65 535 TCP-портов сканируются на предмет списка переданных IP-адресов. Затем Nmap просматривает обнаруженные открытые порты (в том числе с помощью скриптов), отображая для каждого из них уже расширенную информацию. Результат можно сохранить в читаемом формате.
MassMap
Результаты
Поскольку скрипт на самом деле является оболочкой для сканеров, вы можете изменять любые параметры, добавлять свои собственные инструменты, как правило, создавать и улучшать их по своему усмотрению.
dnmasscan
Dnmasscan — это еще один скрипт на Bash для автоматического резолвинга доменных имен и последующего их сканирования с помощью masscan. Поскольку masscan не принимает доменные имена, скрипт создает файл, в котором записаны IP-адреса доменов.
Вывод dnmasscan
ФАЙЛЫ, ДИРЕКТОРИИ, ПАРАМЕТРЫ
Поддомены и IP-адреса собраны — пора приступить к их изучению. Здесь в основном используются всевозможные брутеры, которые анализируют ответы, чтобы понять, существует ли желаемый путь или параметр.
Gobuster
Gobuster — один из самых мощных и известных инструментов для поиска файлов и каталогов на веб-сайтах. Однако, если бы все его возможности были ограничены грубым путем и сравнением кода ответа, вы могли бы самостоятельно запустить то же самое на Python примерно за пять минут, а gobuster также может перебирать поддомены, виртуальные имена хостов на целевом веб-сервере и открывать репозитории Amazon. S3.
Gobuster
GoSpider
GoSpider -универсальный интернет-паучище), также написанный на Go. Утилита может анализировать robots.txt и sitemap.xml, искать поддомены в ответе и получать ссылки с Internet Wayback Machine. GoSpider также поддерживает параллельное отслеживание нескольких сайтов, что значительно ускоряет процесс сбора информации.
GoSpider
Поисковики
Свой первый баг, за который мне заплатили, я обнаружил благодаря поисковикам. Бывает, что ни gobuster, ни GoSpider не дают никаких результатов. Но если инструменты ничего не находят, это не значит, что на сайте действительно ничего нет.
В сложных случаях на помощь часто приходят поисковики: достаточно просто вбить в них site:
— и поисковый робот вывалит тебе готовый список. Многие файлы и директории никогда не были бы обнаружены, если бы не поисковики.
Важно использовать сразу несколько поисковиков (да, существует не только Google, но и Bing, и Yahoo), потому что каждый может показать разные результаты.
Давайте посмотрим на результаты поиска iom.bus.att.com. В Google будет только два результата.
Поиск Google
А теперь тот же самый запрос в Bing.
Bing
Как видите, в поисковой выдаче уже есть девять результатов вместо двух. Так вот не нужно забывать, что кроме Google есть и другие поисковые системы!
arjun
Arjun может найти скрытые параметры запроса для указанных конечных точек. Вот некоторые особенности:
- поддерживает запросы GET, POST, POST-JSON, POST-XML;
- экспортирует результаты в Burp Suite, текстовые или JSON-файлы;
- автоматически обрабатывает rate limits и тайм‑ауты.
Arjun
INTERNET WAYBACK MACHINE
Wayback Machine — это огромный архив веб-страниц с более чем 330 миллиардами сохраненных копий, индексированных для облегчения поиска. В проекте сохранены исторические версии, благодаря которым вы можете вернуться на много лет назад и увидеть, какое место вас интересует.
Как это полезно для охотника за багами? Например, вам может быть интересно посмотреть старые файлы robots.txt. В нем указаны конечные точки, которые не должны индексироваться поисковыми системами, и этот список со временем меняется.
Wayback Machine втихаря архивирует все это, и старые конечные точки вполне могут работать, поэтому было бы преступлением не воспользоваться этой возможностью, чтобы получить список заведомо интересных мест от самих владельцев сайта!
Waybackrobots
Waybackrobots — это удобный и очень простой скрипт, который автоматизирует процесс получения старых версий robots.txt. У него есть только один обязательный параметр: -d
, он указывает домен, в котором копать.
Waybackrobots
wbk.go
У Wayback Machine, помимо прочего, есть список всех URL-адресов, которые он собрал для домена. Например, вы можете получить список всех URL-адресов, которые компьютер заархивировал для tesla.com.
Скрипт wbk.go
автоматически извлечет урлы, заархивированные в Wayback Machine, для нужного тебе домена.
go run wbk.go tesla.com
Демонстрация работы
GITHUB
GitHub — это отраслевой стандарт для управления версиями и совместной работы над проектами. Миллионы разработчиков вносят изменения в код на GitHub несколько раз в день и не всегда смотрят, что они скачивают. Бывает, что случайно забывают удалить учетные данные — логины, пароли и различные токены.
Вы наверняка не раз сталкивались с Google dorks. GitHub также имеет свои собственные инструменты, которые вы можете использовать для поиска данных, таких как ключи API.
gdorklinks.sh
Простой скрипт, который генерирует поисковые ссылки GitHub с дорками. Вы должны ввести название компании или веб-сайт в качестве параметра. В результате вы получите готовые ссылки, которые вам просто нужно вставить в браузер и изучить полученную информацию.
gdorklinks.sh
GirDorker
GitDorker не только генерирует ссылки, но и сразу же извлекает информацию с помощью API поиска GitHub и обширного списка дорков, которых в настоящее время насчитывается 513. Этот инструмент можно назвать более продвинутой версией предыдущего скрипта.
Для работы вам понадобится токен GitHub Personal Access Token, а еще лучше — как минимум два таких токена. Это связано с тем, что API поиска ограничен 30 запросами в минуту: если есть только один токен, вы очень быстро достигнете пределов.
GitDorker
ФРЕЙМВОРКИ
Когда вы долгое время проводите багбаунти или пентестинг, интеллект превращается в рутину. Так что невольно задумываешься об автоматизации. Ниже мы поговорим о фреймворках, которые почти полностью автоматизируют исследование.
Sudomy
Sudomy — это буквально мощный скрипт на Bash. Включает в себя множество инструментов для анализа, подсчета, исследования поддоменов. Сбор информации может осуществляться пассивно или активно.
Для активного метода скрипт использует gobuster из-за его высокой скорости перебора. При переборе поддоменов используется словарь SecLists (Discover / DNS), который содержит примерно три миллиона записей. При пассивном методе информация собирается из 22 источников, включая Censys, SpySe, DNSdumpster и VirusTotal.
Чтобы полностью разобрать Sudomy, понадобится еще одна статья, поэтому я просто скажу, что он умеет:
- проверяет, возможно ли легко захватить поддомен;
- идентифицирует технологии, используемые сайтом;
- обнаруживает порты, урлы, заголовки, длину содержимого, код состояния HTTP;
- проверяет принадлежность IP к Cloudflare;
- может отправлять уведомления в Slack;
- сканирует порты с собранных IP-адресов, поддоменов, виртуальных хостов.
Например, давайте просто запустим скрипт с параметрами --all
(выполнить все перечисления) и --html
(создать отчет в HTML). Посмотрим, что он найдет, например, для hackerone.com.
Результаты
Практически всю найденную информацию можно увидеть в отчете, созданном скриптом, с хорошей структурой и очень удобным интерфейсом.
Reconftw
Reconftw — это очень большой скрипт, который автоматизирует буквально все, от разведки до поиска уязвимостей. Он содержит лучшие инструменты, используемые охотниками за ошибками, в том числе описанные в этой статье. Вот лишь небольшая часть того, что он умеет:
- искать URL на сайте;
- собирать информацию о поддоменах;
- искать открытые бакеты S3 и дампить их содержимое;
- проверять наличие XSS, SSRF, CRLF, LFI, SQLi и других уязвимостей;
- проверять, есть ли на сайте WAF;
- отправлять оповещения в Slack, Discord и Telegram;
- искать параметры URL.
ЗАКЛЮЧЕНИЕ
Конечно, в статье рассматриваются не все инструменты распознавания. На мой взгляд, это самые крутые из них, с которыми я работаю, но у вас могут быть лучшие инструменты. Если вам этого недостаточно, взгляните на репозитории KingOfBugbounty и nahamsec.