GCP - Containers, GKE & Composer Enum
Contenitori
Nei contenitori GCP puoi trovare la maggior parte dei servizi basati su contenitori offerti da GCP, qui puoi vedere come enumerare i più comuni:
Privesc
Nella pagina seguente puoi controllare come abusare dei permessi del container per ottenere privilegi elevati:
pageGCP - Container PrivescPool di nodi
Questi sono i gruppi di macchine (nodi) che formano i cluster Kubernetes.
Composer
Questa è la versione gestita da GCP di Airflow.
Privesc
Nella pagina seguente puoi controllare come abusare dei permessi di composer per ottenere privilegi elevati:
pageGCP - Composer PrivescKubernetes
Per informazioni su cosa sia Kubernetes, consulta questa pagina:
pageKubernetes PentestingInnanzitutto, puoi verificare se esistono cluster Kubernetes nel tuo progetto.
Se hai un cluster, puoi far sì che gcloud
configuri automaticamente il tuo file ~/.kube/config
. Questo file viene utilizzato per autenticarti quando usi kubectl, l'interfaccia della riga di comando nativa per interagire con i cluster K8s. Prova questo comando.
Quindi, dai un'occhiata al file ~/.kube/config
per vedere le credenziali generate. Questo file verrà utilizzato per aggiornare automaticamente i token di accesso in base alla stessa identità utilizzata dalla tua sessione gcloud
attiva. Naturalmente, ciò richiede le autorizzazioni corrette.
Una volta configurato ciò, puoi provare il seguente comando per ottenere la configurazione del cluster.
Puoi leggere di più su gcloud
per i container qui.
Questo è uno script semplice per enumerare Kubernetes in GCP: https://gitlab.com/gitlab-com/gl-security/security-operations/gl-redteam/gcp_k8s_enum
Privilege Escalation di TLS Bootstrap
Inizialmente questa tecnica di privilege escalation permetteva di ottenere privilegi all'interno del cluster GKE, consentendo efficacemente a un attaccante di comprometterlo completamente.
Questo perché GKE fornisce le credenziali di TLS Bootstrap nei metadati, che sono accessibili a chiunque semplicemente compromettendo un pod.
La tecnica utilizzata è spiegata nei seguenti articoli:
E questo strumento è stato creato per automatizzare il processo: https://github.com/4ARMED/kubeletmein
Tuttavia, la tecnica abusava del fatto che con le credenziali dei metadati era possibile generare una CSR (Certificate Signing Request) per un nuovo nodo, che veniva approvata automaticamente. Nel mio test ho verificato che queste richieste non vengono più approvate automaticamente, quindi non sono sicuro se questa tecnica sia ancora valida.
Secrets in Kubelet API
In questo articolo è stato scoperto un indirizzo Kubelet API accessibile da dentro un pod in GKE che fornisce i dettagli dei pod in esecuzione:
Anche se l'API non consente di modificare le risorse, potrebbe essere possibile trovare informazioni sensibili nella risposta. L'endpoint /pods è stato trovato utilizzando Kiterunner.
Last updated