При проведении любого пентеста корпоративной сети одним из направлений действий белых хакеров является поиск информации, находящейся практически в открытом доступе: на файловых шарах, в репозиториях, в расшаренных папках на машинах пользователей. Короче, все то, что лежит в корпоративной сети и доступно каждому доменному пользователю. В случае, если какие-то из ресурсов недоступны обычному пользователю, после получения привилегированных прав мы можем повторить попытку получения доступа к данным папкам или файлам.
Так или иначе, на файловых помойках и репозиториях можно найти много всего интересного и полезного с точки зрения тестирования на проникновение. Например, в исходниках могут остаться учетные записи. Да, наши доблестные разработчики закомментировали соответствующие строки в коде и в артефакт эта лазейка не попала, но в исходнике комментарий все равно остался. Также интерес представляют всевозможные скрипты, плейбуки, инструкции, так как в них тоже могут оказаться учетные данные. В резервных копиях могут оказаться файлы приватных ключей и другая полезная конфиденциальная информация.
Казалось бы, все просто, необходимо проверить доступные файловые ресурсы на предмет… Вот тут возникает отдельный вопрос, а что собственно искать? Как должна выглядеть искомая пара логин/пароль? Здесь нам на помощь приходят старые добрые дорки.
Напомним, что Google Dorking — это техника конкретизированных поисковых запросов, с помощью которых облегчается процесс поиска информации в открытых источниках. Собственно, использовать дорки можно не только в поисковике Google, но известны они стали именно благодаря этой поисковой машине.
Вот примеры нескольких таких поисковых запросов:
inurl:/view.shtml
intitle:”Live View / – AXIS” | inurl:view/view.shtml^
inurl:ViewerFrame?Mode=
inurl:ViewerFrame?Mode=Refresh
inurl:axis-cgi/jpg
Лет десять назад с помощью подобных запросов можно было найти веб камеры, транслирующие видео в интернет. А сейчас данные дорки возвращают только статьи о том, как можно “подсмотреть чужую жизнь”.
В гостях у репозитория
Однако, сама идея дорков вполне жизнеспособна. Только искать мы будем по репозиториям. Если речь идет о поиске в исходном коде, доступном в публичных репозиториях, то здесь мы можем воспользоваться специальными сервисами, например https://sourcegraph.com/. В бесплатной версии мы можем использовать готовые выражения, а если очень хочется усложнить запросы, например, с помощью регулярных выражений, то тогда потребуется уже платная подписка.
В примере ниже в качестве запроса была задана строка db_password и среди множества найденных репозиториев на просторах Github обнаружился исходник с жестко приколоченными учетными данными.
Вообще, дорков, то есть поисковых запросов, по которым можно поискать, довольно много.
Вот лишь несколько наиболее распространенных примеров:
"api_key"
"api_secret"
"auth"
"auth_token"
"authorizationToken"
"db_password"
"db_username"
"dbpasswd"
"dbpassword"
"ssh"
"ssh2_auth_password"
Однако пентестер в любом случае должен представлять, как выглядят интересующие его учетные данные. Например, зная, код на каком языке используется в бэкенде и какая СУБД, можно посмотреть, как выглядит строка соединения и поискать сначала по ней, а потом уже посмотреть, какой код идет рядом.
Также с помощью этого поискового сервиса можно посмотреть, какие изменения в коде были выполнены с определенного момента времени. Например, можно узнать, в каких репозиториях за последний час выполнялись коммиты.
Еще один поисковик, работающий по схожему принципу, это SearchCode (https://searchcode.com/).
Он также ищет заданное значение в различных репозиториях, при необходимости можно настроить фильтрацию для поиска только в определенных репозиториях или определенных языках программирования.
Для получения лучших результатов можно использовать оба поисковых сервиса, на случай, если один из них что-то не найдет.
То, что уже утекло
Здесь речь пойдет уже не столько о дорках и поисковых запросах, сколько о сервисах, которые находят утекшие в сеть конфиденциальные данные. Следующий сервис по замыслу авторов должен помочь уже специалистам по безопасности вовремя обнаружить утечки конфиденциальных данных. Проект Forager (https://forager.trufflesecurity.com/) предназначен для поиска в сети утекших конфиденциальных данных, таких как пароли, закрытые ключи т.д. Любой желающий может указать интересующий домен организации и поисковик покажет, есть ли у него какая-то информация. Но посмотреть, что конкретно удалось найти, любой пользователь, естественно, не сможет.
Посмотреть детали утечки может только тот, чей аккаунт на данном сервисе привязан к домену скомпрометированной организации.
Собственно, Forager это не единственный сервис, разработанный Truffle. Также у них имеется TruffleHog, позволяющий находить различные утекшие в сеть секреты. Для того, чтобы его протестировать, нужно просто запустить контейнер, указав в качестве параметров тестовый репозиторий.
docker run --rm -it -v "$PWD:/pwd" trufflesecurity/trufflehog:latest github --repo https://github.com/trufflesecurity/test_keys
Еще один похожий инструмент – Gitleaks. Это инструмент SAST для обнаружения и предотвращения жестко прописанных в коде секретов, таких как пароли, api-ключи и токены в репозиториях git.
Запустить этот инструмент можно также с помощью Docker, указав папку со сканируемым исходным кодом:
docker run -v ${path_to_host_folder_to_scan}:/path zricethezav/gitleaks:latest [COMMAND] [OPTIONS] [SOURCE_PATH]
Заключение
В этой статье мы немного поговорили о том, как можно обнаруживать конфиденциальные данные, лежащие в репозиториях с помощью различных сервисов, позволяющих автоматизировать данный поиск. Стоит отметить, что описанные инструменты могут помочь не только пентестерам, но и специалистам, обеспечивающим защиту информации.
Больше об инструментах и лучших практиках для обеспечения информационной безопасности можно узнать на онлайн-курсах от экспертов отрасли.