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
Ova dozvola omogućava prikupljanje kredencijala za Kubernetes klaster koristeći nešto poput:
Bez dodatnih dozvola, akreditivi su prilično osnovni jer možete samo da nabrojite neke resurse, ali su korisni za pronalaženje pogrešnih konfiguracija u okruženju.
Imajte na umu da kubernetes klasteri mogu biti konfigurisani da budu privatni, što će onemogućiti pristup Kube-API serveru sa Interneta.
Ako nemate ovu dozvolu, i dalje možete pristupiti klasteru, ali morate napraviti svoj vlastiti kubectl konfiguracioni fajl sa informacijama o klasterima. Novi generisani izgleda ovako:
container.roles.escalate
| container.clusterRoles.escalate
Kubernetes po defaultu sprečava principe da mogu da kreiraju ili ažuriraju Uloge i ClusterUloge sa većim dozvolama od onih koje princip ima. Međutim, GCP princip sa tim dozvolama će moći da kreira/ažurira Uloge/ClusterUloge sa većim dozvolama od onih koje poseduje, efikasno zaobilazeći zaštitu Kubernetes-a protiv ovog ponašanja.
container.roles.create
i/ili container.roles.update
ili container.clusterRoles.create
i/ili container.clusterRoles.update
su takođe neophodni za izvođenje tih akcija eskalacije privilegija.
container.roles.bind
| container.clusterRoles.bind
Kubernetes po defaultu sprečava principe da mogu da kreiraju ili ažuriraju RoleBindings i ClusterRoleBindings kako bi dali veće dozvole od onih koje princip ima. Međutim, GCP princip sa tim dozvolama će moći da kreira/ažurira RoleBindings/ClusterRoleBindings sa većim dozvolama od onih koje poseduje, efikasno zaobilazeći zaštitu Kubernetes-a protiv ovog ponašanja.
container.roleBindings.create
i/ili container.roleBindings.update
ili container.clusterRoleBindings.create
i/ili container.clusterRoleBindings.update
su takođe neophodni za izvođenje tih akcija eskalacije privilegija.
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
Sve ove dozvole će vam omogućiti da kreirate ili ažurirate resurs gde možete definisati pod. Definisanjem poda možete navesti SA koji će biti priključen i sliku koja će biti pokrenuta, tako da možete pokrenuti sliku koja će ekstrahovati token SA na vaš server, omogućavajući vam da eskalirate na bilo koji servisni nalog. Za više informacija pogledajte:
Kao što smo u GCP okruženju, takođe ćete moći da dobijete nodepool GCP SA iz metapodataka servisa i eskalirate privilegije u GCP (po defaultu se koristi compute SA).
container.secrets.get
| container.secrets.list
Kao što je objašnjeno na ovoj stranici, sa ovim dozvolama možete čitati tokene svih SA-ova u Kubernetes-u, tako da možete eskalirati na njih.
container.pods.exec
Sa ovom dozvolom moći ćete da izvršite u podovima, što vam daje pristup svim Kubernetes SA-ovima koji rade u podovima da eskalirate privilegije unutar K8s, ali takođe ćete moći da ukradete GCP servisni nalog NodePool-a, eskalirajući privilegije u GCP.
container.pods.portForward
Kao što je objašnjeno na ovoj stranici, sa ovim dozvolama možete pristupiti lokalnim servisima koji rade u podovima koji bi mogli da vam omoguće da eskalirate privilegije u Kubernetes-u (i u GCP ako nekako uspete da komunicirate sa servisom metapodataka).
container.serviceAccounts.createToken
Zbog imena dozvole, izgleda kao da će vam omogućiti da generišete tokene K8s servisnih naloga, tako da ćete moći da eskalirate na bilo koji SA unutar Kubernetes-a. Međutim, nisam mogao da pronađem nijednu API tačku za korišćenje, pa me obavestite ako je pronađete.
container.mutatingWebhookConfigurations.create
| container.mutatingWebhookConfigurations.update
Ove dozvole bi mogle da vam omoguće da eskalirate privilegije u Kubernetes-u, ali verovatnije, mogli biste ih zloupotrebiti da persistirate u klasteru. Za više informacija pratite ovu vezu.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)