mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-01-27 15:24:32 -08:00
Translated ['', 'src/pentesting-cloud/gcp-security/gcp-privilege-escalat
This commit is contained in:
@@ -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}}
|
||||
|
||||
@@ -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/)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user