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:
+14
-7
@@ -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}}
|
||||
|
||||
+25
-2
@@ -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/)
|
||||
|
||||
Reference in New Issue
Block a user