#33 Bug Bounty. Docker API.
Здравствуйте, дорогие друзья.
Введение
В старые времена, если Вы разработали кусок кода, он мог нормально работать на Вашем компьютере, но когда Вы помещаете его в другую систему, он полностью выходит из строя. Docker был разработан, чтобы решить эту проблему. Docker — это программная платформа с открытым исходным кодом для создания, развертывания и управления контейнерами виртуализированных приложений на общей операционной системе, с экосистемой сопутствующих инструментов.
Exposed Docker API
Когда Вы устанавливаете докер в системе, он предоставляет API на Вашем локальном хосте, и расположен на порту 2375. Этот API можно использовать для взаимодействия с механизмом докера, что в основном, дает Вам право делать все, что Вы пожелаете, без аутентификации. В этих условиях никакая посторонняя сторона не сможет получить доступ к вашему Docker API. Однако, в некоторых случаях, этот API может быть изменен так, чтобы к нему могли обращаться внешние ресурсы. Если сделать это неправильно, то произойдет открытие API докера, как показано в следующем Shodan поиске:
Чтобы подтвердить, что на нужном хосте запущен 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
Как Вы можете видеть на изображении выше, у нас есть один контейнер, работающий на порту. 80 с именем Elegant_easley. Мы можем легко вставить оболочку в этот контейнер, выполнив следующую команду:
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. Подготовка к охоте. База знаний.
#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.
#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.
#25 Bug Bounty. Часть 8: Фаза fingerprint.
#26 Bug Bounty. Censys. Nmap. Masscan.
#27 Bug Bounty. Веб-приложение.
#28 Bug Bounty. Этап эксплуатации.
#30 Bug Bounty. Неправильно настроенные сегменты облачного хранилища.