
Helm — gerenciador de pacotes para Kubernetes, algo como apt-get para Ubuntu. Neste artigo, veremos a versão anterior do Helm (v2) com o serviço Tiller instalado por padrão, através do qual teremos acesso ao cluster.
Prepararemos o cluster, para isso, executaremos o comando:
kubectl run --rm --restart=Never -it --image=madhuakula/k8s-goat-helm-tiller -- bash![]()
Demonstração
- Se nada for configurado adicionalmente, o Helm v2 inicia o serviço Tiller, que possui RBAC com permissões totais de administrador do cluster.
- Após a instalação no namespace
kube-systemaparecetiller-deploy, além disso, uma porta 44134 é aberta, vinculada a 0.0.0.0. Isso pode ser verificado com o telnet.
$ telnet tiller-deploy.kube-system 44134
- Agora podemos nos conectar ao serviço Tiller. Usaremos o binário Helm para realizar operações ao interagir com o serviço Tiller:
$ helm --host tiller-deploy.kube-system:44134 version![]()
- Vamos tentar obter os segredos do cluster Kubernetes do namespace
kube-system:
$ kubectl get secrets -n kube-system![]()
- Agora podemos criar nosso próprio chart, onde criaremos um papel de administrador e atribuiremos esse papel à conta de serviço padrão. Usando o token dessa conta de serviço, obtivemos acesso total ao nosso cluster.
$ helm --host tiller-deploy.kube-system:44134 install /pwnchart
- Agora que
pwnchartestá implantado, a conta de serviço padrão tem acesso administrativo completo. Vamos verificar novamente a obtenção de segredos dekube-system
$ kubectl get secrets -n kube-system
A execução bem-sucedida deste script depende de como o Tiller foi implantado, às vezes os administradores o implantam em um namespace separado com outras permissões. O Helm 3 não está sujeito a essas vulnerabilidades, pois não possui o Tiller.
Nota do tradutor: o uso de políticas de rede para filtrar o tráfego no cluster ajuda a proteger contra vulnerabilidades desse tipo.
Fonte: habr.com
