Pentesting Kubernetes Services
Last updated
Last updated
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Kubernetes gebruik verskeie spesifieke netwerkdienste wat jy mag vind blootgestel aan die Internet of in 'n interne netwerk sodra jy een pod gekompromitteer het.
Een manier kan wees om te soek na Identity LIKE "k8s.%.com"
in crt.sh om subdomeine te vind wat verband hou met kubernetes. 'n Ander manier kan wees om "k8s.%.com"
in github te soek en te soek na YAML-lêers wat die string bevat.
Dit mag nuttig wees vir jou om te verstaan hoe Kubernetes dienste publiek kan blootstel om hulle te vind:
Exposing Services in KubernetesDie volgende poorte mag oop wees in 'n Kubernetes-kluster:
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
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
Dit is die API Kubernetes diens waarmee die administrateurs gewoonlik praat deur die hulpmiddel kubectl
te gebruik.
Gewone poorte: 6443 en 443, maar ook 8443 in minikube en 8080 as onveilig.
Kyk na die volgende bladsy om te leer hoe om sensitiewe data te verkry en sensitiewe aksies uit te voer deur met hierdie diens te praat:
Kubernetes EnumerationHierdie diens loop in elke knoop van die kluster. Dit is die diens wat die pods binne die knoop sal beheer. Dit praat met die kube-apiserver.
As jy hierdie diens blootgestel vind, het jy dalk 'n onaangekondigde RCE gevind.
As die antwoord Unauthorized
is, benodig dit verifikasie.
As jy knope kan lys, kan jy 'n lys van kubelets eindpunte kry met:
U kan hierdie diens misbruik om bevoegdhede binne Kubernetes te verhoog:
Diens nuttig om metrieks te versamel.
Wanneer 'n poort in al die nodes blootgestel word via 'n NodePort, word dieselfde poort in al die nodes geopen wat die verkeer na die verklaarde Service proxify. Standaard sal hierdie poort in die reeks 30000-32767 wees. So nuwe ongekontroleerde dienste mag deur daardie poorte toeganklik wees.
Anonieme toegang tot kube-apiserver API eindpunte is nie toegelaat nie. Maar jy kan sommige eindpunte nagaan:
Die ETCD stoor die kluster geheime, konfigurasie lêers en meer sensitiewe data. Deur standaard kan die ETCD nie anoniem toeganklik wees nie, maar dit is altyd goed om te kontroleer.
As die ETCD anoniem toeganklik is, moet jy dalk die etcdctl instrument gebruik. Die volgende opdrag sal al die sleutels wat gestoor is, verkry:
Die Kubelet dokumentasie verduidelik dat anonieme toegang tot die diens standaard toegelaat word:
Stel anonieme versoeke aan die Kubelet bediener in staat. Versoeke wat nie deur 'n ander verifikasiemetode verwerp word nie, word as anonieme versoeke behandel. Anonieme versoeke het 'n gebruikersnaam van
system:anonymous
, en 'n groepnaam vansystem:unauthenticated
Om beter te verstaan hoe die verifikasie en magtiging van die Kubelet API werk, kyk na hierdie bladsy:
Kubelet Authentication & AuthorizationDie Kubelet diens API is nie gedokumenteer nie, maar die bronnekode kan hier gevind word en om die blootgestelde eindpunte te vind is so maklik soos om te hardloop:
Almal klink interessant.
Jy kan die Kubeletctl hulpmiddel gebruik om met Kubelets en hul eindpunte te kommunikeer.
Hierdie eindpunt lys pods en hul houers:
Hierdie eindpunt maak dit baie maklik om kode binne enige houer uit te voer:
Om hierdie aanval te vermy, moet die kubelet diens met --anonymous-auth false
gedraai word en die diens moet op netwerkvlak gesegregeer word.
Wanneer 'n kubelet slegs lees poort blootgestel word, word dit moontlik vir ongeoorloofde partye om inligting van die API te verkry. Die blootstelling van hierdie poort kan lei tot die bekendmaking van verskeie kluster konfigurasie elemente. Alhoewel die inligting, insluitend pod name, plekke van interne lêers, en ander konfigurasies, dalk nie krities is nie, bly die blootstelling 'n sekuriteitsrisiko en moet vermy word.
'n Voorbeeld van hoe hierdie kwesbaarheid uitgebuit kan word, behels 'n afstandaanvaller wat toegang tot 'n spesifieke URL verkry. Deur na http://<external-IP>:10255/pods
te navigeer, kan die aanvaller moontlik sensitiewe inligting van die kubelet verkry:
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)