GCP - Containers & GKE Enum

Jifunze na zoezi la Kuvamia AWS:Mafunzo ya HackTricks ya Mtaalam wa Timu Nyekundu ya AWS (ARTE) Jifunze na zoezi la Kuvamia GCP: Mafunzo ya HackTricks ya Mtaalam wa Timu Nyekundu ya GCP (GRTE)

Support HackTricks

Kata

Katika kontena za GCP unaweza kupata huduma nyingi zinazotegemea kontena ambazo GCP inatoa, hapa unaweza kuona jinsi ya kutambua zile za kawaida zaidi:

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

Kwenye ukurasa ufuatao unaweza kuangalia jinsi ya kutumia ruhusa za kontena kuboresha mamlaka:

GCP - Container Privesc

Node Pools

Hizi ni dimbwi la mashine (nodes) ambazo hufanya kikundi cha kisasa cha kubernetes.

# 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

Kwa habari kuhusu ni nini Kubernetes angalia ukurasa huu:

Kubernetes Pentesting

Kwanza, unaweza kuangalia kuona kama kuna mizunguko yoyote ya Kubernetes inayoweza kuwepo katika mradi wako.

gcloud container clusters list

Ikiwa una kikundi, unaweza kuwa na gcloud ikisakinisha faili yako ya ~/.kube/config kiotomatiki. Faili hii hutumiwa kuthibitisha utambulisho wako unapotumia kubectl, CLI ya asili ya kuingiliana na vikundi vya K8s. Jaribu agizo hili.

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

Kisha, angalia faili ~/.kube/config ili uone vyeti vilivyozalishwa. Faili hii itatumika kuboresha upya vibali vya ufikiaji kulingana na kitambulisho kile kile ambacho kikao chako cha gcloud kilichopo kinatumia. Hii bila shaka inahitaji ruhusa sahihi kuwekwa.

Marahisi hii ikishasakinishwa, unaweza jaribu amri ifuatayo kupata usanidi wa kikundi.

kubectl cluster-info

Unaweza kusoma zaidi kuhusu gcloud kwa ajili ya vyombo vya kuhifadhi hapa.

Hii ni script rahisi ya kuhesabu kubernetes katika GCP: https://gitlab.com/gitlab-com/gl-security/security-operations/gl-redteam/gcp_k8s_enum

Ukarabati wa Mamlaka ya TLS Boostrap

Kwa kuanza, mbinu hii ya ukarabati wa mamlaka iliruhusu privesc ndani ya kikundi cha GKE ikiruhusu mshambuliaji kuudhibiti kikamilifu.

Hii ni kwa sababu GKE hutoa mamlaka ya TLS Bootstrap katika metadata, ambayo inapatikana na yeyote tu kwa kudhibiti kipodi.

Mbinu iliyotumika inaelezwa katika machapisho yafuatayo:

Na chombo hiki kiliumbwa ili kiotomatiki mchakato: https://github.com/4ARMED/kubeletmein

Hata hivyo, mbinu hii ilidhuru ukweli kwamba kwa mamlaka ya metadata ilikuwa inawezekana kuzalisha CSR (Certificate Signing Request) kwa node mpya, ambayo ilikuwa kuidhinishwa moja kwa moja. Katika jaribio langu niligundua kwamba maombi hayo sasa hayaidhinishwi moja kwa moja tena, kwa hivyo sijui kama mbinu hii bado ni halali.

Siri katika Kubelet API

Katika chapisho hili iligunduliwa anwani ya Kubelet API inayopatikana kutoka ndani ya kipodi katika GKE ikitoa maelezo ya kipodi zinazoendesha:

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

Hata kama API haikubali kuhariri rasilmali, inawezekana kupata habari nyeti kwenye jibu. Endpoint /pods ilipatikana kutumia Kiterunner.

Last updated