Pentesting Kubernetes Services
Kubernetes hutumia huduma za mtandao maalum ambazo unaweza kuzipata zikiwa wazi kwa Ulimwengu wa Mtandao au kwenye mtandao wa ndani mara baada ya kudukua pod moja.
Kupata pods zilizofichuliwa kwa OSINT
Njia moja inaweza kuwa kutafuta Identity LIKE "k8s.%.com"
katika crt.sh ili kupata subdomains zinazohusiana na kubernetes. Njia nyingine inaweza kuwa kutafuta "k8s.%.com"
kwenye github na kutafuta faili za YAML zinazoleta neno hilo.
Jinsi Kubernetes Inavyofichua Huduma
Inaweza kuwa muhimu kwako kuelewa jinsi Kubernetes inavyoweza kufichua huduma kwa umma ili kuzipata:
pageExposing Services in KubernetesKupata Pods Zilizofichuliwa kupitia uchunguzi wa bandari
Bandari zifuatazo zinaweza kuwa wazi katika kikundi cha Kubernetes:
Bandari | Mchakato | Maelezo |
---|---|---|
443/TCP | kube-apiserver | Bandari ya API ya Kubernetes |
2379/TCP | etcd | |
6666/TCP | etcd | etcd |
4194/TCP | cAdvisor | Vipimo vya kontena |
6443/TCP | kube-apiserver | Bandari ya API ya Kubernetes |
8443/TCP | kube-apiserver | Bandari ya API ya Minikube |
8080/TCP | kube-apiserver | Bandari isiyo salama ya API |
10250/TCP | kubelet | API ya HTTPS inayoruhusu ufikiaji kamili |
10255/TCP | kubelet | Bandari ya HTTP isiyothibitishwa ya kusoma tu: pods, pods zinazoendesha na hali ya node |
10256/TCP | kube-proxy | Seva ya uchunguzi wa afya ya Kube Proxy |
9099/TCP | calico-felix | Seva ya uchunguzi wa afya kwa Calico |
6782-4/TCP | weave | Vipimo na vituo vya mwisho |
30000-32767/TCP | NodePort | Proksi kwa huduma |
44134/TCP | Tiller | Huduma ya Helm inayosikiliza |
Nmap
Kube-apiserver
Hii ni huduma ya API ya Kubernetes ambayo waendeshaji wanazungumza nayo kawaida kwa kutumia zana ya kubectl
.
Bandari za kawaida: 6443 na 443, lakini pia 8443 katika minikube na 8080 kama isiyo salama.
Angalia ukurasa ufuatao kujifunza jinsi ya kupata data nyeti na kutekeleza hatua nyeti kuzungumza na huduma hii:
pageKubernetes EnumerationKubelet API
Huduma hii inaendeshwa kwenye kila node ya kikundi. Ni huduma itakayosaidia kudhibiti makasha ndani ya node. Inazungumza na kube-apiserver.
Ukipata huduma hii imefunuliwa unaweza kuwa umepata RCE isiyo na uthibitisho.
Ikiwa jibu ni Unauthorized
basi inahitaji uwakilishi.
Ikiwa unaweza kuorodhesha nodes unaweza kupata orodha ya kubelets endpoints kwa:
kubelet (Soma tu)
etcd API
Tiller
Tiller
Unaweza kutumia huduma hii kwa kujipandisha viwango vya mamlaka ndani ya Kubernetes:
cAdvisor
Huduma inayofaa kwa kukusanya takwimu.
NodePort
Wakati bandari inafunuliwa kwenye nodes zote kupitia NodePort, bandari hiyo hiyo inafunguliwa kwenye nodes zote ikipeleka trafiki kwenye Service iliyotajwa. Kwa chaguo-msingi, bandari hii itakuwa katika mbalimbali ya 30000-32767. Kwa hivyo huduma mpya ambazo hazijachunguzwa zinaweza kupatikana kupitia bandari hizo.
Mipangilio Hatarishi
Kufikia Kube-apiserver Bila Kujulikana
Kufikia kwa endpoints za API za kube-apiserver bila kujulikana haikubaliki. Lakini unaweza kuchunguza baadhi ya endpoints:
Kuchunguza Kufikia ETCD Bila Kujulikana
ETCD huhifadhi siri za kikundi, faili za mipangilio na data nyeti zaidi. Kwa chaguo-msingi, ETCD haiwezi kufikiwa bila kujulikana, lakini ni vizuri kuchunguza.
Ikiwa ETCD inaweza kufikiwa bila kujulikana, unaweza kutumia zana ya etcdctl. Amri ifuatayo itapata funguo zote zilizohifadhiwa:
Kubelet RCE
[**Hati
Unaweza kutumia zana ya Kubeletctl kuingiliana na Kubelets na vituo vyao.
/pods
Hii ni mwisho wa kuorodhesha pods na vyombo vyao:
/exec
Endpoint hii inaruhusu kutekeleza nambari ndani ya kontena yoyote kwa urahisi sana:
Ili kuepuka shambulio hili huduma ya kubelet inapaswa kuendeshwa na --anonymous-auth false
na huduma inapaswa kutengwa kwenye kiwango cha mtandao.
Kuangalia Ufunuo wa Taarifa za Kubelet (Bandari ya Kusoma tu)
Wakati bandari ya kusoma tu ya kubelet inafunuliwa, inawezekana kupata taarifa kutoka kwa API na vyama visivyoruhusiwa. Ufunuo wa bandari hii unaweza kusababisha ufunuo wa vipengele mbalimbali vya usawazishaji wa kikundi. Ingawa taarifa, ikiwa ni pamoja na majina ya podi, maeneo ya faili za ndani, na mipangilio mingine, inaweza isiwe muhimu sana, ufunuo wake bado unaweka hatari ya usalama na inapaswa kuepukwa.
Mfano wa jinsi udhaifu huu unaweza kutumika ni pamoja na mshambuliaji wa mbali kupata URL maalum. Kwa kwenda kwenye http://<external-IP>:10255/pods
, mshambuliaji anaweza kupata taarifa nyeti kutoka kwa kubelet:
Marejeo
Last updated