В этом посте я кратко расскажу о практическом применении "гитхаб дорков" (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 переводится как "придурок").
C июня 2003 года на сайте exploit-db.com ведется публичная база Google Dorks. Она называется Google Hacking Database и в ней сейчас (23.01.2021) 6267 запросов.
Список постоянно пополняется. В 2021 году исследователи успели добавить уже целых 32 дорка.
Вот например 19 января был опубликован запрос для поиска баз данных в формате xlsx (хотя работать с ним можно было уже лет двадцать):
ext:xlsx inurl:database
С его помощью можно найти различные таблицы со служебными данными, которые по неосторожности оказались проиндексированы Google.
Github — сайт номер один на планете для хостинга веб-сервисов и совместной работы над кодом с помощью системы контроля версий Git. В январе 2021 года у сервиса более 65 миллионов пользователей по всему миру.
Github Dorks тоже довольно старая тема. Одно из первых упоминаний о ней довелось найти аж в 2013 году в блоге компании ConvisioAppSec.
"гитхаб-дорки" — это поисковые запросы, которые помогают найти репозитории с приватными данным: логинами, паролями, API-ключами, дампами баз данных, адресами серверов и прочими интересными вещами, которые полагается удалять из кода перед его выкладкой в публичный доступ. Но иногда люди забывают это делать.
Вот простейший пример.
Набираем в Google:
"gmail_password" site:github.com
И на первой же странице поисковой выдачи видим ссылку на репозиторий, в котором есть логин и пароль от Google-почты.
Скорее всего, для этого ящика пароль уже поменяли. Но если дойти до далекой-далекой страницы поисковой выдачи или отфильтровать результаты по времени, оставив только обновления за последние 24 часа, то есть шанс найти действующие чужие пароли.
В данный момент существует более 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, так как в них применяются специальные операторы для поиска по репозиториям.
Например, если "гитхаб-дорк" требует ограничений по используемому языку программирования, то используется поисковые оператор "language:":
language:javascript
language:python
language:php
Для поиска по именам файлов в репозиториях используется оператор "filename:", а для фильтрации результатов по расширения файлов нужен оператор "extension:".
Полный список поисковых операторов есть в официальной документации Github.
Стоит отметить, что все новые опубликованные "гитхабы-дорки" сразу же попадают в руки многочисленных исследователей в области информационной безопасности, которые очень быстро "прибирают к рукам" все мало-мальски ценные данные, используя автоматизирующих скрипты и программы.
Поэтому, для любительских исследований эффективнее делать поиск по репозиториям, созданным в последние сутки и ценные данные в которых могли успеть остаться незамеченными. В этом поможет оператор "created:" ("создано"). Например:
extension:sql created:>2021-01-23