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
Bu izin, Kubernetes kümesi için kimlik bilgilerini toplamak için bir şey kullanmaya olanak tanır:
Ek izinler olmadan, kimlik bilgileri oldukça temel olup bazı kaynakları listeleyebilirsiniz, ancak bu, ortamda yanlış yapılandırmaları bulmak için faydalıdır.
Kubernetes kümelerinin özel olarak yapılandırılabileceğini unutmayın, bu da Kube-API sunucusuna İnternet üzerinden erişimi engelleyecektir.
Bu izne sahip değilseniz, yine de kümeye erişebilirsiniz, ancak kümelerin bilgileriyle kendi kubectl yapılandırma dosyanızı oluşturmanız gerekir. Yeni oluşturulan bir dosya şöyle görünür:
container.roles.escalate
| container.clusterRoles.escalate
Kubernetes varsayılan olarak prensiplerin daha fazla izin ile Roller ve ClusterRoller oluşturmasını veya güncellemesini engeller. Ancak, bu izinlere sahip bir GCP prensibi, sahip olduğu izinlerden daha fazla izinle Roller/ClusterRoller oluşturup/güncelleyebilir, böylece Kubernetes'in bu davranışa karşı korumasını etkili bir şekilde aşar.
container.roles.create
ve/veya container.roles.update
veya container.clusterRoles.create
ve/veya container.clusterRoles.update
sırasıyla bu ayrıcalık yükseltme eylemlerini gerçekleştirmek için gereklidir.
container.roles.bind
| container.clusterRoles.bind
Kubernetes varsayılan olarak prensiplerin daha fazla izin vermek için RoleBindings ve ClusterRoleBindings oluşturmasını veya güncellemesini engeller. Ancak, bu izinlere sahip bir GCP prensibi, sahip olduğu izinlerden daha fazla izinle RoleBindings/ClusterRoleBindings oluşturup/güncelleyebilir, böylece Kubernetes'in bu davranışa karşı korumasını etkili bir şekilde aşar.
container.roleBindings.create
ve/veya container.roleBindings.update
veya container.clusterRoleBindings.create
ve/veya container.clusterRoleBindings.update
sırasıyla bu ayrıcalık yükseltme eylemlerini gerçekleştirmek için de gereklidir.
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
Tüm bu izinler, bir kaynak oluşturmanıza veya güncellemenize olanak tanıyacak ve burada bir pod tanımlayabilirsiniz. Bir pod tanımlayarak, eklenecek SA ve çalıştırılacak görüntüyi belirleyebilirsiniz, bu nedenle SA'nın token'ını sunucunuza dışa aktaracak bir görüntü çalıştırabilirsiniz, bu da size herhangi bir hizmet hesabına yükselme imkanı tanır. Daha fazla bilgi için kontrol edin:
Bir GCP ortamında olduğumuz için, metadata hizmetinden nodepool GCP SA'yı da alabileceksiniz ve GCP'de ayrıcalıkları yükseltebileceksiniz (varsayılan olarak compute SA kullanılır).
container.secrets.get
| container.secrets.list
Bu sayfada açıklandığı gibi bu izinlerle, tüm Kubernetes SA'larının token'larını okuyabilirsiniz, böylece onlara yükselme yapabilirsiniz.
container.pods.exec
Bu izinle, pod'lara exec yapabileceksiniz, bu da size Kubernetes'te çalışan tüm SA'lara erişim sağlar ve K8s içinde ayrıcalıkları yükseltmenizi sağlar, ayrıca NodePool'un GCP Hizmet Hesabını çalma imkanı da verir, bu da GCP'de ayrıcalıkları yükseltir.
container.pods.portForward
Bu sayfada açıklandığı gibi, bu izinlerle, pod'larda çalışan yerel hizmetlere erişebilirsiniz, bu da size Kubernetes'te ayrıcalıkları yükseltme imkanı verebilir (ve GCP'de, metadata hizmetiyle bir şekilde iletişim kurmayı başarırsanız).
container.serviceAccounts.createToken
İznin adı nedeniyle, K8s Hizmet Hesaplarının token'larını oluşturmanıza izin verecek gibi görünüyor, böylece Kubernetes içinde herhangi bir SA'ya ayrıcalık yükseltebileceksiniz. Ancak, bunu kullanmak için herhangi bir API uç noktası bulamadım, bu yüzden bulursanız bana bildirin.
container.mutatingWebhookConfigurations.create
| container.mutatingWebhookConfigurations.update
Bu izinler, Kubernetes'te ayrıcalıkları yükseltmenize olanak tanıyabilir, ancak daha muhtemel olarak, bunları kümeye kalıcı hale gelmek için kötüye kullanabilirsiniz. Daha fazla bilgi için bu bağlantıyı takip edin.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)