Pentesting Kubernetes Services
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Kubernetes koristi nekoliko specifičnih mrežnih usluga koje možete pronaći izložene internetu ili u internoj mreži kada kompromitujete jedan pod.
Jedan način može biti pretraga za Identity LIKE "k8s.%.com"
na crt.sh da biste pronašli poddomene povezane sa kubernetesom. Drugi način može biti pretraga "k8s.%.com"
na github-u i pretraga za YAML datotekama koje sadrže ovu string.
Može biti korisno da razumete kako Kubernetes može izložiti usluge javno kako biste ih pronašli:
Exposing Services in KubernetesSledeći portovi mogu biti otvoreni u Kubernetes klasteru:
443/TCP
kube-apiserver
Kubernetes API port
2379/TCP
etcd
6666/TCP
etcd
etcd
4194/TCP
cAdvisor
Metrike kontejnera
6443/TCP
kube-apiserver
Kubernetes API port
8443/TCP
kube-apiserver
Minikube API port
8080/TCP
kube-apiserver
Nesiguran API port
10250/TCP
kubelet
HTTPS API koji omogućava pristup u punom režimu
10255/TCP
kubelet
Neautentifikovani samo za čitanje HTTP port: podovi, aktivni podovi i stanje čvora
10256/TCP
kube-proxy
Kube Proxy server za proveru zdravlja
9099/TCP
calico-felix
Server za proveru zdravlja za Calico
6782-4/TCP
weave
Metrike i krajnje tačke
30000-32767/TCP
NodePort
Proxy za usluge
44134/TCP
Tiller
Helm usluga koja sluša
Ovo je API Kubernetes usluga sa kojom administratori obično komuniciraju koristeći alat kubectl
.
Uobičajeni portovi: 6443 i 443, ali takođe 8443 u minikube i 8080 kao nesiguran.
Proverite sledeću stranicu da biste saznali kako da dobijete osetljive podatke i izvršite osetljive radnje razgovarajući sa ovom uslugom:
Kubernetes EnumerationOva usluga radi na svakoj čvoru klastera. To je usluga koja će kontrolisati podove unutar čvora. Razgovara sa kube-apiserver.
Ako pronađete ovu uslugu izloženu, možda ste pronašli neautentifikovani RCE.
Ako je odgovor Unauthorized
, onda je potrebna autentifikacija.
Ako možete da nabrojite čvorove, možete dobiti listu kubelet krajnjih tačaka sa:
Možete zloupotrebiti ovu uslugu da eskalirate privilegije unutar Kubernetes-a:
Usluga korisna za prikupljanje metrika.
Kada je port izložen na svim čvorovima putem NodePort, isti port je otvoren na svim čvorovima, proksirajući saobraćaj u deklarisanu Service. Po defaultu, ovaj port će biti u opsegu 30000-32767. Tako da nove neproverene usluge mogu biti dostupne putem tih portova.
Anonimni pristup kube-apiserver API krajnjim tačkama nije dozvoljen. Ali možete proveriti neke krajnje tačke:
ETCD čuva tajne klastera, konfiguracione datoteke i više osetljivih podataka. Po definiciji, ETCD ne može biti pristupljen anonimno, ali uvek je dobro proveriti.
Ako se ETCD može pristupiti anonimno, možda ćete morati da koristite etcdctl alat. Sledeća komanda će dobiti sve ključeve koji su sačuvani:
The Kubelet documentation objašnjava da je podrazumevano anonimni pristup usluzi dozvoljen:
Omogućava anonimne zahteve serveru Kubelet. Zahtevi koji nisu odbijeni od strane druge metode autentifikacije tretiraju se kao anonimni zahtevi. Anonimni zahtevi imaju korisničko ime
system:anonymous
, i naziv grupesystem:unauthenticated
Da biste bolje razumeli kako funkcioniše autentifikacija i autorizacija Kubelet API-ja, pogledajte ovu stranicu:
Kubelet Authentication & AuthorizationKubelet usluga API nije dokumentovana, ali izvorni kod se može pronaći ovde, a pronalaženje izloženih krajnjih tačaka je jednostavno kao pokretanje:
Svi zvuče zanimljivo.
Možete koristiti alat Kubeletctl za interakciju sa Kubelet-ima i njihovim krajnjim tačkama.
Ova krajnja tačka prikazuje podove i njihove kontejnere:
Ova tačka omogućava lako izvršavanje koda unutar bilo kog kontejnera:
Da bi se izbegao ovaj napad, kubelet servis treba da se pokreće sa --anonymous-auth false
i servis treba da bude segregiran na mrežnom nivou.
Kada je kubelet port za čitanje izložen, postaje moguće da neovlašćene strane dobiju informacije sa API-ja. Izlaganje ovog porta može dovesti do otkrivanja raznih elemenata konfiguracije klastera. Iako informacije, uključujući imena podova, lokacije internih fajlova i druge konfiguracije, možda nisu kritične, njihovo izlaganje i dalje predstavlja bezbednosni rizik i treba ga izbegavati.
Primer kako se ova ranjivost može iskoristiti uključuje udaljenog napadača koji pristupa određenom URL-u. Navigacijom do http://<external-IP>:10255/pods
, napadač može potencijalno dobiti osetljive informacije iz kubelet-a:
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)