Helm é un xestor de paquetes para Kubernetes, algo así apt-get
para Ubuntu. Nesta nota veremos a versión anterior de helm (v2) co servizo tiller instalado por defecto, a través do cal accederemos ao clúster.
Imos preparar o clúster; para facelo, execute o comando:
kubectl run --rm --restart=Never -it --image=madhuakula/k8s-goat-helm-tiller -- bash
Demostración
- Se non configura nada adicional, helm v2 inicia o servizo tiller, que ten RBAC con dereitos de administrador de clúster completos.
- Despois da instalación no espazo de nomes
kube-system
aparecetiller-deploy
, e tamén abre o porto 44134, ligado a 0.0.0.0. Isto pódese comprobar usando telnet.
$ telnet tiller-deploy.kube-system 44134
- Agora podes conectarte ao servizo de timón. Usaremos o binario de timón para realizar operacións cando nos comuniquemos co servizo de timón:
$ helm --host tiller-deploy.kube-system:44134 version
- Tentemos obter os segredos do clúster de Kubernetes do espazo de nomes
kube-system
:
$ kubectl get secrets -n kube-system
- Agora podemos crear o noso propio gráfico, no que crearemos un rol con dereitos de administrador e asignaremos este rol á conta de servizo predeterminada. Usando o token desta conta de servizo, recibimos acceso total ao noso clúster.
$ helm --host tiller-deploy.kube-system:44134 install /pwnchart
- Agora cando
pwnchart
implementada, a conta de servizo predeterminada ten acceso administrativo completo. Imos comprobar de novo como obter segredos dekube-system
kubectl get secrets -n kube-system
A execución exitosa deste script depende de como se implantou o tiller; ás veces, os administradores implantan nun espazo de nomes separado con privilexios diferentes. Helm 3 non é susceptible a tales vulnerabilidades porque... non hai labra nel.
Nota do tradutor: Usar políticas de rede para filtrar o tráfico nun clúster axuda a protexerse contra este tipo de vulnerabilidades.
Fonte: www.habr.com