Введение & Почему GitDorker
Поиск секретов в среде открытого кода на Github с использованием автоматизированных инструментов, таких как gitrob (michenriksen) или GitGot (BishopFox), отлично подходит для быстрого сканирования репозиториев на наличие потенциально скрытой конфиденциальной информации. Однако, эти инструменты не лишены очевидных минусов и все еще далеки от совершенства.
Довольно часто чувствительная информация, хранящаяся на просторах GitHub, упускаются из виду, не отображаясь в логе многих утилит из-за ограничений автоматического сканирования. А иногда и вовсе выводится слишком много лишних сведений, которые затрудняет поиск истинных секретов из моря ложных срабатываний.
GitDorker - простой и мощный инструмент для поиска утечек конфиденциальной информации на Github, написанный на Python, и использующий обширный список дорков для быстрого и точного поиска с упоминанием организаций, никнеймов или доменных имен предполагаемых целей. Поиск по доркам используются для составления карты сокровищ с чувствительными данными, предоставляя пользователю список успешных запросов, количество полученных результатов, а также URL-ссылку для каждого, чтобы вы могли легко перейти к ручному анализу.
Вы можете просмотреть весь список из более чем 230+ Github-дорок, который я продолжу обновлять в скором времени, здесь.
А также, прежде чем я углублюсь в примеры использования GitDorker, я хотел бы поблагодарить Gwendell Le Coguic, составившего данный список. У него также есть фантастический репозиторий инструментов поиска в GitHub, доступный здесь.
Начнем. В качестве потенциальной цели выступит компания Tesla.
Настройка
Для того, чтобы загрузить GitDorker, выполните в терминале следующую команду:
git clone [URL='https://github.com/obheda12/GitDorker'][B]https://github.com/obheda12/GitDorker[/B][/URL]
Затем, установите необходимые зависимости:
pip3 install -r requirements.txt
Наконец, чтобы воспользоваться инструментом, создайте Github access token (
Ссылка скрыта от гостей
) и задайте его при помощи ключа «-t» или «-tf» (для импорта нескольких токенов из файла).ПРИМЕЧАНИЕ. GitHub ограничивает запросы к API до 30 запросов в минуту. Чтобы обойти данное ограничение по скорости, я добавил режим сна после выполнения каждых 30 запросов. У моего инструмента также есть возможность использовать файл токенов, по которому GitDorker будет проходиться циклически при выполнении запросов, тем самым увеличивая их возможное количество в минуту. Например, использование переключателя «-tf» с файлом из 3 уникальных токенов, созданных для 3-х различных учетных записей, увеличит ваш лимит запросов с 30 запросов в минуту до 90.
Демонстрация работы и сценарии использования
Чтобы осуществить поиск нужных нам данных по аккаунту Tesla в Github, давайте найдем его полный никнейм, используя Google. Поиск по запросу «tesla github» выдал нам имя «teslamotors». Именно оно нам и понадобится.
Для того, чтобы открыть справку по GitDorker, используйте следующую команду:
python3 GitDorker.py -h
Как можно заметить, для указания текста запроса, необходимо использовать ключ «-q». По сути, это то же самое, как если бы вы вводили текст в общедоступную панель поиска GitHub, но через API-интерфейс.
Используя
Ссылка скрыта от гостей
на GitHub, мы можем выполнять более сложные запросы для улучшения получаемых результатов.Для выполнения целевого запроса, давайте воспользуемся параметром «org:». Для демонстрации работы инструмента, я буду использовать дорки из файла "demo_dorks.txt", а также импортирую 4 валидных access токена. Я также буду использовать параметр «-o» для вывода результатов работы в CSV.
Примечание. В GitDorker существует отдельный ключ «-org», однако я считаю, что в целях наглядной демонстрации работы, использование переключателя «-q» способствует более глубокому пониманию динамической функциональности GitDorker.
[B]python3 GitDorker.py -tf tokensfile.txt -q org:teslamotors -d dorks/demo_dorks.txt -o tesla[/B]
Ниже приведен стандартный вывод в терминал и CSV-файл, открытый в Excel, и отфильтрованный по количеству результатов для удобного анализа и ручного поиска конфиденциальной информации.
Как вы можете видеть, URL-адрес поискового запроса создается для каждой дорки вместе с количеством результатов. Давайте перейдем одной из ссылок и проанализируем полученные данные.
Наш запрос на «ftp»-дорк дал большое количество результатов, для просмотра которых потребуется достаточно много времени времени, учитывая количество кода компании Tesla на GitHub. Чтобы искать более эффективно, рекомендуется анализировать результаты в порядке от наименьшего количества результатов к наибольшему, чтобы оптимизировать время, потраченное на поиск.
Дорк «connectionstring» выдает всего один результат, взглянув на который, мы видим следующее:
В нашем случае Tesla является довольно защищенной целью и не имеет какой-либо конфиденциальной информации, лежащей на Github, однако другие, менее зрелые компании, гораздо более восприимчивы к утечке секретов.
Предоставление пользователю возможности самостоятельно анализировать эндпоинты для раскрытия конфиденциальной информации делает ручную работу с Github гораздо более плавным процессом и значительно увеличивает вероятность обнаружения полезной информации. Основная цель GitDorker - попытаться выявить секреты и отобразить источники, в которых может скрываться конфиденциальная информация, чтобы улучшить ручной поиск и дать вам подробное представление о GitHub'е вашей цели.
Ниже приведены дополнительные варианты использования GitDorker.
Использование домена в качестве поискового запроса
Вы можете выполнять поиск по домену или любому другому параметру в соответствии с правилами поиска GitHub, о которых я упоминал ранее выше. Например, мы будем использовать «tesla.com» в качестве целевого домена.
[B]python3 GitDorker.py -tf tokensfile.txt -q tesla.com -d dorks/demo_dorks.txt[/B]
Поиск по пользователям, публикующим код в исследуемом репозитории
Вы можете выполнить поиск по одному или нескольким пользователям для получения конфиденциальной информации, указанной в их репозиториях. Давайте сделаем это с аккаунтами, указанными в репозитории teslamotors.
Сначала мы посетим страницу "People" компании Teslamotors на GitHub и соберем пользователей оттуда. Gwen001 написал сценарий «github-search» для автоматического парсинга пользователей, на который я уже ссылался ранее.
Мы будем ориентироваться на первых двух человек, имена которых сохраним в отдельный текстовый файл (каждое - с новой строки). В этом примере я использую более короткий список дорков, поскольку их количество напрямую влияет на скорость поиска.
Теперь мы запустим GitDorker, используя уже привычные нам ключи:
[B]python3 GitDorker.py -tf tokensfile.txt -uf userfile.txt -d dorks / * DORK_FILE *[/B]
Заключение
Я описал всего лишь несколько вариантов использования GitDorker, которые показывают преимущества данного инструмента перед обычным поиском на Github.
На сегодняшний день я лично добился успеха в BugBounty с GitDorker. И хотел бы услышать о ваших успехах работы с ним. Если вы думаете, что этот модифицированный инструмент - отстой, дайте мне знать, как его улучшить. Я более чем открыт для отзывов