GCP - Containers, GKE & Composer Enum
Kontenery
W kontenerach GCP znajdziesz większość usług opartych na kontenerach, które oferuje GCP. Tutaj możesz zobaczyć, jak wyliczyć najczęściej spotykane:
Privesc
Na następnej stronie możesz sprawdzić, jak wykorzystać uprawnienia kontenera do eskalacji uprawnień:
Grupy węzłów
To są grupy maszyn (węzłów), które tworzą klastry Kubernetes.
Composer
To jest zarządzana wersja Airflow w GCP.
Privesc
Na następnej stronie możesz sprawdzić, jak wykorzystać uprawnienia kompozytora do eskalacji uprawnień:
Kubernetes
Aby uzyskać informacje na temat tego, czym jest Kubernetes, sprawdź tę stronę:
Najpierw możesz sprawdzić, czy istnieją jakiekolwiek klastry Kubernetes w Twoim projekcie.
Jeśli masz klastra, możesz skonfigurować plik ~/.kube/config
automatycznie za pomocą gcloud
. Ten plik służy do uwierzytelniania podczas korzystania z kubectl, natywnego interfejsu wiersza poleceń do interakcji z klastrami K8s. Wypróbuj to polecenie.
Następnie, sprawdź 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 aktywna sesja gcloud
. Oczywiście wymaga to odpowiednich uprawnień.
Po skonfigurowaniu tego, możesz spróbować następującej komendy, aby uzyskać konfigurację klastra.
Możesz przeczytać więcej o gcloud
dla kontenerów tutaj.
Oto prosty skrypt 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, umożliwiając atakującemu 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 pod.
Technika używana jest wyjaśniona w następujących wpisach:
Aby zautomatyzować ten proces, zostało stworzone narzędzie: https://github.com/4ARMED/kubeletmein
Jednak technika ta polegała na wykorzystaniu faktu, że z poświadczeniami metadanych można było wygenerować 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 wpisie odkryto, że istnieje adres interfejsu API Kubelet dostępny z poziomu poda w GKE, który udostępnia szczegóły działających podów:
Nawet jeśli API nie pozwala na modyfikację zasobów, istnieje możliwość znalezienia wrażliwych informacji w odpowiedzi. Punktem końcowym /pods został znaleziony za pomocą Kiterunner.
Last updated