GCP - Container Privesc
Tip
Jifunze na fanya mazoezi ya AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Jifunze na fanya mazoezi ya Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Angalia mpango wa usajili!
- Jiunge na 💬 kikundi cha Discord au kikundi cha telegram au tufuatilie kwenye Twitter 🐦 @hacktricks_live.
- Shiriki mbinu za hacking kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.
container
container.clusters.get
Ruhusa hii inaruhusu gather credentials for the Kubernetes cluster kwa kutumia kitu kama:
Pata Kubernetes cluster credentials
```bash gcloud container clusters get-credentialsBila ruhusa za ziada, vitambulisho ni vya msingi kabisa kwani unaweza tu kuorodhesha baadhi ya rasilimali, lakini ni muhimu kwa kugundua mipangilio isiyo sahihi katika mazingira.
Note
Kumbuka kwamba kubernetes clusters zinaweza kusanidiwa kuwa za kibinafsi, jambo ambalo litazuia ufikaji wa Kube-API server kutoka kwa Intaneti.
Ikiwa huna ruhusa hii bado unaweza kufikia cluster, lakini unahitaji kuunda kubectl config file yako mwenyewe na taarifa za clusters. Mpya iliyotengenezwa inaonekana kama ifuatavyo:
Mfano wa kubectl config file kwa GKE cluster
```yaml 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:container.roles.escalate | container.clusterRoles.escalate
Kubernetes kwa chaguo-msingi huzuia watambulisho (principals) kuiwezesha kuunda au kusasisha Roles na ClusterRoles zenye ruhusa zaidi kuliko zile mtambulisho ana nazo. Hata hivyo, mtambulisho wa GCP mwenye ruhusa hizo ataweza kuunda/kusasisha Roles/ClusterRoles zenye ruhusa zaidi kuliko alizokuwa nazo, kwa hivyo kuondoa ulinzi wa 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 zinazohitajika ili kutekeleza hatua hizo za kuongezeka kwa ruhusa.
container.roles.bind | container.clusterRoles.bind
Kubernetes kwa chaguo-msingi huzuia watambulisho kutoa uwezo wa kuunda au kusasisha RoleBindings na ClusterRoleBindings ili kutoa ruhusa zaidi kuliko zile mtambulisho ana. Hata hivyo, mtambulisho wa GCP mwenye ruhusa hizo ataweza kuunda/kusasisha RolesBindings/ClusterRolesBindings zenye ruhusa zaidi kuliko alizokuwa nazo, kwa hivyo kuondoa ulinzi wa 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 zinazohitajika ili kutekeleza hatua hizo za kuongezeka kwa ruhusa.
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 zitakuwezesha kuunda au kusasisha rasilimali ambapo unaweza kubainisha pod. Unapobainisha pod unaweza kutaja SA itakayoungwa na image itakayotekelezwa, hivyo unaweza kuendesha image itakayochukua token ya SA na kuituma kwenye server yako ikikuruhusu kuinua kiwango hadi kwa Service Account yoyote.
Kwa taarifa zaidi angalia:
Kwa kuwa tuko katika mazingira ya GCP, pia utaweza kupata nodepool GCP SA kutoka kwa huduma ya metadata na kuongeza ruhusa katika GCP (kwa kawaida compute SA ndio inayotumika).
container.secrets.get | container.secrets.list
Kama ilivyoelezwa kwenye ukurasa huu, kwa ruhusa hizi unaweza kusoma token za SAs zote za Kubernetes, hivyo unaweza kuinua ruhusa kwa kutumia zile token.
container.pods.exec
Kwa ruhusa hii utaweza kufanya exec ndani ya pods, jambo linalokupa ufikiaji kwa SAs zote za Kubernetes zinazotumia pods ili kuinua ruhusa ndani ya K8s, lakini pia utaweza kuiba GCP Service Account ya NodePool, na hivyo kuongeza ruhusa katika GCP.
container.pods.portForward
Kama ilivyoelezwa kwenye ukurasa huu, kwa ruhusa hizi unaweza kupata huduma za ndani zinazokimbia katika pods ambazo zinaweza kukuwezesha kuinua ruhusa katika Kubernetes (na katika GCP ikiwa kwa namna yoyote utaweza kuwasiliana na huduma ya metadata).
container.serviceAccounts.createToken
Kwa sababu ya jina la ruhusa, inaonekana itawezesha kutengeneza tokeni za K8s Service Accounts, hivyo utakuwa na uwezo wa privesc hadi SA yoyote ndani ya Kubernetes. Hata hivyo, sikuweza kupata endpoint ya API ya kuitumia; nijulishe kama uipata.
container.mutatingWebhookConfigurations.create | container.mutatingWebhookConfigurations.update
Ruhusa hizi zinaweza kukuwezesha kuinua ruhusa katika Kubernetes, lakini kwa uwezekano mkubwa unaweza kuzitumia vibaya ili kudumu katika cluster.
Kwa taarifa zaidi fuata kiungo hiki.
Tip
Jifunze na fanya mazoezi ya AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Jifunze na fanya mazoezi ya Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Angalia mpango wa usajili!
- Jiunge na 💬 kikundi cha Discord au kikundi cha telegram au tufuatilie kwenye Twitter 🐦 @hacktricks_live.
- Shiriki mbinu za hacking kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.
HackTricks Cloud

