Dorks на новый лад – ищем то, что открыто

от автора

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

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

Казалось бы, все просто, необходимо проверить доступные файловые ресурсы на предмет… Вот тут возникает отдельный вопрос, а что собственно искать? Как должна выглядеть искомая пара логин/пароль? Здесь нам на помощь приходят старые добрые дорки.

Напомним, что 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]

Заключение

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


Больше об инструментах и лучших практиках для обеспечения информационной безопасности можно узнать на онлайн-курсах от экспертов отрасли.


ссылка на оригинал статьи https://habr.com/ru/articles/846304/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *