
Helm — un manager de pachete pentru Kubernetes, ceva similar cu apt-get Ubuntu. În această notă, vom vedea versiunea anterioară a helm (v2) cu serviciul tiller, instalat implicit, prin care vom accesa clusterul.
Să pregătim clusterul, pentru aceasta vom rula comanda:
kubectl run --rm --restart=Never -it --image=madhuakula/k8s-goat-helm-tiller -- bash![]()
Demonstratie
- Dacă nu se configurează nimic suplimentar, helm v2 pornește serviciul tiller, care are RBAC cu drepturi complete de administrator pentru cluster.
- După instalare în namespace-ul
kube-systemaparetiller-deploy, de asemenea, se deschide portul 44134, legat de 0.0.0.0. Acest lucru se poate verifica folosind telnet.
$ telnet tiller-deploy.kube-system 44134
- Acum ne putem conecta la serviciul tiller. Vom folosi binarul helm pentru a desfășura operațiuni în comunicarea cu serviciul tiller:
$ helm --host tiller-deploy.kube-system:44134 version![]()
- Vom încerca să obținem secretele clusterului Kubernetes din namespace-ul
kube-system:
$ kubectl get secrets -n kube-system![]()
- Acum putem crea propriul nostru chart, în care vom crea un rol cu drepturi de administrator și vom aloca acest rol contului de serviciu implicit. Folosind tokenul de la acest cont de serviciu, am obținut acces complet în clusterul nostru.
$ helm --host tiller-deploy.kube-system:44134 install /pwnchart
- Acum, când
pwncharta fost desfășurat, contul de serviciu implicit are acces administrativ complet. Să verificăm din nou obținerea secretelor dinkube-system
kubectl get secrets -n kube-system
Executarea cu succes a acestui scenariu depinde de modul în care a fost desfășurat tiller, uneori, administratorii îl desfășoară în namespace-uri separate cu alte privilegii. Helm 3 nu este expus acestor vulnerabilități, deoarece nu include tiller.
Nota translatorului: utilizarea politicilor de rețea pentru filtrarea traficului în cluster ajută la protejarea împotriva vulnerabilităților de acest tip.
Sursa: habr.com
