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

This commit is contained in:
Translator
2025-11-15 11:48:29 +00:00
parent ebdd24771c
commit 18b044c1d2
2 changed files with 39 additions and 9 deletions
@@ -1,4 +1,4 @@
# GCP - Genel İzinler Privesc
# GCP - Generic Permissions Privesc
{{#include ../../../banners/hacktricks-training.md}}
@@ -6,20 +6,27 @@
### \*.setIamPolicy
Eğer bir kaynağın **`setIamPolicy`** iznine sahip bir kullanıcıya sahipseniz, o kaynaktaki **yetkileri artırabilirsiniz** çünkü o kaynağın IAM politikasını değiştirebilir ve üzerindeki yetkilerinizi artırabilirsiniz.\
Bu izin ayrıca **diğer yetkililere yükselmenizi** de sağlayabilir eğer kaynak kod çalıştırmaya izin veriyorsa ve iam.ServiceAccounts.actAs gerekli değilse.
Eğer bir kullanıcı kaynak üzerinde **`setIamPolicy`** iznine sahipse, bu kaynağın IAM politikasını değiştirebileceğiniz için o kaynakta ayrıcalıkları yükseltebilirsiniz.\
Bu izin ayrıca, kaynak kod çalıştırmaya izin veriyorsa ve `iam.ServiceAccounts.actAs` gerekli değilse, **başka principal'lara yükselme** imkanı da sağlayabilir.
- _cloudfunctions.functions.setIamPolicy_
- Kendinize bir Cloud Function'ı çağırma izni vermek için politikasını değiştirin.
- Cloud Function'ın politikasını değiştirerek kendinize invoke etme izni verebilirsiniz.
Bu tür izne sahip onlarca kaynak türü vardır, hepsini [https://cloud.google.com/iam/docs/permissions-reference](https://cloud.google.com/iam/docs/permissions-reference) adresinde setIamPolicy araması yaparak bulabilirsiniz.
Bu tür izne sahip onlarca kaynak türü vardır; hepsini [https://cloud.google.com/iam/docs/permissions-reference](https://cloud.google.com/iam/docs/permissions-reference) adresinde setIamPolicy araması yaparak bulabilirsiniz.
### \*.create, \*.update
Bu izinler, kaynaklarda **yeni bir tane oluşturmak veya mevcut birini güncellemek** yoluyla yetkileri artırmaya çalışmak için çok faydalı olabilir. Bu tür izinler, ayrıca bir Hizmet Hesabı üzerinde **iam.serviceAccounts.actAs** iznine sahipseniz ve sahip olduğunuz .create/.update iznine sahip kaynak bir hizmet hesabı ekleyebiliyorsa özellikle faydalıdır.
Bu izinler, yeni bir kaynak oluşturarak veya mevcut bir kaynağı güncelleyerek kaynaklarda ayrıcalıkları yükseltmeye çalışmak için çok yararlı olabilir. Bu tür izinler özellikle, bir Service Account üzerinde **iam.serviceAccounts.actAs** iznine de sahipseniz ve .create/.update yetkisine sahip olduğunuz kaynak bir service account iliştirebiliyorsa faydalıdır.
### \*ServiceAccount\*
Bu izin genellikle size **bir kaynaktaki Hizmet Hesabına erişim veya onu değiştirme** izni verir (örneğin: compute.instances.setServiceAccount). Bu **yetki artışına** yol açabilecek bir vektör olabilir, ancak her duruma bağlıdır.
Bu izin genellikle belirli bir kaynaktaki bir Service Account'a **erişim veya değişiklik** yapmanıza izin verir (ör.: compute.instances.setServiceAccount). Bu bir **privilege escalation** vektörüne yol açabilir, ancak duruma göre değişir.
### iam.ServiceAccounts.actAs
Bu izin, destekleyen bir kaynağa (ör.: Compute Engine VM, Cloud Function, Cloud Run, vb.) bir Service Account iliştirmenize izin verir.\
Eğer kullanıcınızdan daha fazla ayrıcalığa sahip bir Service Account'u kod çalıştırabilen bir kaynağa iliştirebiliyorsanız, o Service Account ile kod çalıştırarak ayrıcalıklarınızı yükseltebilirsiniz.
Cloud Hacktricks'te `iam.ServiceAccounts.actAs` araması yaparak bu izinle ayrıcalıkları nasıl yükseltebileceğinize dair birçok örnek bulabilirsiniz.
{{#include ../../../banners/hacktricks-training.md}}
@@ -6,7 +6,7 @@
### `orgpolicy.policy.set`
Bir saldırgan **orgpolicy.policy.set** kullanarak organizasyonel politikaları manipüle edebilir, bu da belirli işlemleri engelleyen bazı kısıtlamaları kaldırmasına olanak tanır. Örneğin, **appengine.disableCodeDownload** kısıtlaması genellikle App Engine kaynak kodunun indirilmesini engeller. Ancak, **orgpolicy.policy.set** kullanarak bir saldırgan bu kısıtlamayı devre dışı bırakabilir ve böylece başlangıçta korunan kaynak kodunu indirme erişimi kazanabilir.
**orgpolicy.policy.set** kullanan bir saldırgan, organizasyon politikalarını manipüle edebilir; bu da belirli işlemleri engelleyen bazı kısıtlamaları kaldırmasına izin verir. Örneğin, **appengine.disableCodeDownload** kısıtı genellikle App Engine kaynak kodunun indirilmesini engeller. Ancak **orgpolicy.policy.set** kullanarak saldırgan bu kısıtlamayı devre dışı bırakabilir ve böylece başlangıçta korumalı olmasına rağmen kaynak kodunu indirme erişimi elde edebilir.
```bash
# Get info
gcloud resource-manager org-policies describe <org-policy> [--folder <id> | --organization <id> | --project <id>]
@@ -14,8 +14,31 @@ 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>]
```
Bir python betiği bu yöntem için [burada](https://github.com/RhinoSecurityLabs/GCP-IAM-Privilege-Escalation/blob/master/ExploitScripts/orgpolicy.policy.set.py) bulunabilir.
Bu yöntem için bir Python betiği [here](https://github.com/RhinoSecurityLabs/GCP-IAM-Privilege-Escalation/blob/master/ExploitScripts/orgpolicy.policy.set.py).
### `orgpolicy.policy.set`, `iam.serviceAccounts.actAs`
Genellikle farklı bir projeden bir servis hesabını bir kaynağa eklemek mümkün değildir çünkü bu eylemi engelleyen **`iam.disableCrossProjectServiceAccountUsage`** adlı bir kısıtlama uygulanmaktadır.
Bu kısıtlamanın uygulanıp uygulanmadığını aşağıdaki komutu çalıştırarak doğrulayabilirsiniz:
```bash
gcloud resource-manager org-policies describe \
constraints/iam.disableCrossProjectServiceAccountUsage \
--project=<project-id> \
--effective
booleanPolicy:
enforced: true
constraint: constraints/iam.disableCrossProjectServiceAccountUsage
```
Bu, bir saldırıcının **`iam.serviceAccounts.actAs`** iznini suistimal ederek, örneğin başka bir projeden bir service account'u taklit edip yeni bir VM başlatmak için gerekli ek altyapı izinlerine sahip olmadan yetki yükseltmesine yol açabilecek davranışları engeller.
Ancak **`orgpolicy.policy.set`** izinlerine sahip bir saldırgan, **`iam.disableServiceAccountProjectWideAccess`** kısıtlamasını devre dışı bırakarak bu sınırlamayı aşabilir. Bu, saldırganın başka bir projeden bir service account'u kendi projesindeki bir kaynağa bağlamasına izin vererek yetkilerini etkili şekilde yükseltmesine olanak tanır.
```bash
gcloud resource-manager org-policies disable-enforce \
iam.disableCrossProjectServiceAccountUsage \
--project=<project-id>
```
## Referanslar
- [https://rhinosecuritylabs.com/cloud-security/privilege-escalation-google-cloud-platform-part-2/](https://rhinosecuritylabs.com/cloud-security/privilege-escalation-google-cloud-platform-part-2/)