Helm adalah manajer paket untuk Kubernetes, kira-kira apt-get
untuk Ubuntu. Dalam catatan ini kita akan melihat versi helm (v2) sebelumnya dengan layanan anakan diinstal secara default, yang melaluinya kita akan mengakses cluster.
Mari siapkan clusternya; untuk melakukan ini, jalankan perintah:
kubectl run --rm --restart=Never -it --image=madhuakula/k8s-goat-helm-tiller -- bash
Demonstrasi
- Jika Anda tidak mengonfigurasi tambahan apa pun, helm v2 memulai layanan anakan, yang memiliki RBAC dengan hak administrator klaster penuh.
- Setelah instalasi di namespace
kube-system
muncultiller-deploy
, dan juga membuka port 44134, terikat ke 0.0.0.0. Ini dapat diperiksa menggunakan telnet.
$ telnet tiller-deploy.kube-system 44134
- Sekarang Anda dapat terhubung ke layanan anakan. Kami akan menggunakan biner helm untuk melakukan operasi saat berkomunikasi dengan layanan anakan:
$ helm --host tiller-deploy.kube-system:44134 version
- Mari kita coba mendapatkan rahasia cluster Kubernetes dari namespace
kube-system
:
$ kubectl get secrets -n kube-system
- Sekarang kita dapat membuat bagan kita sendiri, di mana kita akan membuat peran dengan hak administrator dan menetapkan peran ini ke akun layanan default. Dengan menggunakan token dari akun layanan ini, kami menerima akses penuh ke cluster kami.
$ helm --host tiller-deploy.kube-system:44134 install /pwnchart
- Sekarang kapan
pwnchart
disebarkan, akun layanan default memiliki akses administratif penuh. Mari kita periksa lagi bagaimana cara mendapatkan rahasiakube-system
kubectl get secrets -n kube-system
Keberhasilan eksekusi skrip ini bergantung pada bagaimana anakan diterapkan; terkadang administrator menerapkannya dalam namespace terpisah dengan hak istimewa berbeda. Helm 3 tidak rentan terhadap kerentanan seperti itu karena... tidak ada anakan di dalamnya.
Catatan penerjemah: Menggunakan kebijakan jaringan untuk memfilter lalu lintas di cluster membantu melindungi terhadap jenis kerentanan ini.
Sumber: www.habr.com