Гостевая статья GitDorker как инструмент для поиска утечек конфиденциальной информации в публичных Github-репозиториях

1 oc-GBTGPa9qmJ1tx5Ns1bA.png


Введение & Почему 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». Именно оно нам и понадобится.

1 oc-GBTGPa9qmJ1tx5Ns1bA.png


Для того, чтобы открыть справку по GitDorker, используйте следующую команду:

python3 GitDorker.py -h

1 oc-GBTGPa9qmJ1tx5Ns1bA.png


Как можно заметить, для указания текста запроса, необходимо использовать ключ «-q». По сути, это то же самое, как если бы вы вводили текст в общедоступную панель поиска GitHub, но через API-интерфейс.

1 oc-GBTGPa9qmJ1tx5Ns1bA.png


Используя на 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, и отфильтрованный по количеству результатов для удобного анализа и ручного поиска конфиденциальной информации.

1 oc-GBTGPa9qmJ1tx5Ns1bA.png


1 oc-GBTGPa9qmJ1tx5Ns1bA.png


Как вы можете видеть, URL-адрес поискового запроса создается для каждой дорки вместе с количеством результатов. Давайте перейдем одной из ссылок и проанализируем полученные данные.

1 oc-GBTGPa9qmJ1tx5Ns1bA.png


Наш запрос на «ftp»-дорк дал большое количество результатов, для просмотра которых потребуется достаточно много времени времени, учитывая количество кода компании Tesla на GitHub. Чтобы искать более эффективно, рекомендуется анализировать результаты в порядке от наименьшего количества результатов к наибольшему, чтобы оптимизировать время, потраченное на поиск.

Дорк «connectionstring» выдает всего один результат, взглянув на который, мы видим следующее:

1 oc-GBTGPa9qmJ1tx5Ns1bA.png


В нашем случае 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]

1 oc-GBTGPa9qmJ1tx5Ns1bA.png


Поиск по пользователям, публикующим код в исследуемом репозитории


Вы можете выполнить поиск по одному или нескольким пользователям для получения конфиденциальной информации, указанной в их репозиториях. Давайте сделаем это с аккаунтами, указанными в репозитории teslamotors.

Сначала мы посетим страницу "People" компании Teslamotors на GitHub и соберем пользователей оттуда. Gwen001 написал сценарий «github-search» для автоматического парсинга пользователей, на который я уже ссылался ранее.

Мы будем ориентироваться на первых двух человек, имена которых сохраним в отдельный текстовый файл (каждое - с новой строки). В этом примере я использую более короткий список дорков, поскольку их количество напрямую влияет на скорость поиска.

1 oc-GBTGPa9qmJ1tx5Ns1bA.png


Теперь мы запустим GitDorker, используя уже привычные нам ключи:

[B]python3 GitDorker.py -tf tokensfile.txt -uf userfile.txt -d dorks / * DORK_FILE *[/B]

1 oc-GBTGPa9qmJ1tx5Ns1bA.png


Заключение

Я описал всего лишь несколько вариантов использования GitDorker, которые показывают преимущества данного инструмента перед обычным поиском на Github.

На сегодняшний день я лично добился успеха в BugBounty с GitDorker. И хотел бы услышать о ваших успехах работы с ним. Если вы думаете, что этот модифицированный инструмент - отстой, дайте мне знать, как его улучшить. Я более чем открыт для отзывов :)
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!