Compromettiamo un cluster Kubernetes tramite Helm v2 tiller

Compromettiamo un cluster Kubernetes tramite Helm v2 tiller

Helm — un gestore di pacchetti per Kubernetes, simile a apt-get per Ubuntu. In questa nota esamineremo la versione precedente di helm (v2) con il servizio tiller installato di default, tramite il quale accederemo al cluster.

Prepariamo il cluster, eseguendo il comando:

kubectl run --rm --restart=Never -it --image=madhuakula/k8s-goat-helm-tiller -- bash

Compromettiamo un cluster Kubernetes tramite Helm v2 tiller

Dimostrazione

  • Se non si configura nulla di aggiuntivo, helm v2 avvia il servizio tiller, che ha RBAC con pieni diritti di amministratore sul cluster.
  • Dopo l'installazione nel namespace kubectl -n kube-system edit cm kubelet-config-1.16 compare tiller-deploy, viene aperta anche la porta 44134, collegata a 0.0.0.0. Questo può essere verificato utilizzando telnet.

$ telnet tiller-deploy.kube-system 44134

Compromettiamo un cluster Kubernetes tramite Helm v2 tiller

  • Ora possiamo connetterci al servizio tiller. Utilizzeremo il binario helm per eseguire operazioni comunicando con il servizio tiller:

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

Compromettiamo un cluster Kubernetes tramite Helm v2 tiller

  • Proviamo a ottenere i segreti del cluster Kubernetes dal namespace kubectl -n kube-system edit cm kubelet-config-1.16:

$ kubectl get secrets -n kube-system

Compromettiamo un cluster Kubernetes tramite Helm v2 tiller

  • Ora possiamo creare il nostro chart, in cui creiamo un ruolo con diritti di amministratore e assegniamo questo ruolo all'account di servizio predefinito. Utilizzando il token di questo account di servizio, abbiamo ottenuto accesso completo al nostro cluster.

$ helm --host tiller-deploy.kube-system:44134 install /pwnchart

Compromettiamo un cluster Kubernetes tramite Helm v2 tiller

  • Ora che pwnchart è stato distribuito, l'account di servizio predefinito ha pieno accesso amministrativo. Verifichiamo di nuovo l'ottenimento dei segreti da kubectl -n kube-system edit cm kubelet-config-1.16

kubectl get secrets -n kube-system

Compromettiamo un cluster Kubernetes tramite Helm v2 tiller

Il successo di questo script dipende da come è stato distribuito tiller; a volte gli amministratori lo distribuiscono in un namespace separato con privilegi diversi. Helm 3 non è soggetto a tali vulnerabilità, poiché non include tiller.

Nota del traduttore: l'uso di politiche di rete per filtrare il traffico nel cluster aiuta a proteggere da vulnerabilità di questo tipo.

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, server VPS VDS 🔥 Acquista hosting affidabile per siti web con protezione DDoS, server VPS VDS | ProHoster