KUBER

Kubernetes Enum/Abuse

Kubernetes Privilege Escalation

Ports

Port
Process
Description

443/TCP

kube-apiserver

Kubernetes API port

2379/TCP

etcd

6666/TCP

etcd

etcd

4194/TCP

cAdvisor

Container metrics

6443/TCP

kube-apiserver

Kubernetes API port

8443/TCP

kube-apiserver

Minikube API port

8080/TCP

kube-apiserver

Insecure API port

10250/TCP

kubelet

HTTPS API which allows full mode access

10255/TCP

kubelet

Unauthenticated read-only HTTP port: pods, running pods and node state

10256/TCP

kube-proxy

Kube Proxy health check server

10249/TCP

kube-proxy

metrics and configuration information (EKS)

9099/TCP

calico-felix

Health check server for Calico

6782-4/TCP

weave

Metrics and endpoints

30000-32767/TCP

NodePort

Proxy to the services

44134/TCP

Tiller

Helm service listening

Kubelet Api

If the response is Unauthorized then it requires authentication.

Custom client for kubelet communication - https://github.com/cyberark/kubeletctlarrow-up-right

kubelet (Read only)

etcd API

NodePort

When a port is exposed in all the nodes via a NodePort, the same port is opened in all the nodes proxifying the traffic into the declared Service. By default this port will be in in the range 30000-32767. So new unchecked services might be accessible through those ports.

Dnscan

https://github.com/Esonhugh/k8spiderarrow-up-right

utility for enum services inside cluster network by PTR record

https://gist.github.com/nirohfeld/c596898673ead369cb8992d97a1c764earrow-up-right

build:

Network subnets defaults:

Service Account

Check SA rights

По умолчанию Kubernetes хранит все токены и информацию об учетных записях служб в месте по умолчанию. Перейдите туда, чтобы найти полезную информацию.

  • Теперь мы можем использовать эту информацию для запроса и взаимодействия со службой API Kubernetes с доступными разрешениями и привилегиями.

  • Чтобы указать имя хоста внутреннего API-сервера, мы можем экспортировать его из переменных среды.

  • Чтобы установить путь к ServiceAccountтокену

  • Чтобы установить значение пространства имен

  • Чтобы прочитать ServiceAccountтокен на предъявителя

  • Чтобы указать ca.crtпуть, чтобы мы могли использовать его при запросе curlзапросов

  • Теперь мы можем изучить API Kubernetes с помощью токена и построенных запросов.

kubectl

  • Чтобы запросить доступные секреты в defaultпространстве имен, выполните следующую команду

  • Чтобы запросить секреты, специфичные для пространства имен

  • Получите k8svaulapikeyпользу от секретов

Bypass Pod Security Admission

This command can show pods that violate the new PodSecurity

High privileged service without auth

  • Longhorn

  • flux - have web server which can give the repository through which gitops is maintained, can contain credentials

  • vector - have graphql api through which you can view logs

  • flagger - rce by design

Kube objects disclosure

Kube-state-metrics on /metrics can show you object's name. It could be useful when you want to hijack secrets via pod creation

RBAC Abuse

Namespaces

Bad pod for escape

Loot on kube nodes

Kube config

  • /etc/rancher/rke2/rke2.yaml

  • /etc/kubernetes/admin.conf

  • /root/.kube

  • /home/*/.kube

  • service accounts tokens: /var/lib/kubelet/pods/*/volumes/kubernetes.io~secret/

  • /etc/kubernetes/pki/ Основной каталог с TLS-сертификатами и ключами control-plane ноды

(api-server, etcd, scheduler, controller-manager). Содержит ca.crt, apiserver.crt, apiserver.key

и другие.

  • /var/lib/kubelet/pki/ Каталог, где kubelet хранит свои сертификаты для аутентификации

перед API-сервером (обычно kubelet.crt и kubelet.key).

  • /var/lib/kubelet/ Файл конфигурации kubelet. Может содержать ссылки на пути к

сертификатам или kubeconfig-файлы.

  • /etc/kubernetes/kubelet.conf kubeconfig-файл для kubelet, содержащий встроенные

сертификаты или ссылки на них.

  • /etc/kubernetes/**/*.kubeconfig Другие kubeconfig-файлы (например, для scheduler,

controller-manager), которые содержат учетные данные.

  • /var/lib/rancher/** Актуально для кластеров, развернутых через RKE/RKE2. RKE2 хранит

сертификаты в /var/lib/rancher/rke2/server/tls/.

  • /opt/rke/** Путь по умолчанию для сертификатов в старых версиях RKE.

Last updated