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