GCP - Container Privesc
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)
container.clusters.get
Ruhusa hii inaruhusu kusanya akreditivu za kundi la Kubernetes kwa kutumia kitu kama:
Bila ruhusa za ziada, hati za uidhinishaji ni za msingi sana kwani unaweza tu kuorodhesha baadhi ya rasilimali, lakini ni muhimu kupata makosa ya usanidi katika mazingira.
Kumbuka kwamba vikundi vya kubernetes vinaweza kuandaliwa kuwa binafsi, ambavyo vitakataa ufikiaji wa seva ya Kube-API kutoka kwa Mtandao.
Ikiwa huna ruhusa hii bado unaweza kufikia kundi, lakini unahitaji kuunda faili yako ya usanidi ya kubectl yenye taarifa za vikundi. Faili mpya iliyoundwa inaonekana kama hii:
container.roles.escalate
| container.clusterRoles.escalate
Kubernetes kwa kawaida inaepusha wahusika kuwa na uwezo wa kuunda au kupdate Roles na ClusterRoles zenye idhini zaidi kuliko zile ambazo wahusika wanazo. Hata hivyo, wahusika wa GCP wenye ruhusa hizo wataweza kuunda/kupdate Roles/ClusterRoles zenye idhini zaidi kuliko zile walizonazo, kwa hivyo wakiepuka ulinzi wa Kubernetes dhidi ya tabia hii.
container.roles.create
na/au container.roles.update
AU container.clusterRoles.create
na/au container.clusterRoles.update
kwa mtiririko huo pia ni zaidi zinahitajika ili kutekeleza vitendo hivyo vya kupandisha hadhi.
container.roles.bind
| container.clusterRoles.bind
Kubernetes kwa kawaida inaepusha wahusika kuwa na uwezo wa kuunda au kupdate RoleBindings na ClusterRoleBindings ili kutoa idhini zaidi kuliko zile ambazo wahusika wanazo. Hata hivyo, wahusika wa GCP wenye ruhusa hizo wataweza kuunda/kupdate RolesBindings/ClusterRolesBindings zenye idhini zaidi kuliko zile walizonazo, kwa hivyo wakiepuka ulinzi wa Kubernetes dhidi ya tabia hii.
container.roleBindings.create
na/au container.roleBindings.update
AU container.clusterRoleBindings.create
na/au container.clusterRoleBindings.update
kwa mtiririko huo pia ni zaidi zinahitajika ili kutekeleza vitendo hivyo vya kupandisha hadhi.
container.cronJobs.create
| container.cronJobs.update
| container.daemonSets.create
| container.daemonSets.update
| container.deployments.create
| container.deployments.update
| container.jobs.create
| container.jobs.update
| container.pods.create
| container.pods.update
| container.replicaSets.create
| container.replicaSets.update
| container.replicationControllers.create
| container.replicationControllers.update
| container.scheduledJobs.create
| container.scheduledJobs.update
| container.statefulSets.create
| container.statefulSets.update
Ruhusa hizi zote zitakuruhusu kuunda au kupdate rasilimali ambapo unaweza kufafanua pod. Kwa kufafanua pod unaweza kueleza SA ambayo itakuwa imeunganishwa na picha ambayo itakuwa inayoendeshwa, hivyo unaweza kuendesha picha ambayo itakuwa inatoa token ya SA kwa seva yako ikikuruhusu kupandisha hadhi kwa akaunti yoyote ya huduma. Kwa maelezo zaidi angalia:
Kwa kuwa tuko katika mazingira ya GCP, pia utaweza kupata nodepool GCP SA kutoka kwa huduma ya metadata na kupandisha hadhi katika GCP (kwa kawaida SA ya kompyuta inatumika).
container.secrets.get
| container.secrets.list
Kama ilivyoelezwa katika ukurasa huu,kwa ruhusa hizi unaweza kusoma tokens za SAs zote za kubernetes, hivyo unaweza kupandisha hadhi kwao.
container.pods.exec
Kwa ruhusa hii utaweza kuingia kwenye pods, ambayo inakupa ufikiaji wa Kubernetes SAs zote zinazotembea katika pods ili kupandisha hadhi ndani ya K8s, lakini pia utaweza kuiba GCP Service Account ya NodePool, ukipandisha hadhi katika GCP.
container.pods.portForward
Kama ilivyoelezwa katika ukurasa huu, kwa ruhusa hizi unaweza kufikia huduma za ndani zinazotembea katika pods ambazo zinaweza kukuruhusu kupandisha hadhi katika Kubernetes (na katika GCP ikiwa kwa namna fulani utaweza kuzungumza na huduma ya metadata).
container.serviceAccounts.createToken
Kwa sababu ya jina la ruhusa, inaonekana kama itakuruhusu kuunda tokens za K8s Service Accounts, hivyo utaweza kupandisha hadhi kwa SA yoyote ndani ya Kubernetes. Hata hivyo, sikuweza kupata kiunganishi chochote cha API cha kukitumia, hivyo nijulishe ikiwa utakipata.
container.mutatingWebhookConfigurations.create
| container.mutatingWebhookConfigurations.update
Ruhusa hizi zinaweza kukuruhusu kupandisha hadhi katika Kubernetes, lakini zaidi ya uwezekano, unaweza kuzitumia vibaya ili kuendelea kuwepo katika klasta. Kwa maelezo zaidi fuata kiungo hiki.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)