
Helm — paket menadžer za Kubernetes, nešto poput apt-get za Ubuntu. U ovoj noti ćemo vidjeti prethodnu verziju helma (v2) s servisom tiller, koji je unaprijed postavljen, kroz koji ćemo dobiti pristup klasteru.
Pripremimo klaster, zato pokrenimo naredbu:
kubectl run --rm --restart=Never -it --image=madhuakula/k8s-goat-helm-tiller -- bash![]()
Demonstracija
- Ako ništa dodatno ne konfiguriramo, helm v2 pokreće servis tiller, koji ima RBAC s punim administratorskim pravima na klasteru.
- Nakon instalacije u namespace
kube-systemjavljatiller-deploy, također se otvara port 44134, povezan sa 0.0.0.0. To se može provjeriti koristeći telnet.
$ telnet tiller-deploy.kube-system 44134
- Sada se možemo povezati sa servisom tiller. Koristit ćemo binarnu datoteku helm za izvođenje operacija prilikom komunikacije sa servisom tiller:
$ helm --host tiller-deploy.kube-system:44134 version![]()
- Pokušajmo dobiti tajne klastera Kubernetes iz namespace
kube-system:
$ kubectl get secrets -n kube-system![]()
- Sada možemo stvoriti naš vlastiti chart, u kojem ćemo stvoriti ulogu s pravima administratora i dodijeliti tu ulogu podrazumevanom servisnom računu. Koristeći token iz ove servisne račun, dobili smo potpuni pristup našem klasteru.
$ helm --host tiller-deploy.kube-system:44134 install /pwnchart
- Sada, kada je
pwnchartimplementiran, podrazumna servisna račun ima potpuni pristup kao administrator. Provjerimo još jednom dobivanje tajni izkube-system
kubectl get secrets -n kube-system
Uspešno izvršenje ovog scenarija zavisi od toga kako je tiller implementiran, ponekad ga administratori implementiraju u odvojenom namespace-u s drugim privilegijama. Helm 3 nije podložan takvim ranjivostima, jer ne sadrži tiller.
Napomena prevodioca: korištenje mrežnih politika za filtriranje prometa u klasteru pomaže u zaštiti od ranjivosti ovog tipa.
Izvor: habr.com
