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

This commit is contained in:
Translator
2025-11-15 11:49:17 +00:00
parent 4d75f09978
commit a23a258685
2 changed files with 41 additions and 11 deletions

View File

@@ -1,25 +1,32 @@
# GCP - Generičke Dozvole Privesc
# GCP - Generic Permissions Privesc
{{#include ../../../banners/hacktricks-training.md}}
## Generičke Zanimljive Dozvole
## Generic Interesting Permissions
### \*.setIamPolicy
Ako posedujete korisnika koji ima **`setIamPolicy`** dozvolu u resursu, možete **povećati privilegije u tom resursu** jer ćete moći da promenite IAM politiku tog resursa i date sebi više privilegija nad njim.\
Ova dozvola takođe može omogućiti **povećanje privilegija za druge subjekte** ako resurs dozvoljava izvršavanje koda i iam.ServiceAccounts.actAs nije neophodan.
Ako imate korisnika koji poseduje dozvolu **`setIamPolicy`** nad nekim resursom, možete **escalate privileges in that resource** zato što ćete moći da promenite IAM politiku tog resursa i dodelite sebi više privilegija nad njim.\
Ova dozvola takođe može omogućiti **escalate to other principals** ako resurs dozvoljava izvršavanje koda i `iam.ServiceAccounts.actAs` nije neophodan.
- _cloudfunctions.functions.setIamPolicy_
- Izmenite politiku Cloud Funkcije da biste sebi omogućili da je pozivate.
- Modify the policy of a Cloud Function to allow yourself to invoke it.
Postoji desetine tipova resursa sa ovom vrstom dozvole, možete ih pronaći na [https://cloud.google.com/iam/docs/permissions-reference](https://cloud.google.com/iam/docs/permissions-reference) pretražujući za setIamPolicy.
Postoji na desetine tipova resursa sa ovom vrstom dozvole; sve ih možete pronaći na [https://cloud.google.com/iam/docs/permissions-reference](https://cloud.google.com/iam/docs/permissions-reference) pretraživanjem za setIamPolicy.
### \*.create, \*.update
Ove dozvole mogu biti veoma korisne za pokušaj povećanja privilegija u resursima **kreiranjem novog ili ažuriranjem postojećeg**. Ove vrste dozvola su posebno korisne ako takođe imate dozvolu **iam.serviceAccounts.actAs** nad Servisnim Nalogom i resurs na koji imate .create/.update može da poveže servisni nalog.
Ove dozvole mogu biti vrlo korisne za pokušaj da se escalatе privileges u resursima kreiranjem novog resursa ili ažuriranjem postojećeg. Ove vrste dozvola su posebno korisne ako takođe imate dozvolu **iam.serviceAccounts.actAs** nad Service Account-om i resurs nad kojim imate .create/.update može da prikači Service Account.
### \*ServiceAccount\*
Ova dozvola obično će vam omogućiti **pristup ili izmenu Servisnog Naloga u nekom resursu** (npr.: compute.instances.setServiceAccount). Ovo **može dovesti do vektora povećanja privilegija**, ali će zavisiti od svakog pojedinačnog slučaja.
Ova dozvola će obično omogućiti da **access or modify a Service Account in some resource** (npr.: compute.instances.setServiceAccount). Ovo **could lead to a privilege escalation** vektor, ali će zavisiti od konkretnog slučaja.
### iam.ServiceAccounts.actAs
Ova dozvola vam omogućava da prikačite Service Account na resurs koji to podržava (npr.: Compute Engine VM, Cloud Function, Cloud Run, itd).\
Ako možete da prikačite Service Account koji ima više privilegija od vašeg korisnika na resurs koji može izvršavati kod, bićete u mogućnosti da escalate your privileges izvršavanjem koda sa tim Service Account-om.
Pretražite Cloud Hacktricks za `iam.ServiceAccounts.actAs` da biste našli nekoliko primera kako da escalate privileges koristeći ovu dozvolu.
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -6,7 +6,7 @@
### `orgpolicy.policy.set`
Napadač koji koristi **orgpolicy.policy.set** može manipulisati organizacionim politikama, što će mu omogućiti da ukloni određena ograničenja koja ometaju specifične operacije. Na primer, ograničenje **appengine.disableCodeDownload** obično blokira preuzimanje izvornog koda App Engine-a. Međutim, korišćenjem **orgpolicy.policy.set**, napadač može deaktivirati ovo ograničenje, čime dobija pristup za preuzimanje izvornog koda, uprkos tome što je prvobitno bio zaštićen.
Napadač koji koristi **orgpolicy.policy.set** može manipulisati organizacionim politikama, što mu omogućava da ukloni određena ograničenja koja sprečavaju određene operacije. Na primer, ograničenje **appengine.disableCodeDownload** obično blokira preuzimanje izvornog koda App Engine-a. Međutim, korišćenjem **orgpolicy.policy.set**, napadač može deaktivirati ovo ograničenje, čime dobija pristup za preuzimanje izvornog koda, iako je on prvobitno bio zaštićen.
```bash
# Get info
gcloud resource-manager org-policies describe <org-policy> [--folder <id> | --organization <id> | --project <id>]
@@ -14,9 +14,32 @@ gcloud resource-manager org-policies describe <org-policy> [--folder <id> | --or
# Disable
gcloud resource-manager org-policies disable-enforce <org-policy> [--folder <id> | --organization <id> | --project <id>]
```
Python skripta za ovu metodu može se naći [ovde](https://github.com/RhinoSecurityLabs/GCP-IAM-Privilege-Escalation/blob/master/ExploitScripts/orgpolicy.policy.set.py).
A python skripta za ovu metodu može se pronaći [here](https://github.com/RhinoSecurityLabs/GCP-IAM-Privilege-Escalation/blob/master/ExploitScripts/orgpolicy.policy.set.py).
## Reference
### `orgpolicy.policy.set`, `iam.serviceAccounts.actAs`
Obično nije moguće prikačiti service account iz drugog projekta na resource zato što postoji policy constraint koji se primenjuje i zove se **`iam.disableCrossProjectServiceAccountUsage`** i koji sprečava ovu akciju.
Moguće je proveriti da li se ovo ograničenje primenjuje pokretanjem sledeće komande:
```bash
gcloud resource-manager org-policies describe \
constraints/iam.disableCrossProjectServiceAccountUsage \
--project=<project-id> \
--effective
booleanPolicy:
enforced: true
constraint: constraints/iam.disableCrossProjectServiceAccountUsage
```
Ovo sprečava napadača da zloupotrebi dozvolu **`iam.serviceAccounts.actAs`** da se predstavlja kao service account iz drugog projekta bez potrebnih daljih infra permissions da, na primer, pokrene novu VM, što bi moglo dovesti do privilege escalation.
Međutim, napadač sa dozvolama **`orgpolicy.policy.set`** može zaobići ovo ograničenje onemogućavanjem ograničenja **`iam.disableServiceAccountProjectWideAccess`**. Ovo omogućava napadaču da prikači service account iz drugog projekta na resurs u svom projektu, effectively escalating his privileges.
```bash
gcloud resource-manager org-policies disable-enforce \
iam.disableCrossProjectServiceAccountUsage \
--project=<project-id>
```
## Literatura
- [https://rhinosecuritylabs.com/cloud-security/privilege-escalation-google-cloud-platform-part-2/](https://rhinosecuritylabs.com/cloud-security/privilege-escalation-google-cloud-platform-part-2/)