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

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

dockerhub
Сайт DockerHub. Почти GitHub

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

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

На DockerHub хранятся и старые версии образов. На скриншоте видна показательная путаница с тегами версий, где latest не соответствует своему имени

dockerhub хранятся и старые версии образов
На DockerHub хранятся и старые версии образов. На скриншоте видна показательная путаница с тегами версий, где latest не соответствует своему имени

Не стоит забывать, что и внутри периметра встречаются локально развернутые системы хранения образов, изучение которых игнорируется довольно часто. Листать API docker-registry с помощью curl, пробираться через бесконечные списки скачанных пакетов в nexus – не самое интересное занятие, но зачастую листинг и скачивание образов доступны без авторизации. Почему бы не воспользоваться этим?

Изучать образы можно как вручную, так и автоматизированно: DevSecOps-сообщество написало множество разных инструментов для таких задач, остается только найти место и время, чтобы скачать все образы, которые вас интересуют.

Если же действовать более целенаправленно, то ищем образы с интересными названиями и начинаем отсматривать их версии. Куда смотреть? Прежде всего нужно изучить, как выглядел процесс сборки образа (с образом, по сути, всегда идет Dockerfile, с помощью которого он собран), из чего будет видно:

  • что скопировано внутрь,
  • что будет запущено и установлено,
  • какие порты открыты.

Такая информация поможет с продвижением внутри инфраструктуры или позволит провести эксплуатацию новых векторов на внешнем периметре.

Небольшая подборка подобных находок из одного кейса:

образ с исходниками внутреннего сервиса для отчетов
Образ с исходниками внутреннего сервиса для отчетов. Помимо самих исходников, мы получаем адрес внутреннего Gitlab
солидный набор адресов zabbix в забытом конфиге
Солидный набор адресов Zabbix в забытом конфиге
код сервера на python бережно оставленный в актуальной версии образа
Код сервера на Python, бережно оставленный в актуальной версии образа. Искал медь, нашел золото
не золото, а алмаз
Не золото, а алмаз!