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/kubeletctl

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/k8spider

utility for enum services inside cluster network by PTR record

https://gist.github.com/nirohfeld/c596898673ead369cb8992d97a1c764e

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

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