Translated ['', 'src/pentesting-cloud/gcp-security/gcp-privilege-escalat

This commit is contained in:
Translator
2025-11-15 11:47:51 +00:00
parent cd6cda27c4
commit ab1778ec61
2 changed files with 40 additions and 10 deletions
@@ -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}}
@@ -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 <org-policy> [--folder <id> | --organization <id> | --project <id>]
@@ -16,7 +16,30 @@ gcloud resource-manager org-policies disable-enforce <org-policy> [--folder <id>
```
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=<project-id> \
--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=<project-id>
```
## Ź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/)