
Helm - en paketmanager för Kubernetes, ungefär som apt-get för Ubuntu. I denna anteckning kommer vi att se den tidigare versionen av helm (v2) med tjänsten tiller installerad som standard, genom vilken vi får tillgång till klustret.
Låt oss förbereda klustret genom att köra kommandot:
kubectl run --rm --restart=Never -it --image=madhuakula/k8s-goat-helm-tiller -- bash![]()
Demonstration
- Om inget ytterligare konfigureras kör helm v2 tjänsten tiller, som har RBAC med fullständiga administrativa rättigheter till klustret.
- Efter installationen i namespace
kube-systemdyker upptiller-deploy, öppnas också port 44134, som är bunden till 0.0.0.0. Detta kan kontrolleras med telnet.
$ telnet tiller-deploy.kube-system 44134
- Nu kan vi koppla upp oss mot tjänsten tiller. Vi kommer att använda helm-binären för att utföra operationer när vi kommunicerar med tjänsten tiller:
$ helm --host tiller-deploy.kube-system:44134 version![]()
- Vi försöker hämta hemligheterna från Kubernetes-klustret i namespace
kube-system:
$ kubectl get secrets -n kube-system![]()
- Nu kan vi skapa vår egen chart, där vi skapar en roll med administratörsrättigheter och tilldelar denna roll till standardtjänstekontot. Genom att använda token från detta tjänstekonto har vi fått full tillgång till vårt kluster.
$ helm --host tiller-deploy.kube-system:44134 install /pwnchart
- Nu när
pwnchartär distribuerad, har standard tjänstekontot fullständig administrativ tillgång. Vi kontrollerar återigen hämtningen av hemligheter frånkube-system
kubectl get secrets -n kube-system
Att detta skript lyckas beror på hur tiller har distribuerats, ibland distribuerar administratörerna det i ett separat namespace med andra privilegier. Helm 3 är inte sårbart för sådana sårbarheter, eftersom det inte har tiller.
Översättarens anmärkning: användning av nätverkspolicyer för att filtrera trafik i kluster hjälper till att skydda mot sådana sårbarheter.
Källa: habr.com
