GCP - Containers & GKE Enum
Last updated
Last updated
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
W kontenerach GCP możesz znaleźć większość usług opartych na kontenerach, które oferuje GCP, tutaj możesz zobaczyć, jak enumerować najczęstsze z nich:
Na następnej stronie możesz sprawdzić, jak nadużyć uprawnień kontenera, aby eskalować przywileje:
To są pule maszyn (węzłów), które tworzą klastry kubernetes.
Aby uzyskać informacje na temat tego, czym jest Kubernetes, sprawdź tę stronę:
Najpierw możesz sprawdzić, czy w twoim projekcie istnieją jakiekolwiek klastry Kubernetes.
Jeśli masz klaster, możesz mieć gcloud
, aby automatycznie skonfigurować swój plik ~/.kube/config
. Plik ten jest używany do uwierzytelniania, gdy używasz kubectl, natywnego interfejsu CLI do interakcji z klastrami K8s. Spróbuj tego polecenia.
Następnie sprawdź plik ~/.kube/config
, aby zobaczyć wygenerowane poświadczenia. Plik ten będzie używany do automatycznego odświeżania tokenów dostępu na podstawie tej samej tożsamości, której używa Twoja aktywna sesja gcloud
. Oczywiście wymaga to odpowiednich uprawnień.
Gdy to zostanie skonfigurowane, możesz spróbować wykonać następujące polecenie, aby uzyskać konfigurację klastra.
Możesz przeczytać więcej o gcloud
dla kontenerów tutaj.
To jest prosty skrypt do enumeracji kubernetes w GCP: https://gitlab.com/gitlab-com/gl-security/security-operations/gl-redteam/gcp_k8s_enum
Początkowo ta technika eskalacji uprawnień pozwalała na privesc wewnątrz klastra GKE, co skutecznie pozwalało atakującemu na pełne przejęcie go.
Dzieje się tak, ponieważ GKE dostarcza poświadczenia TLS Bootstrap w metadanych, które są dostępne dla każdego, kto tylko przejmie pod.
Technika użyta jest wyjaśniona w następujących postach:
A to narzędzie zostało stworzone, aby zautomatyzować ten proces: https://github.com/4ARMED/kubeletmein
Jednak technika wykorzystywała fakt, że z poświadczeniami metadanych możliwe było 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.
W tym poście odkryto adres API Kubelet dostępny z wnętrza podu w GKE, który podaje 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. Punkt końcowy /pods został znaleziony przy użyciu Kiterunner.
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)