TGViewer
Хатка бобра Хатка бобра @beaverdreamer · 904 subscribers
Post #175 1.55K
Форк с ускоренной доставкой🚀
Как утащить сотни образов Docker контейнеров за несколько кликов и считанные минуты

Если вы начнете искать информацию о том, как стянуть образы контейнеров с публичного Docker registry, то, почти наверняка, столкнетесь c DockerRegistryGrabber.
Сегодня мы отправим этот проект на свалку истории и научимся пуллить в промышленных масштабах🏭🏭🏭
Для начала вспомним, по каким признакам можно определить наличие Docker registry на хосте:
1. Открыт порт TCP 5000
2. GET-запрос возвращает ответ сервера с кодом HTTP 400: Error 400 Not a Docker request
3. Docker registry может быть развернут на хосте Gitlab, Nexus, jFrog.
Окончательно убедиться в наличии Docker registry можно сделав HTTP-запрос к этому хосту:
curl -k -X GET https://some-host.net/v2/_catalog

Если в ответ получите JSON со списком образов контейнеров, то вы на верном пути😎
А теперь перейдем к сути этого поста. Как забрать эти образы?
Нам понадобится... Harbor! Да, мы заставим точно такой же Docker registry работать на нас. Процесс установки и настройки займет, максимум, полчаса времени и описан вот здесь. Чуть позже вы оцените полезность потраченного на его установку времени.
А теперь к сути.
Решить нашу проблему со стягиванием большого количества контейнеров поможет репликация. Harbor сам пойдет в другой Registry и стянет оттуда все необходимое 😊 В нашем примере мы сделаем это на примере простого Docker registry, доступного на TCP 5000.
Для этого нам потребуется:
1. Добавить донорский Docker registry в раздел Administration -> Registries -> New endpoint. Здесь есть несколько обязательных параметров: Provider, Name, Endpoint URL. В качестве провайдера указываем опцию "Docker registry". Name - любое имя, которое вам нравится. Endpoint URL - URL найденного Docker registry. Дополнительно рекомендую снять галочку с "Verify Remote Cert".
2. (не обязательный шаг) Переходим в Projects -> New Project и создаем новый проект. У нас он будет называться test.
3. Теперь переходим в режим репликации Administration -> Replications -> New Replication Rule и указываем опции репликации:
Name - любое имя
Replication mode - Pull-based, потому что мы стягиваем образы, а не публикуем
Source registry - выбираем Docker registry, указанный в п. 1
Destination -> Namespace - указываем имя проекта из п.2, либо оставляем пустым
Destination -> Flattening - выбираем "Flatten All Levels"
4. Сохраняем, выбираем созданную репликацию, нажимаем на кнопку "Replicate" и наслаждаемся процессом. Стянутые контейнеры окажутся в созданном проекте test и теперь мы будем работать с ними уже в рамках нашего Harbor.
p.s. Чтобы стянуть конкретный тэг образа контейнера, нужно провалиться в этот контейнер внутри созданного проекта, выбрать интересующую версию и далее нажать кнопку "Copy pull command". Harbor формирует команду для Docker и Podman.
GitHub GitHub - Syzik/DockerRegistryGrabber: Enumerate / Dump Docker Registry Enumerate / Dump Docker Registry. Contribute to Syzik/DockerRegistryGrabber development by creating an account on GitHub.
  • 🔥 7
  • 👍 2
  • 👎 1
  • 🌚 1
More from @beaverdreamer
  1. Mar 4, 2025Не так давно мы затрагивали тему использования Harbor для взаимодействия с Docker registry…
  2. Feb 18, 2025На прошлой неделе пошумел выход нового скрипта psexecsvc.py, на волне слоупоков давайте ра…
  3. Feb 5, 2025photo post
  4. Jan 31, 2025Часто ли вы используете VS Code? Представим, что на пентесте вы получаете учетку или досту…
  5. Jan 30, 2025Если вы когда-либо взаимодействовали с вебчиками и находили там swagger, вероятно, вы могл…
  6. Jan 23, 2025Honeypot, упрощенно, это ресурс в инфре, который намеренно создаётся для привлечения внима…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →