From ab1778ec616585595dd64bef84588d1a186bd13f Mon Sep 17 00:00:00 2001 From: Translator Date: Sat, 15 Nov 2025 11:47:51 +0000 Subject: [PATCH] Translated ['', 'src/pentesting-cloud/gcp-security/gcp-privilege-escalat --- .../gcp-misc-perms-privesc.md | 23 ++++++++++------ .../gcp-orgpolicy-privesc.md | 27 +++++++++++++++++-- 2 files changed, 40 insertions(+), 10 deletions(-) diff --git a/src/pentesting-cloud/gcp-security/gcp-privilege-escalation/gcp-misc-perms-privesc.md b/src/pentesting-cloud/gcp-security/gcp-privilege-escalation/gcp-misc-perms-privesc.md index 118733e83..e507e3834 100644 --- a/src/pentesting-cloud/gcp-security/gcp-privilege-escalation/gcp-misc-perms-privesc.md +++ b/src/pentesting-cloud/gcp-security/gcp-privilege-escalation/gcp-misc-perms-privesc.md @@ -1,25 +1,32 @@ -# GCP - Ogólne Uprawnienia Privesc +# GCP - Generic Permissions Privesc {{#include ../../../banners/hacktricks-training.md}} -## Ogólne Interesujące Uprawnienia +## Generic Interesting Permissions ### \*.setIamPolicy -Jeśli posiadasz użytkownika, który ma uprawnienie **`setIamPolicy`** w zasobie, możesz **eskalować uprawnienia w tym zasobie**, ponieważ będziesz mógł zmienić politykę IAM tego zasobu i przyznać sobie więcej uprawnień do niego.\ -To uprawnienie może również pozwolić na **eskalację do innych podmiotów**, jeśli zasób pozwala na wykonywanie kodu, a iam.ServiceAccounts.actAs nie jest konieczne. +If you owns a user that has the **`setIamPolicy`** permission in a resource you can **escalate privileges in that resource** because you will be able to change the IAM policy of that resource and give you more privileges over it.\ +This permission can also allow to **escalate to other principals** if the resource allow to execute code and the `iam.ServiceAccounts.actAs` is not necessary. - _cloudfunctions.functions.setIamPolicy_ -- Zmodyfikuj politykę funkcji chmurowej, aby umożliwić sobie jej wywołanie. +- Modify the policy of a Cloud Function to allow yourself to invoke it. -Istnieje dziesiątki typów zasobów z tego rodzaju uprawnieniami, możesz je znaleźć w [https://cloud.google.com/iam/docs/permissions-reference](https://cloud.google.com/iam/docs/permissions-reference) wyszukując setIamPolicy. +There are tens of resources types with this kind of permission, you can find all of them in [https://cloud.google.com/iam/docs/permissions-reference](https://cloud.google.com/iam/docs/permissions-reference) searching for setIamPolicy. ### \*.create, \*.update -Te uprawnienia mogą być bardzo przydatne do próby eskalacji uprawnień w zasobach poprzez **utworzenie nowego lub zaktualizowanie istniejącego**. Te rodzaje uprawnień są szczególnie przydatne, jeśli masz również uprawnienie **iam.serviceAccounts.actAs** nad Kontem Usługi, a zasób, nad którym masz .create/.update, może dołączyć konto usługi. +These permissions can be very useful to try to escalate privileges in resources by **creating a new one or updating a new one**. These can of permissions are specially useful if you also has the permission **iam.serviceAccounts.actAs** over a Service Account and the resource you have .create/.update over can attach a service account. ### \*ServiceAccount\* -To uprawnienie zazwyczaj pozwoli ci **uzyskać dostęp lub zmodyfikować Konto Usługi w jakimś zasobie** (np.: compute.instances.setServiceAccount). To **może prowadzić do wektora eskalacji uprawnień**, ale będzie to zależało od każdego przypadku. +This permission will usually let you **access or modify a Service Account in some resource** (e.g.: compute.instances.setServiceAccount). This **could lead to a privilege escalation** vector, but it will depend on each case. + +### iam.ServiceAccounts.actAs + +This permission will let you attach a Service Account to a resource that supports it (e.g.: Compute Engine VM, Cloud Function, Cloud Run, etc).\ +If you can attach a Service Account that has more privileges than your user to a resource that can execute code, you will be able to escalate your privileges by executing code with that Service Account. + +Search in Cloud Hacktricks for `iam.ServiceAccounts.actAs` to find several examples of how to escalate privileges with this permission. {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/gcp-security/gcp-privilege-escalation/gcp-orgpolicy-privesc.md b/src/pentesting-cloud/gcp-security/gcp-privilege-escalation/gcp-orgpolicy-privesc.md index 8839f8a8d..49e6c662d 100644 --- a/src/pentesting-cloud/gcp-security/gcp-privilege-escalation/gcp-orgpolicy-privesc.md +++ b/src/pentesting-cloud/gcp-security/gcp-privilege-escalation/gcp-orgpolicy-privesc.md @@ -6,7 +6,7 @@ ### `orgpolicy.policy.set` -Napastnik wykorzystujący **orgpolicy.policy.set** może manipulować politykami organizacyjnymi, co pozwoli mu usunąć pewne ograniczenia utrudniające konkretne operacje. Na przykład, ograniczenie **appengine.disableCodeDownload** zazwyczaj blokuje pobieranie kodu źródłowego App Engine. Jednakże, korzystając z **orgpolicy.policy.set**, napastnik może dezaktywować to ograniczenie, uzyskując dostęp do pobrania kodu źródłowego, mimo że początkowo był on chroniony. +Atakujący wykorzystujący **orgpolicy.policy.set** może manipulować politykami organizacyjnymi, co pozwoli mu usunąć niektóre ograniczenia utrudniające wykonywanie określonych operacji. Na przykład ograniczenie **appengine.disableCodeDownload** zwykle blokuje pobieranie kodu źródłowego App Engine. Jednak używając **orgpolicy.policy.set**, atakujący może dezaktywować to ograniczenie, uzyskując w ten sposób dostęp do pobrania kodu źródłowego, mimo że początkowo był on chroniony. ```bash # Get info gcloud resource-manager org-policies describe [--folder | --organization | --project ] @@ -16,7 +16,30 @@ gcloud resource-manager org-policies disable-enforce [--folder ``` Skrypt Pythona dla tej metody można znaleźć [tutaj](https://github.com/RhinoSecurityLabs/GCP-IAM-Privilege-Escalation/blob/master/ExploitScripts/orgpolicy.policy.set.py). -## Odniesienia +### `orgpolicy.policy.set`, `iam.serviceAccounts.actAs` + +Zwykle nie można przypisać service account z innego projektu do zasobu, ponieważ istnieje narzucone ograniczenie polityki o nazwie **`iam.disableCrossProjectServiceAccountUsage`**, które uniemożliwia tę akcję. + +Można sprawdzić, czy to ograniczenie jest egzekwowane, uruchamiając następujące polecenie: +```bash +gcloud resource-manager org-policies describe \ +constraints/iam.disableCrossProjectServiceAccountUsage \ +--project= \ +--effective + +booleanPolicy: +enforced: true +constraint: constraints/iam.disableCrossProjectServiceAccountUsage +``` +To zapobiega nadużyciu przez atakującego uprawnienia **`iam.serviceAccounts.actAs`** do podszywania się pod service account z innego projektu bez dodatkowych uprawnień infrastruktury, np. do uruchomienia nowej VM, co mogłoby prowadzić do eskalacji uprawnień. + +Jednak atakujący posiadający uprawnienia **`orgpolicy.policy.set`** może obejść to ograniczenie, wyłączając constraint **`iam.disableServiceAccountProjectWideAccess`**. Pozwala mu to przypisać service account z innego projektu do zasobu w swoim projekcie, skutecznie eskalując swoje uprawnienia. +```bash +gcloud resource-manager org-policies disable-enforce \ +iam.disableCrossProjectServiceAccountUsage \ +--project= +``` +## Źródła - [https://rhinosecuritylabs.com/cloud-security/privilege-escalation-google-cloud-platform-part-2/](https://rhinosecuritylabs.com/cloud-security/privilege-escalation-google-cloud-platform-part-2/)