Найти тему
Хроники диванной разведки

Как искать конфиденциальные пользовательские данные на Github (пароли, логины, API-ключи, дампы БД)

Логотип расширения для Chrome GitHub Searchlite (chrome.google.com/webstore/)
Логотип расширения для Chrome GitHub Searchlite (chrome.google.com/webstore/)

В этом посте я кратко расскажу о практическом применении "гитхаб дорков" (Github Dorks) для поиска приватных данных в публичных репозиториях с открытым исходным кодом, которые программисты по неосторожности иногда забывают удалить.

Прежде чем приступить, я кратко объясню что такое "дорки"(Dorks).

В 2002 году специалист по информационной безопасности Джонни Лонг (также известный как "j0hnny" или "j0hnnyhax") начал собирать поисковые запросы к Google, которые позволяют найти уязвимые для взлома сайты или приватные данные, по неосторожности выложенные в открытый доступ.

Например, в 2002-2003 годах был актуален запрос:

intitle:"Welcome to Windows 2000 Internet Services"

С его помощью можно было найти страницы для входа в панели управления "Служб интернета для Windows 2000".

Поисковый оператор "intitle:" позволяет проводить поиск строго по тексту заголовка веб-страницы.

А вот по такому запросу в 2002-2003 годах можно было найти текстовые файлы с логины и паролями пользователей сайта.

allinurl:auth_user_file.txt

Поисковый оператор "allinurl:" позволяет проводить поиск строго по тексту URL-адреса веб-страницы.

Подобные этим запросы Джонни Лонг назвал Google Dorks (dork переводится как "придурок").

https://www.exploit-db.com/google-hacking-database
https://www.exploit-db.com/google-hacking-database

C июня 2003 года на сайте exploit-db.com ведется публичная база Google Dorks. Она называется Google Hacking Database и в ней сейчас (23.01.2021) 6267 запросов.

Список постоянно пополняется. В 2021 году исследователи успели добавить уже целых 32 дорка.

Вот например 19 января был опубликован запрос для поиска баз данных в формате xlsx (хотя работать с ним можно было уже лет двадцать):

ext:xlsx inurl:database

google.com
google.com

С его помощью можно найти различные таблицы со служебными данными, которые по неосторожности оказались проиндексированы Google.

https://github.com/search
https://github.com/search
Github — сайт номер один на планете для хостинга веб-сервисов и совместной работы над кодом с помощью системы контроля версий Git. В январе 2021 года у сервиса более 65 миллионов пользователей по всему миру.

Github Dorks тоже довольно старая тема. Одно из первых упоминаний о ней довелось найти аж в 2013 году в блоге компании ConvisioAppSec.

"гитхаб-дорки" — это поисковые запросы, которые помогают найти репозитории с приватными данным: логинами, паролями, API-ключами, дампами баз данных, адресами серверов и прочими интересными вещами, которые полагается удалять из кода перед его выкладкой в публичный доступ. Но иногда люди забывают это делать.

Вот простейший пример.

google.com
google.com

Набираем в Google:

"gmail_password" site:github.com

И на первой же странице поисковой выдачи видим ссылку на репозиторий, в котором есть логин и пароль от Google-почты.

Скорее всего, для этого ящика пароль уже поменяли. Но если дойти до далекой-далекой страницы поисковой выдачи или отфильтровать результаты по времени, оставив только обновления за последние 24 часа, то есть шанс найти действующие чужие пароли.

https://twitter.com/obheda12/status/1352686678318731264/photo/1 Один из самых полных списков Github-дорков
https://twitter.com/obheda12/status/1352686678318731264/photo/1 Один из самых полных списков Github-дорков

В данный момент существует более 500 Github Dorks для поиска различных приватных данных.

Например, "db_password", "db_serverd", "b_username", "dbpasswd" дают шанс найти данные для доступа к чужим базам данных.

"bx_password", "certificate_password", "ci_deploy_password" ищет пароли.

"extension:sql", "extension:sql mysql dump" — дампы базы данных

Некоторые из них можно вводить прямо в поисковой строке Google, добавив к "дорку" уточнение "site:github.com". Например, вот пара дорков для поиска API-ключей:

"cloudflare_api_key" site:github.com

"admin_pass" site:github.com

"api.googlemaps AIza" site:github.com

На всякий случай уточню. Поиск чужих API-ключей интерес прежде всего с точки зрения экономии денег. Используя чужие API-ключи можно использовать платную функциональность различных сервисов в своих скриптах и приложениях.
Но это нечестно и противоречит правилам большинство сервисов, предоставляющих API для разработчиков.

Мне кажется, что этот способ удобнее, так как в Google сразу отображается фрагмент исходного кода в репозитории, в котором найден соответствующий запросу текст.

Но для использования некоторых "дорков" подходит только поиск непосредственно на Github, так как в них применяются специальные операторы для поиска по репозиториям.

https://github.com/search
https://github.com/search

Например, если "гитхаб-дорк" требует ограничений по используемому языку программирования, то используется поисковые оператор "language:":

language:javascript
language:python
language:php

Для поиска по именам файлов в репозиториях используется оператор "filename:", а для фильтрации результатов по расширения файлов нужен оператор "extension:".

https://docs.github.com/en/github/searching-for-information-on-github/understanding-the-search-syntax
https://docs.github.com/en/github/searching-for-information-on-github/understanding-the-search-syntax

Полный список поисковых операторов есть в официальной документации Github.

Стоит отметить, что все новые опубликованные "гитхабы-дорки" сразу же попадают в руки многочисленных исследователей в области информационной безопасности, которые очень быстро "прибирают к рукам" все мало-мальски ценные данные, используя автоматизирующих скрипты и программы.

Поэтому, для любительских исследований эффективнее делать поиск по репозиториям, созданным в последние сутки и ценные данные в которых могли успеть остаться незамеченными. В этом поможет оператор "created:" ("создано"). Например:

extension:sql created:>2021-01-23