
Helm — gestor de paquetes para Kubernetes, algo así como apt-get para Ubuntu. En esta nota veremos la versión anterior de helm (v2) con el servicio tiller, instalado por defecto, a través del cual accederemos al clúster.
Prepararemos el clúster, para ello ejecutaremos el comando:
kubectl run --rm --restart=Never -it --image=madhuakula/k8s-goat-helm-tiller -- bash![]()
Demostración
- Si no se configura nada adicional, helm v2 ejecuta el servicio tiller, que tiene RBAC con permisos de administrador completo en el clúster.
- Después de la instalación en el namespace
kube-systemaparecetiller-deploy, también se abre el puerto 44134, vinculado a 0.0.0.0. Esto se puede comprobar con telnet.
$ telnet tiller-deploy.kube-system 44134
- Ahora se puede conectar al servicio tiller. Usaremos el binario helm para realizar operaciones al comunicarnos con el servicio tiller:
$ helm --host tiller-deploy.kube-system:44134 version![]()
- Intentemos obtener los secretos del clúster Kubernetes desde el namespace
kube-system:
$ kubectl get secrets -n kube-system![]()
- Ahora podemos crear nuestro propio chart, en el que crearemos un rol con permisos de administrador y asignaremos este rol a la cuenta de servicio predeterminada. Usando el token de esta cuenta de servicio, obtuvimos acceso completo a nuestro clúster.
$ helm --host tiller-deploy.kube-system:44134 install /pwnchart
- Ahora que
pwnchartestá desplegado, la cuenta de servicio predeterminada tiene acceso administrativo completo. Verifiquemos nuevamente la obtención de secretos desdekube-system
kubectl get secrets -n kube-system
La ejecución exitosa de este guion depende de cómo se desplegó tiller, a veces los administradores lo despliegan en un namespace separado con otros privilegios. Helm 3 no está sujeto a estas vulnerabilidades, ya que no tiene tiller.
Nota del traductor: el uso de políticas de red para filtrar el tráfico en el clúster ayuda a protegerse contra vulnerabilidades de este tipo.
Fuente: habr.com
