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

Порой – неважно, специально или случайно – в публичных репозиториях образов публикуются весьма интересные вещи. Это могут быть сборки образов с dev-версиями софта, внутренние разработки или просто настроенные сервисы для повседневного использования.
Вы можете возразить, что сейчас гораздо реже встречается такая беда, как конфигурационные и отладочные файлы и пароли в контейнерах. Так было не всегда, но, как мы знаем, интернет помнит все.
На DockerHub хранятся и старые версии образов. На скриншоте видна показательная путаница с тегами версий, где latest не соответствует своему имени

Не стоит забывать, что и внутри периметра встречаются локально развернутые системы хранения образов, изучение которых игнорируется довольно часто. Листать API docker-registry с помощью curl, пробираться через бесконечные списки скачанных пакетов в nexus – не самое интересное занятие, но зачастую листинг и скачивание образов доступны без авторизации. Почему бы не воспользоваться этим?
Изучать образы можно как вручную, так и автоматизированно: DevSecOps-сообщество написало множество разных инструментов для таких задач, остается только найти место и время, чтобы скачать все образы, которые вас интересуют.
Если же действовать более целенаправленно, то ищем образы с интересными названиями и начинаем отсматривать их версии. Куда смотреть? Прежде всего нужно изучить, как выглядел процесс сборки образа (с образом, по сути, всегда идет Dockerfile, с помощью которого он собран), из чего будет видно:
- что скопировано внутрь,
- что будет запущено и установлено,
- какие порты открыты.
Такая информация поможет с продвижением внутри инфраструктуры или позволит провести эксплуатацию новых векторов на внешнем периметре.
Небольшая подборка подобных находок из одного кейса:



