GCP - Kontejneri i GKE Enum

Reading time: 5 minutes

tip

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) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks

Kontejneri

U GCP kontejnerima možete pronaći većinu usluga zasnovanih na kontejnerima koje GCP nudi, ovde možete videti kako da enumerišete najčešće:

bash
gcloud container images list
gcloud container images list --repository us.gcr.io/<project-name> #Search in other subdomains repositories
gcloud container images describe <name>
gcloud container subnets list-usable
gcloud container clusters list
gcloud container clusters describe <name>
gcloud container clusters get-credentials [NAME]

# Run a container locally
docker run --rm -ti gcr.io/<project-name>/secret:v1 sh

# Login & Download
sudo docker login -u oauth2accesstoken -p $(gcloud auth print-access-token) https://HOSTNAME
## where HOSTNAME is gcr.io, us.gcr.io, eu.gcr.io, or asia.gcr.io.
sudo docker pull HOSTNAME/<project-name>/<image-name>

Privesc

Na sledećoj stranici možete proveriti kako da zloupotrebite dozvole kontejnera za eskalaciju privilegija:

GCP - Container Privesc

Node Pools

Ovo su bazeni mašina (čvorova) koji čine kubernetes klastere.

bash
# Pool of machines used by the cluster
gcloud container node-pools list --zone <zone> --cluster <cluster>
gcloud container node-pools describe --cluster <cluster> --zone <zone> <node-pool>

Kubernetes

Za informacije o tome šta je Kubernetes, proverite ovu stranicu:

Kubernetes Pentesting

Prvo, možete proveriti da li postoje neki Kubernetes klasteri u vašem projektu.

gcloud container clusters list

Ako imate klaster, možete da omogućite gcloud da automatski konfiguriše vaš ~/.kube/config fajl. Ovaj fajl se koristi za autentifikaciju kada koristite kubectl, nativni CLI za interakciju sa K8s klasterima. Pokušajte ovu komandu.

gcloud container clusters get-credentials [CLUSTER NAME] --region [REGION]

Zatim, pogledajte ~/.kube/config datoteku da vidite generisane akreditive. Ova datoteka će se koristiti za automatsko osvežavanje pristupnih tokena na osnovu iste identitete koju vaša aktivna gcloud sesija koristi. To naravno zahteva odgovarajuće dozvole.

Kada je ovo postavljeno, možete pokušati sledeću komandu da dobijete konfiguraciju klastera.

kubectl cluster-info

Možete pročitati više o gcloud za kontejnere ovde.

Ovo je jednostavan skript za enumeraciju kubernetes-a u GCP: https://gitlab.com/gitlab-com/gl-security/security-operations/gl-redteam/gcp_k8s_enum

TLS Boostrap Privilege Escalation

U početku je ova tehnika eskalacije privilegija omogućila privesc unutar GKE klastera, što je efikasno omogućilo napadaču da potpuno kompromituje.

To je zato što GKE pruža TLS Bootstrap kredencijale u metapodacima, koji su dostupni svima samo kompromitovanjem poda.

Tehnika koja se koristi objašnjena je u sledećim postovima:

I ovaj alat je kreiran da automatizuje proces: https://github.com/4ARMED/kubeletmein

Međutim, tehnika je zloupotrebljavala činjenicu da je sa metapodacima bilo moguće generisati CSR (Zahtev za potpisivanje sertifikata) za novi čvor, koji je bio automatski odobren.
U mom testu sam proverio da ti zahtevi više nisu automatski odobreni, tako da nisam siguran da li je ova tehnika još uvek validna.

Tajne u Kubelet API

U ovom postu otkrivena je Kubelet API adresa dostupna iznutra poda u GKE koja daje detalje o pokrenutim podovima:

curl -v -k http://10.124.200.1:10255/pods

Čak i ako API ne dozvoljava modifikaciju resursa, može biti moguće pronaći osetljive informacije u odgovoru. Endpoint /pods je pronađen korišćenjem Kiterunner.

tip

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) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks