Wir brechen einen Kubernetes-Cluster über Helm v2 tiller

Wir brechen einen Kubernetes-Cluster über Helm v2 tiller

Helm — ein Paketmanager für Kubernetes, ähnlich wie apt-get für Ubuntu. In dieser Notiz werden wir die vorherige Version von Helm (v2) mit dem standardmäßig installierten Tiller-Service sehen, über den wir Zugriff auf den Cluster erhalten.

Bereiten wir den Cluster vor, dafür führen wir den Befehl aus:

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

Wir brechen einen Kubernetes-Cluster über Helm v2 tiller

Demonstration

  • Wenn nichts zusätzlich konfiguriert wird, startet Helm v2 den Tiller-Service, der RBAC mit vollständigen Administratorrechten für den Cluster hat.
  • Nach der Installation im Namespace kube-system erscheint tiller-deploy, wird auch der Port 44134 geöffnet, der an 0.0.0.0 gebunden ist. Dies kann mit Telnet überprüft werden.

$ telnet tiller-deploy.kube-system 44134

Wir brechen einen Kubernetes-Cluster über Helm v2 tiller

  • Jetzt können wir uns mit dem Tiller-Service verbinden. Wir verwenden das Helm-Binary, um Operationen bei der Kommunikation mit dem Tiller-Service durchzuführen:

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

Wir brechen einen Kubernetes-Cluster über Helm v2 tiller

  • Wir versuchen, die Geheimnisse des Kubernetes-Clusters aus dem Namespace zu erhalten kube-system:

$ kubectl get secrets -n kube-system

Wir brechen einen Kubernetes-Cluster über Helm v2 tiller

  • Jetzt können wir unser eigenes Chart erstellen, in dem wir eine Rolle mit Administratorrechten erstellen und diese Rolle dem standardmäßigen Dienstkonto zuweisen. Mit dem Token von diesem Dienstkonto haben wir vollen Zugriff auf unseren Cluster.

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

Wir brechen einen Kubernetes-Cluster über Helm v2 tiller

  • Jetzt, da pwnchart bereitgestellt ist, hat das standardmäßige Dienstkonto vollen administrativen Zugriff. Überprüfen wir erneut den Zugriff auf die Geheimnisse von kube-system

kubectl get secrets -n kube-system

Wir brechen einen Kubernetes-Cluster über Helm v2 tiller

Der erfolgreiche Abschluss dieses Szenarios hängt davon ab, wie Tiller bereitgestellt wurde; manchmal setzen Administratoren ihn in einem separaten Namespace mit anderen Berechtigungen ein. Helm 3 ist nicht anfällig für solche Schwachstellen, da es Tiller nicht enthält.

Hinweis des Übersetzers: Die Verwendung von Netzwerkpolitiken zur Filterung des Verkehrs im Cluster hilft, sich vor derartigen Schwachstellen zu schützen.

Quelle: habr.com

60GB SSD 8Gb DDR4