Pentesting Kubernetes Services
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Kubernetes inatumia huduma kadhaa maalum za mtandao ambazo unaweza kupata zilizo wazi kwa Mtandao au katika mtandao wa ndani mara tu unaposhambulia pod moja.
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"
katika github na kutafuta faili za YAML zinazokuwa na string hiyo.
Inaweza kuwa na manufaa kwako kuelewa jinsi Kubernetes inaweza kufichua huduma hadharani ili kuweza kuzitafuta:
Port zifuatazo zinaweza kuwa wazi katika klasta ya Kubernetes:
Port | Process | Description |
---|---|---|
Hii ni huduma ya API ya Kubernetes ambayo wasimamizi huwasiliana nayo mara nyingi wakitumia chombo 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 ukizungumza na huduma hii:
Huduma hii inafanya kazi katika kila node ya klasta. Ni huduma ambayo itakuwa na udhibiti wa pods ndani ya node. Inazungumza na kube-apiserver.
Ikiwa utapata huduma hii imewekwa wazi huenda umepata RCE isiyo na uthibitisho.
Ikiwa jibu ni Unauthorized
basi inahitaji uthibitisho.
Ikiwa unaweza kuorodhesha nodi unaweza kupata orodha ya mwisho za kubelets kwa:
You could abuse this service to escalate privileges inside Kubernetes:
Huduma inayofaa kukusanya metriki.
Wakati bandari inafichuliwa katika nodi zote kupitia NodePort, bandari hiyo hiyo inafunguliwa katika nodi zote ikipitia trafiki kwenye Service iliyotangazwa. Kwa default, bandari hii itakuwa katika range 30000-32767. Hivyo, huduma mpya zisizokaguliwa zinaweza kupatikana kupitia bandari hizo.
Upatikanaji wa bila jina kwa kube-apiserver API endpoints haukubaliwi. Lakini unaweza kuangalia baadhi ya endpoints:
ETCD inahifadhi siri za klasta, faili za usanidi na data nyeti zaidi. Kwa kawaida, ETCD haiwezi kufikiwa bila jina, lakini ni vyema kuangalia.
Ikiwa ETCD inaweza kufikiwa bila jina, unaweza kuhitaji kutumia etcdctl chombo. Amri ifuatayo itapata funguo zote zilizohifadhiwa:
The Kubelet documentation inaeleza kwamba kwa default ufikiaji wa kutotambulika kwa huduma unaruhusiwa:
Inaruhusu maombi ya kutotambulika kwa seva ya Kubelet. Maombi ambayo hayakukataliwa na njia nyingine ya uthibitishaji yanachukuliwa kama maombi ya kutotambulika. Maombi ya kutotambulika yana jina la mtumiaji
system:anonymous
, na jina la kundisystem:unauthenticated
Ili kuelewa vizuri jinsi uthibitishaji na idhini ya Kubelet API inavyofanya kazi, angalia ukurasa huu:
Huduma ya Kubelet API haijandikwa, lakini msimbo wa chanzo unaweza kupatikana hapa na kupata ncha zilizofichwa ni rahisi kama kukimbia:
Wote wanakera kuvutia.
Unaweza kutumia chombo cha Kubeletctl kuingiliana na Kubelets na mwisho wao.
Mwishoni hapa orodha ya pods na kontena zao:
Hii endpoint inaruhusu kutekeleza msimbo ndani ya kontena yoyote kwa urahisi:
Ili kuepuka shambulio hili, huduma ya kubelet inapaswa kuendeshwa na --anonymous-auth false
na huduma hiyo inapaswa kutengwa katika kiwango cha mtandao.
Wakati bandari ya kubelet ya kusoma tu inakabiliwa, inakuwa inawezekana kwa taarifa kutolewa kutoka kwa API na wahusika wasioidhinishwa. Kuwekwa wazi kwa bandari hii kunaweza kusababisha kufichuliwa kwa vipengele mbalimbali vya mipangilio ya klasta. Ingawa taarifa, ikiwa ni pamoja na majina ya pod, maeneo ya faili za ndani, na mipangilio mingine, inaweza isiwe muhimu, kuwekwa wazi kwake bado kunaweka hatari ya usalama na inapaswa kuepukwa.
Mfano wa jinsi udhaifu huu unaweza kutumika ni pamoja na mshambuliaji wa mbali kufikia URL maalum. Kwa kuhamasisha http://<external-IP>:10255/pods
, mshambuliaji anaweza kupata taarifa nyeti kutoka kwa kubelet:
Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)