GCP - Containers, GKE & Composer Enum

Jifunze kuhusu udukuzi wa AWS kutoka sifuri hadi shujaa na htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)!

Njia nyingine za kusaidia HackTricks:

Kontena

Katika kontena za GCP unaweza kupata huduma nyingi za msingi za 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>

Kupanda kwa Mamlaka

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

pageGCP - Container Privesc

Mabwawa ya Node

Hizi ni mabwawa ya mashine (nodes) ambayo hufanya kundi la 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>

Composer

Hii ni toleo lililosimamiwa la Airflow la GCP.

gcloud composer environments list --locations <loc>
gcloud composer environments describe --location <loc> <environment>s

Privesc

Kwenye ukurasa ufuatao unaweza kuangalia jinsi ya kutumia ruhusa za composer kukuza mamlaka:

pageGCP - Composer Privesc

Kubernetes

Kwa habari kuhusu ni nini Kubernetes angalia ukurasa huu:

pageKubernetes Pentesting

Kwanza, unaweza kuangalia kuona ikiwa kuna mizunguko yoyote ya Kubernetes 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.

Marakaribisha hili limekamilika, unaweza jaribu amri ifuatayo kupata usanidi wa kikundi.

kubectl cluster-info

Unaweza kusoma zaidi kuhusu gcloud kwa kontena hapa.

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

Ukarabati wa Mamlaka ya TLS Boostrap

Awali, 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 kwenye metadata, ambayo inapatikana kwa yeyote tu kwa kudhibiti kipande.

Mbinu iliyotumika inaelezwa katika machapisho yafuatayo:

Na chombo hiki kiliumbwa kwa kusudi la 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 iligundulika anuani ya Kubelet API inayopatikana kutoka kwa kipande ndani ya GKE ikitoa maelezo ya kipande kinachotumika:

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

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

Last updated