GCP - Containers & GKE Enum
Containers
Nei containers di GCP puoi trovare la maggior parte dei servizi basati su containers offerti da GCP, qui puoi vedere come enumerare i più comuni:
Privesc
Nella seguente pagina puoi controllare come abusare dei permessi del container per elevare i privilegi:
GCP - Container PrivescNode Pools
Questi sono i pool di macchine (nodi) che formano i cluster Kubernetes.
Kubernetes
Per informazioni su cos'è Kubernetes, controlla questa pagina:
Kubernetes PentestingInnanzitutto, puoi verificare se esistono cluster Kubernetes nel tuo progetto.
Se hai un cluster, puoi fare in modo che gcloud
configur il tuo file ~/.kube/config
automaticamente. Questo file viene utilizzato per autenticarti quando usi kubectl, la CLI 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à che la sessione attiva di gcloud
sta utilizzando. Questo naturalmente richiede le autorizzazioni corrette.
Una volta configurato questo, puoi provare il seguente comando per ottenere la configurazione del cluster.
Puoi leggere ulteriori informazioni su gcloud
per i container qui.
Questo è uno script semplice per enumerare i Kubernetes in GCP: https://gitlab.com/gitlab-com/gl-security/security-operations/gl-redteam/gcp_k8s_enum
Escalation dei Privilegi di Bootstrap TLS
Inizialmente questa tecnica di escalation dei privilegi permetteva di eseguire l'escalation dei privilegi all'interno del cluster GKE consentendo efficacemente a un attaccante di comprometterlo completamente.
Ciò è dovuto al fatto che GKE fornisce le credenziali di Bootstrap TLS nei metadati, ai quali è possibile accedere da chiunque comprometta 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 approvato automaticamente. Nel mio test ho verificato che tali richieste non vengono più approvate automaticamente, quindi non sono sicuro se questa tecnica sia ancora valida.
Segreti nell'API Kubelet
In questo articolo è stato scoperto un indirizzo API Kubelet accessibile da dentro un pod in GKE che fornisce i dettagli dei pod in esecuzione:
Anche se l'API non consente di modificare risorse, potrebbe essere possibile trovare informazioni sensibili nella risposta. L'endpoint /pods è stato trovato utilizzando Kiterunner.
Last updated