GCP - Container Privesc

Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)!

Njia nyingine za kusaidia HackTricks:

kontena

container.clusters.get

Ruhusa hii inaruhusu kukusanya vibali vya 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 mizunguko isiyo sahihi katika mazingira.

Tafadhali elewa kwamba vivutio vya kubernetes vinaweza kuwekwa kwa faragha, hivyo kuzuia upatikanaji wa seva ya Kube-API kutoka kwa 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 mabalozi kutoka kuweza kuunda au kusasisha Vyeo na Vyeo vya Kikundi na mamlaka zaidi kuliko zile ambazo balozi anayo. Walakini, balozi wa GCP mwenye mamlaka hayo ataweza kuunda/kusasisha 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 kukuza mamlaka.

container.roles.bind | container.clusterRoles.bind

Kubernetes kwa chaguo-msingi inazuia mabalozi kutoka kuweza kuunda au kusasisha RoleBindings na ClusterRoleBindings ili kutoa mamlaka zaidi kuliko zile ambazo balozi anayo. Walakini, balozi wa GCP mwenye mamlaka hayo ataweza kuunda/kusasisha RoleBindings/ClusterRoleBindings 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 ni muhimu pia kufanya vitendo hivyo vya kukuza 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

Mamlaka hizi zote zitaruhusu kuunda au kusasisha rasilimali ambapo unaweza kuainisha kikasha. Kwa kufafanua kikasha, unaweza kutaja SA ambayo itakuwa imeambatanishwa na picha ambayo itakuwa inaendeshwa, hivyo unaweza kuendesha picha ambayo ita kuvuja kitufe cha SA kwenye seva yako ikiruhusu wewe kukuza hadi 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 kukuza mamlaka katika GCP (kwa chaguo-msingi SA ya kuhesabu hutumiwa).

container.secrets.get | container.secrets.list

Kama ilivyoelezwa katika ukurasa huu, kwa mamlaka hizi unaweza kusoma vitufe vya SAs zote za kubernetes, hivyo unaweza kukuza hadi kwao.

container.pods.exec

Kwa mamlaka haya utaweza kuingia kwenye podi, ambayo inakupa upatikanaji wa SAs za Kubernetes zinazoendeshwa kwenye podi kukuza mamlaka ndani ya K8s, lakini pia utaweza kuiba SA ya Huduma ya GCP ya NodePool, kukuza mamlaka katika GCP.

container.pods.portForward

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

container.serviceAccounts.createToken

Kutokana na jina la mamlaka, inaonekana itakuruhusu kuzalisha vitufe vya Akaunti za Huduma za K8s, hivyo utaweza kupanda hadi SA yoyote ndani ya Kubernetes. Walakini, sikupata mwisho wa API wa kutumia hii, hivyo niambie ikiwa utaipata.

container.mutatingWebhookConfigurations.create | container.mutatingWebhookConfigurations.update

Mamlaka haya yanaweza kuruhusu kukuza mamlaka katika Kubernetes, lakini zaidi inawezekana, unaweza kuzitumia vibaya kwa kudumu katika kikundi. Kwa habari zaidi fuata kiungo hiki.

Last updated