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, ithibitisho ni rahisi 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 Kube-API server 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 wakala kuwa na uwezo wa kuunda au kisasisha Roles na ClusterRoles zenye idhini zaidi kuliko zile ambazo wakala ana. Hata hivyo, wakala wa GCP mwenye ruhusa hizo atakuwa na uwezo wa kuunda/kisasisha Roles/ClusterRoles zenye idhini zaidi kuliko zile alizo nazo, kwa hivyo akiepuka 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 wakala kuwa na uwezo wa kuunda au kisasisha RoleBindings na ClusterRoleBindings ili kutoa idhini zaidi kuliko zile ambazo wakala ana. Hata hivyo, wakala wa GCP mwenye ruhusa hizo atakuwa na uwezo wa kuunda/kisasisha RolesBindings/ClusterRolesBindings zenye idhini zaidi kuliko zile alizo nazo, kwa hivyo akiepuka 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 kisasisha 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 unafanikiwa 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 utakiweza.
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)