GCP - Containers & GKE Enum
Kontenery
W kontenerach GCP znajdziesz większość usług opartych na kontenerach oferowanych przez GCP, tutaj możesz zobaczyć, jak wyliczyć najczęstsze z nich:
Eskalacja uprawnień
Na następnej stronie możesz sprawdzić, jak nadużyć uprawnień kontenera w celu eskalacji uprawnień:
GCP - Container PrivescGrupy węzłów
Są to grupy maszyn (węzłów), które tworzą klastry Kubernetes.
Kubernetes
Aby uzyskać informacje na temat tego, czym jest Kubernetes, sprawdź tę stronę:
Kubernetes PentestingPo pierwsze, możesz sprawdzić, czy istnieją jakiekolwiek klastry Kubernetes w Twoim projekcie.
Jeśli masz klaster, możesz skonfigurować plik ~/.kube/config
automatycznie za pomocą gcloud
. Ten plik służy do uwierzytelniania Ciebie podczas korzystania z kubectl, natywnego interfejsu wiersza poleceń do interakcji z klastrami K8s. Wypróbuj to polecenie.
Następnie spójrz na plik ~/.kube/config
, aby zobaczyć wygenerowane poświadczenia. Ten plik będzie używany do automatycznego odświeżania tokenów dostępu na podstawie tego samego tożsamości, którą używa Twoja aktywna sesja gcloud
. Oczywiście wymaga to odpowiednich uprawnień.
Gdy to jest skonfigurowane, możesz spróbować następującej komendy, aby uzyskać konfigurację klastra.
Możesz przeczytać więcej o gcloud
dla kontenerów tutaj.
To proste narzędzie do wyliczania klastrów Kubernetes w GCP: https://gitlab.com/gitlab-com/gl-security/security-operations/gl-redteam/gcp_k8s_enum
Eskalacja uprawnień TLS Boostrap
Początkowo ta technika eskalacji uprawnień pozwalała na privesc wewnątrz klastra GKE, co efektywnie pozwalało atakującemu na pełne skompromitowanie go.
Dzieje się tak, ponieważ GKE udostępnia poświadczenia TLS Bootstrap w metadanych, które są dostępne dla każdego, kto skompromituje pojedynczy pod.
Technika użyta jest wyjaśniona w następujących postach:
A to narzędzie zostało stworzone w celu zautomatyzowania procesu: https://github.com/4ARMED/kubeletmein
Jednakże, technika nadużywała faktu, że z poświadczeniami metadanych było możliwe wygenerowanie CSR (Certificate Signing Request) dla nowego węzła, który był automatycznie zatwierdzany. W moim teście sprawdziłem, że te żądania nie są już automatycznie zatwierdzane, więc nie jestem pewien, czy ta technika jest nadal ważna.
Sekrety w interfejsie API Kubelet
W tym poście odkryto adres interfejsu API Kubelet dostępny z wnętrza poda w GKE, który udostępnia szczegóły działających podów:
Nawet jeśli API nie pozwala na modyfikację zasobów, możliwe jest znalezienie wrażliwych informacji w odpowiedzi. Punktem końcowym /pods został znaleziony za pomocą Kiterunner.
Last updated