GCP - Containers & GKE Enum
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Nei contenitori GCP puoi trovare la maggior parte dei servizi basati su contenitori offerti da GCP, qui puoi vedere come enumerare i più comuni:
Nella pagina seguente puoi controllare come abuse container permissions to escalate privileges:
GCP - Container PrivescQuesti sono i pool di macchine (nodi) che formano i cluster kubernetes.
Per informazioni su cos'è Kubernetes, controlla questa pagina:
Kubernetes PentestingInnanzitutto, puoi controllare 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 a riga di comando nativa per interagire con i cluster K8s. Prova questo comando.
Poi, 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 tua sessione gcloud
attiva sta utilizzando. Questo richiede ovviamente le autorizzazioni corrette.
Una volta configurato, 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
Inizialmente questa tecnica di escalation di privilegi consentiva di privesc all'interno del cluster GKE permettendo effettivamente a un attaccante di comprometterlo completamente.
Questo perché GKE fornisce credenziali TLS Bootstrap nei metadati, che sono accessibili da chiunque comprometta un pod.
La tecnica utilizzata è spiegata nei seguenti post:
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 un CSR (Certificate Signing Request) per un nuovo nodo, che era automaticamente approvato. Nel mio test ho verificato che quelle richieste non sono più automaticamente approvate, quindi non sono sicuro se questa tecnica sia ancora valida.
In questo post è stata scoperta un'indirizzo API Kubelet accessibile dall'interno di un pod in GKE che forniva 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.
Impara e pratica Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Impara e pratica Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)