Helm is een pakketbeheerder voor Kubernetes, zoiets apt-get
voor Ubuntu. In deze notitie zien we de vorige versie van helm (v2) met standaard de tiller-service geïnstalleerd, waarmee we toegang krijgen tot het cluster.
Laten we het cluster voorbereiden; voer hiervoor de opdracht uit:
kubectl run --rm --restart=Never -it --image=madhuakula/k8s-goat-helm-tiller -- bash
demonstratie
- Als u niets extra configureert, start helm v2 de tiller-service, die RBAC heeft met volledige clusterbeheerdersrechten.
- Na installatie in naamruimte
kube-system
komt naar vorentiller-deploy
, en opent ook poort 44134, gebonden aan 0.0.0.0. Dit kan worden gecontroleerd via telnet.
$ telnet tiller-deploy.kube-system 44134
- Nu kunt u verbinding maken met de helmstokservice. We zullen het binaire bestand Helm gebruiken om handelingen uit te voeren tijdens de communicatie met de helmstokservice:
$ helm --host tiller-deploy.kube-system:44134 version
- Laten we proberen de Kubernetes-clustergeheimen uit de naamruimte te halen
kube-system
:
$ kubectl get secrets -n kube-system
- Nu kunnen we ons eigen diagram maken, waarin we een rol met beheerdersrechten zullen aanmaken en deze rol zullen toewijzen aan het standaard serviceaccount. Met behulp van het token uit dit serviceaccount hebben we volledige toegang gekregen tot ons cluster.
$ helm --host tiller-deploy.kube-system:44134 install /pwnchart
- Nu wanneer
pwnchart
geïmplementeerd, heeft het standaardserviceaccount volledige beheerderstoegang. Laten we opnieuw kijken hoe we geheimen kunnen verkrijgenkube-system
kubectl get secrets -n kube-system
Succesvolle uitvoering van dit script hangt af van hoe tiller is geïmplementeerd; soms implementeren beheerders het in een aparte naamruimte met verschillende rechten. Helm 3 is niet gevoelig voor dergelijke kwetsbaarheden omdat... er zit geen helmstok in.
Noot van de vertaler: Het gebruik van netwerkbeleid om verkeer in een cluster te filteren, helpt beschermen tegen dit soort kwetsbaarheden.
Bron: www.habr.com