GCP - Compute Privesc
Compute
Aby uzyskać więcej informacji na temat Compute i VPC (sieć) w GCP, sprawdź:
pageGCP - Compute Enumcompute.projects.setCommonInstanceMetadata
compute.projects.setCommonInstanceMetadata
Z tym uprawnieniem możesz modyfikować informacje metadata instancji i zmieniać klucze autoryzacyjne użytkownika, lub tworzyć nowego użytkownika z uprawnieniami sudo. Dzięki temu będziesz mógł wykonać SSH do dowolnej instancji VM i ukraść konto usługi GCP, z którym działa instancja. Ograniczenia:
Należy pamiętać, że konta usług GCP działające w instancjach VM domyślnie mają bardzo ograniczony zakres
Będziesz musiał możliwość skontaktowania się z serwerem SSH, aby się zalogować
Aby uzyskać więcej informacji na temat wykorzystania tego uprawnienia, sprawdź:
pageGCP - Add Custom SSH Metadatacompute.instances.setMetadata
compute.instances.setMetadata
To uprawnienie daje takie same uprawnienia jak poprzednie uprawnienie, ale dla określonych instancji zamiast całego projektu. Takie same metody eksploatacji i ograniczenia jak dla poprzedniej sekcji są stosowane.
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 [INSTANCJA]
i połączyć się z instancją. Nie będziesz miał uprawnień root wewnątrz instancji.
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 [INSTANCJA]
i połączyć się z instancją. Będziesz miał uprawnienia root wewnątrz instancji.
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 wirtualnej maszyny z przypisanym kontem usługi i kradzieżą tokena konta usługi uzyskując dostęp do metadanych w celu eskalacji uprawnień do niego.
Skrypt eksploatacyjny 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 lub wdrożenie łatki. Pozwoli to na lateralne poruszanie się w środowisku i uzyskanie wykonania kodu na wszystkich instancjach obliczeniowych w ramach projektu.
Aby ręcznie wykorzystać to, będziesz musiał utworzyć zarówno zadanie łatki, jak i wdrożenie dla zadania łatki, uruchom:
gcloud compute os-config patch-jobs execute --file=patch.json
Aby wdrożyć wdrożenie łatki:
gcloud compute os-config patch-deployments create my-update --file=patch.json
Istnieją narzędzia automatyzujące, takie jak patchy, które wykrywają luźne uprawnienia i automatycznie poruszają się lateralnie.
Możesz również wykorzystać to do trwałości.
compute.machineImages.setIamPolicy
compute.machineImages.setIamPolicy
Przyznaj sobie dodatkowe uprawnienia do obrazu maszyny obliczeniowej.
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
Klikając ten link znajdziesz kilka pomysłów na próbę ominięcia zakresów dostępu.
Lokalna eskalacja uprawnień w instancji obliczeniowej GCP
pageGCP - local privilege escalation ssh pivotingOdnośniki
Last updated