GCP - Compute Privesc
Compute
Aby uzyskać więcej informacji na temat Compute i VPC (sieci) w GCP, sprawdź:
Zauważ, że aby przeprowadzić wszystkie ataki eskalacji uprawnień, które wymagają modyfikacji metadanych instancji (takich jak dodawanie nowych użytkowników i kluczy SSH), konieczne jest posiadanie uprawnień actAs
dla SA przypisanego do instancji, nawet jeśli SA jest już przypisany!
compute.projects.setCommonInstanceMetadata
compute.projects.setCommonInstanceMetadata
Dzięki temu uprawnieniu możesz modyfikować informacje o metadanych instancji i zmieniać autoryzowane klucze użytkownika lub tworzyć nowego użytkownika z uprawnieniami sudo. W związku z tym będziesz mógł zalogować się przez SSH do dowolnej instancji VM i ukraść GCP Service Account, z którym działa instancja. Ograniczenia:
Zauważ, że GCP Service Accounts działające w instancjach VM domyślnie mają bardzo ograniczony zakres
Będziesz musiał mieć możliwość skontaktowania się z serwerem SSH, aby się zalogować
Aby uzyskać więcej informacji na temat tego, jak wykorzystać to uprawnienie, sprawdź:
Możesz również przeprowadzić ten atak, dodając nowy skrypt uruchamiający i restartując instancję:
compute.instances.setMetadata
compute.instances.setMetadata
To uprawnienie daje te same uprawnienia co poprzednie uprawnienie, ale dla konkretnych instancji zamiast całego projektu. Te same exploity i ograniczenia jak w poprzedniej sekcji mają zastosowanie.
compute.instances.setIamPolicy
compute.instances.setIamPolicy
Ten rodzaj uprawnienia pozwoli ci przyznać sobie rolę z poprzednimi uprawnieniami i eskalować uprawnienia, nadużywając ich.
compute.instances.osLogin
compute.instances.osLogin
Jeśli OSLogin jest włączony w instancji, z tym uprawnieniem możesz po prostu uruchomić gcloud compute ssh [INSTANCE]
i połączyć się z instancją. Nie będziesz miał uprawnień roota wewnątrz instancji.
Aby pomyślnie zalogować się z tym uprawnieniem wewnątrz instancji VM, musisz mieć uprawnienie iam.serviceAccounts.actAs
dla SA przypisanego do VM.
compute.instances.osAdminLogin
compute.instances.osAdminLogin
Jeśli OSLogin jest włączony w instancji, z tym uprawnieniem możesz po prostu uruchomić gcloud compute ssh [INSTANCE]
i połączyć się z instancją. Będziesz miał uprawnienia roota wewnątrz instancji.
Aby pomyślnie zalogować się z tym uprawnieniem wewnątrz instancji VM, musisz mieć uprawnienie iam.serviceAccounts.actAs
dla SA przypisanego do VM.
compute.instances.create
,iam.serviceAccounts.actAs, compute.disks.create
, compute.instances.create
, compute.instances.setMetadata
, compute.instances.setServiceAccount
, compute.subnetworks.use
, compute.subnetworks.useExternalIp
compute.instances.create
,iam.serviceAccounts.actAs, compute.disks.create
, compute.instances.create
, compute.instances.setMetadata
, compute.instances.setServiceAccount
, compute.subnetworks.use
, compute.subnetworks.useExternalIp
Możliwe jest utworzenie maszyny wirtualnej z przypisanym kontem usługi i kradzież tokena konta usługi uzyskując dostęp do metadanych, aby eskalować uprawnienia do niego.
Skrypt exploitu dla tej metody można znaleźć tutaj.
osconfig.patchDeployments.create
| osconfig.patchJobs.exec
osconfig.patchDeployments.create
| osconfig.patchJobs.exec
Jeśli masz uprawnienia osconfig.patchDeployments.create
lub osconfig.patchJobs.exec
, możesz utworzyć zadanie łatania lub wdrożenie. To umożliwi ci poruszanie się w poziomie w środowisku i uzyskanie wykonania kodu na wszystkich instancjach obliczeniowych w projekcie.
Zauważ, że w tej chwili nie potrzebujesz uprawnienia actAs
dla SA przypisanego do instancji.
Jeśli chcesz ręcznie wykorzystać to, będziesz musiał utworzyć albo zadanie łatania lub wdrożenie. Aby uruchomić zadanie łatania:
Aby wdrożyć wdrożenie poprawki:
Narzędzie patchy mogło być używane w przeszłości do wykorzystania tej błędnej konfiguracji (ale teraz nie działa).
Atakujący mógłby również nadużyć tego dla utrzymania dostępu.
compute.machineImages.setIamPolicy
compute.machineImages.setIamPolicy
Przyznaj sobie dodatkowe uprawnienia do obrazu maszyny.
compute.snapshots.setIamPolicy
compute.snapshots.setIamPolicy
Przyznaj sobie dodatkowe uprawnienia do migawki dysku.
compute.disks.setIamPolicy
compute.disks.setIamPolicy
Przyznaj sobie dodatkowe uprawnienia do dysku.
Ominięcie Zakresów Dostępu
Podążając za tym linkiem znajdziesz kilka pomysłów na ominięcie zakresów dostępu.
Lokalna Eskalacja Uprawnień w instancji GCP Compute
Referencje
Last updated