GCP - Container Privesc

Support HackTricks

kontena

container.clusters.get

Ruhusa hii inaruhusu kukusanya siri za kikundi cha Kubernetes kwa kutumia kitu kama:

gcloud container clusters get-credentials <cluster_name> --zone <zone>

Bila idhini ya ziada, sifa ni za msingi ambapo unaweza kuorodhesha baadhi ya rasilimali, lakini ni muhimu kwa kupata mipangilio isiyofaa katika mazingira.

Tafadhali elewa kwamba vitalu vya kubernetes vinaweza kuwa vimepangwa kuwa binafsi, hivyo kuzuia upatikanaji wa seva ya Kube-API kutoka kwenye Mtandao.

Ikiwa huna idhini hii, bado unaweza kupata kikundi, lakini unahitaji kuunda faili yako ya kikokoto cha kubectl na habari za vikundi. Moja iliyoundwa hivi karibuni inaonekana hivi:

apiVersion: v1
clusters:
- cluster:
certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUVMRENDQXBTZ0F3SUJBZ0lRRzNaQmJTSVlzeVRPR1FYODRyNDF3REFOQmdrcWhraUc5dzBCQVFzRkFEQXYKTVMwd0t3WURWUVFERXlRMk9UQXhZVEZoWlMweE56ZGxMVFF5TkdZdE9HVmhOaTAzWVdFM01qVmhNR05tTkdFdwpJQmNOTWpJeE1qQTBNakl4T1RJMFdoZ1BNakExTWpFeE1qWXlNekU1TWpSYU1DOHhMVEFyQmdOVkJBTVRKRFk1Ck1ERmhNV0ZsTFRFM04yVXROREkwWmkwNFpXRTJMVGRoWVRjeU5XRXdZMlkwWVRDQ0FhSXdEUVlKS29aSWh2Y04KQVFFQkJRQURnZ0dQQURDQ0FZb0NnZ0dCQU00TWhGemJ3Y3VEQXhiNGt5WndrNEdGNXRHaTZmb0pydExUWkI4Rgo5TDM4a2V2SUVWTHpqVmtoSklpNllnSHg4SytBUHl4RHJQaEhXMk5PczFNMmpyUXJLSHV6M0dXUEtRUmtUWElRClBoMy9MMDVtbURwRGxQK3hKdzI2SFFqdkE2Zy84MFNLakZjRXdKRVhZbkNMMy8yaFBFMzdxN3hZbktwTWdKVWYKVnoxOVhwNEhvbURvOEhUN2JXUTJKWTVESVZPTWNpbDhkdDZQd3FUYmlLNjJoQzNRTHozNzNIbFZxaiszNy90RgpmMmVwUUdFOG90a0VVOFlHQ3FsRTdzaVllWEFqbUQ4bFZENVc5dk1RNXJ0TW8vRHBTVGNxRVZUSzJQWk1rc0hyCmMwbGVPTS9LeXhnaS93TlBRdW5oQ2hnRUJIZTVzRmNxdmRLQ1pmUFovZVI1Qk0vc0w1WFNmTE9sWWJLa2xFL1YKNFBLNHRMVmpiYVg1VU9zMUZIVXMrL3IyL1BKQ2hJTkRaVTV2VjU0L1c5NWk4RnJZaUpEYUVGN0pveXJvUGNuMwpmTmNjQ2x1eGpOY1NsZ01ISGZKRzZqb0FXLzB0b2U3ek05RHlQOFh3NW44Zm5lQm5aVTFnYXNKREZIYVlZbXpGCitoQzFETmVaWXNibWNxOGVPVG9LOFBKRjZ3SURBUUFCbzBJd1FEQU9CZ05WSFE4QkFmOEVCQU1DQWdRd0R3WUQKVlIwVEFRSC9CQVV3QXdFQi96QWRCZ05WSFE0RUZnUVU5UkhvQXlxY3RWSDVIcmhQZ1BjYzF6Sm9kWFV3RFFZSgpLb1pJaHZjTkFRRUxCUUFEZ2dHQkFLbnp3VEx0QlJBVE1KRVB4TlBNbmU2UUNqZDJZTDgxcC9oeVc1eWpYb2w5CllkMTRRNFVlVUJJVXI0QmJadzl0LzRBQ3ZlYUttVENaRCswZ2wyNXVzNzB3VlFvZCtleVhEK2I1RFBwUUR3Z1gKbkJLcFFCY1NEMkpvZ29tT3M3U1lPdWVQUHNrODVvdWEwREpXLytQRkY1WU5ublc3Z1VLT2hNZEtKcnhuYUVGZAprVVl1TVdPT0d4U29qVndmNUsyOVNCbGJ5YXhDNS9tOWkxSUtXV2piWnZPN0s4TTlYLytkcDVSMVJobDZOSVNqCi91SmQ3TDF2R0crSjNlSjZneGs4U2g2L28yRnhxZWFNdDladWw4MFk4STBZaGxXVmlnSFMwZmVBUU1NSzUrNzkKNmozOWtTZHFBYlhPaUVOMzduOWp2dVlNN1ZvQzlNUk1oYUNyQVNhR2ZqWEhtQThCdlIyQW5iQThTVGpQKzlSMQp6VWRpK3dsZ0V4bnFvVFpBcUVHRktuUTlQcjZDaDYvR0xWWStqYXhuR3lyUHFPYlpNZTVXUDFOUGs4NkxHSlhCCjc1elFvanEyRUpxanBNSjgxT0gzSkxOeXRTdmt4UDFwYklxTzV4QUV0OWxRMjh4N28vbnRuaWh1WmR6M0lCRU8KODdjMDdPRGxYNUJQd0hIdzZtKzZjUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
server: https://34.123.141.28
name: gke_security-devbox_us-central1_autopilot-cluster-1
contexts:
- context:
cluster: gke_security-devbox_us-central1_autopilot-cluster-1
user: gke_security-devbox_us-central1_autopilot-cluster-1
name: gke_security-devbox_us-central1_autopilot-cluster-1
current-context: gke_security-devbox_us-central1_autopilot-cluster-1
kind: Config
preferences: {}
users:
- name: gke_security-devbox_us-central1_autopilot-cluster-1
user:
auth-provider:
config:
access-token: <access token>
cmd-args: config config-helper --format=json
cmd-path: gcloud
expiry: "2022-12-06T01:13:11Z"
expiry-key: '{.credential.token_expiry}'
token-key: '{.credential.access_token}'
name: gcp

container.roles.escalate | container.clusterRoles.escalate

Kubernetes kwa chaguo-msingi inazuia wakuu kutoka kuweza kuunda au kuboresha Vyeo na Vyeo vya Kikundi na mamlaka zaidi kuliko zile ambazo kiongozi anayo. Walakini, kiongozi wa GCP mwenye mamlaka hayo ataweza kuunda/kuboresha Vyeo/Vyeo vya Kikundi na mamlaka zaidi kuliko zile alizokuwa nazo, hivyo kukiuka kinga ya Kubernetes dhidi ya tabia hii.

container.roles.create na/au container.roles.update AU container.clusterRoles.create na/au container.clusterRoles.update mtawalia pia ni muhimu kufanya vitendo hivyo vya kuinua mamlaka.

container.roles.bind | container.clusterRoles.bind

Kubernetes kwa chaguo-msingi inazuia wakuu kutoka kuweza kuunda au kuboresha Unganisho wa Vyeo na Unganisho wa Vyeo vya Kikundi ili kutoa mamlaka zaidi kuliko zile ambazo kiongozi anazo. Walakini, kiongozi wa GCP mwenye mamlaka hayo ataweza kuunda/kuboresha Unganisho wa Vyeo/Unganisho wa Vyeo vya Kikundi na mamlaka zaidi kuliko zile alizokuwa nazo, hivyo kukiuka kinga ya Kubernetes dhidi ya tabia hii.

container.roleBindings.create na/au container.roleBindings.update AU container.clusterRoleBindings.create na/au container.clusterRoleBindings.update mtawalia pia ni muhimu kufanya vitendo hivyo vya kuinua mamlaka.

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 kuboresha rasilimali ambapo unaweza kuainisha kikasha. Kwa kufafanua kikasha unaweza kuainisha SA ambayo itakuwa imeambatanishwa na picha ambayo itakuwa inaendeshwa, hivyo unaweza kuendesha picha ambayo ita kuvuja kitufe cha SA kwenye seva yako ikikuruhusu kuinua hadhi kwenda kwa akaunti yoyote ya huduma. Kwa habari zaidi angalia:

Kwa kuwa tuko katika mazingira ya GCP, pia utaweza kupata SA ya nodepool ya GCP kutoka kwa huduma ya metadata na kuinua mamlaka katika GCP (kwa chaguo-msingi SA ya kuhesabu hutumiwa).

container.secrets.get | container.secrets.list

Kama ilivyoelezwa katika ukurasa huu, kwa ruhusa hizi unaweza kusoma vitufe vya SAs zote za kubernetes, hivyo unaweza kuinua hadhi kwao.

container.pods.exec

Kwa ruhusa hii utaweza kuingia kwenye podi, ambayo itakupa upatikanaji wa SAs za Kubernetes zinazoendeshwa kwenye podi kuinua mamlaka ndani ya K8s, lakini pia utaweza kuiba SA ya Huduma ya GCP ya NodePool, kuinua mamlaka katika GCP.

container.pods.portForward

Kama ilivyoelezwa katika ukurasa huu, kwa ruhusa hizi unaweza kufikia huduma za ndani zinazoendeshwa kwenye podi ambazo zinaweza kukuruhusu kuinua mamlaka katika Kubernetes (na katika GCP ikiwa kwa njia fulani unaweza kuongea na huduma ya metadata).

container.serviceAccounts.createToken

Kutokana na jina la ruhusa, inaonekana itakuruhusu kuzalisha vitufe vya Akaunti za Huduma za K8s, hivyo utaweza kuinua hadhi kwenda kwa SA yoyote ndani ya Kubernetes. Walakini, sikupata mwisho wa API wa kutumia, hivyo niambie ukikutana nao.

container.mutatingWebhookConfigurations.create | container.mutatingWebhookConfigurations.update

Ruhusa hizi zinaweza kukuruhusu kuinua mamlaka katika Kubernetes, lakini zaidi uwezekano, unaweza kuzitumia vibaya kwa kudumu katika kikundi. Kwa habari zaidi fuata kiungo hiki.

Last updated