GCP - Container Privesc
Reading time: 5 minutes
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 kusanya akreditivu za kundi la Kubernetes kwa kutumia kitu kama:
gcloud container clusters get-credentials <cluster_name> --zone <zone>
Bila ruhusa za ziada, ithibati ni za msingi sana kwani unaweza tu kuorodhesha baadhi ya rasilimali, lakini ni muhimu kupata makosa ya usanidi katika mazingira.
note
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:
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 kawaida inaepusha wakala kuwa na uwezo wa kuunda au k updating Roles na ClusterRoles zenye idhini zaidi kuliko zile ambazo wakala ana. Hata hivyo, wakala wa GCP mwenye ruhusa hizo atakuwa na uwezo wa kuunda/update 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 k updating 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/update 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 kuboresha rasilimali ambapo unaweza kufafanua pod. Kwa kufafanua pod unaweza kueleza SA ambayo itakuwa imeunganishwa na picha ambayo itakuwa inayoendeshwa, kwa 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 zinazokimbia 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 zinazokimbia 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 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.
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.