From 9bfe95621c9d00cc9458372eaef97fe3f55209b9 Mon Sep 17 00:00:00 2001 From: Translator Date: Mon, 6 Oct 2025 10:00:13 +0000 Subject: [PATCH] Translated ['', 'src/pentesting-cloud/aws-security/aws-privilege-escalat --- .../aws-secrets-manager-post-exploitation.md | 77 +++++++++++++++---- .../aws-secrets-manager-privesc.md | 12 +-- 2 files changed, 69 insertions(+), 20 deletions(-) diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-secrets-manager-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-secrets-manager-post-exploitation.md index fc607f9bf..445f68b62 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-secrets-manager-post-exploitation.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-secrets-manager-post-exploitation.md @@ -10,16 +10,16 @@ Daha fazla bilgi için bakın: ../aws-services/aws-secrets-manager-enum.md {{#endref}} -### Read Secrets +### Secrets Okuma **secrets kendileri hassas bilgilerdir**, nasıl okunacağını öğrenmek için [privesc sayfasına bakın](../aws-privilege-escalation/aws-secrets-manager-privesc.md). -### DoS Change Secret Value +### DoS Secret Değerini Değiştirme -secret değerini değiştirerek, o değere bağımlı tüm sistemleri **DoS** edebilirsiniz. +secret'in değerini değiştirerek, o değere bağımlı tüm sistemleri **DoS edebilirsiniz.** > [!WARNING] -> Önceki değerlerin de saklandığını unutmayın, bu yüzden önceki değere geri dönmek kolaydır. +> Önceki değerlerin de saklandığını unutmayın, bu yüzden önceki değere kolayca geri dönebilirsiniz. ```bash # Requires permission secretsmanager:PutSecretValue aws secretsmanager put-secret-value \ @@ -28,9 +28,9 @@ aws secretsmanager put-secret-value \ ``` ### DoS Change KMS key -Eğer saldırganın secretsmanager:UpdateSecret izni varsa, secret'i saldırgana ait bir KMS key kullanacak şekilde yapılandırabilir. Bu KMS key başlangıçta herkesin erişip kullanabileceği şekilde ayarlanmıştır, bu yüzden secret'i yeni anahtarla güncellemek mümkündür. KMS key erişilebilir olmasaydı, secret güncellenemezdi. +Eğer saldırganın secretsmanager:UpdateSecret izni varsa, secret'ı saldırgana ait bir KMS key kullanacak şekilde yapılandırabilir. O key başlangıçta herkesin erişip kullanabileceği şekilde ayarlandığı için, secret'ı yeni key ile güncellemek mümkün olur. Key erişilebilir olmasaydı, secret güncellenemezdi. -Secret için anahtarı değiştirdikten sonra saldırgan, KMS key'in yapılandırmasını yalnızca kendisinin erişebileceği şekilde değiştirir. Böylece secret'in sonraki sürümleri yeni KMS key ile şifrelenir ve anahtara erişim olmadığından secret'i geri alma yeteneği kaybolur. +Secret için key değiştirildikten sonra saldırgan, key'inin yapılandırmasını yalnızca kendisinin erişebileceği şekilde değiştirir. Böylece, secret'ın sonraki sürümleri yeni key ile şifrelenir ve bu key'e erişim olmadığından secret'ı almak imkânsız hale gelir. Bu erişilemezliğin yalnızca secret içeriği değiştikten sonraki sürümlerde meydana geleceğini not etmek önemlidir; çünkü mevcut sürüm hâlâ orijinal KMS key ile şifrelenmiş durumdadır. ```bash @@ -38,9 +38,9 @@ aws secretsmanager update-secret \ --secret-id MyTestSecret \ --kms-key-id arn:aws:kms:us-west-2:123456789012:key/EXAMPLE1-90ab-cdef-fedc-ba987EXAMPLE ``` -### DoS Secret Silme +### DoS Secret'i Silme -Bir secret'i silmek için minimum süre 7 gündür. +Bir secret'i silmek için gereken minimum gün sayısı 7'dir. ```bash aws secretsmanager delete-secret \ --secret-id MyTestSecret \ @@ -48,16 +48,16 @@ aws secretsmanager delete-secret \ ``` ## secretsmanager:RestoreSecret -Bir secret'i geri yüklemek mümkündür; bu, silinmek üzere planlanmış secret'ların geri yüklenmesine olanak tanır, çünkü secret'lar için minimum silme süresi 7 gün ve maksimum 30 gündür. secretsmanager:GetSecretValue izniyle birlikte, bu secret'ların içeriklerini almak mümkün olur. +Bir secret'i geri yüklemek mümkündür; bu, silinmek üzere planlanmış secret'lerin geri yüklenmesine olanak tanır; çünkü secret'ler için minimum silme süresi 7 gün, maksimum ise 30 gündür. secretsmanager:GetSecretValue izniyle birlikte bunların içeriğini almak mümkün olur. -Silinme işlemi devam eden bir secret'ı kurtarmak için aşağıdaki komutu kullanabilirsiniz: +Silinme sürecinde olan bir secret'i kurtarmak için aşağıdaki komutu kullanabilirsiniz: ```bash aws secretsmanager restore-secret \ --secret-id ``` ## secretsmanager:DeleteResourcePolicy -Bu eylem, bir secret'e kimlerin erişebileceğini kontrol eden resource policy'yi silmeye izin verir. Eğer resource policy erişimi belirli bir kullanıcı grubuna verecek şekilde yapılandırılmışsa, bu bir DoS'e yol açabilir. +Bu işlem, bir secret'e kimlerin erişebileceğini kontrol eden resource policy'yi silmeye izin verir. Resource policy belirli bir kullanıcı grubuna erişim verecek şekilde yapılandırıldıysa bu DoS'ye yol açabilir. Resource policy'yi silmek için: ```bash @@ -66,11 +66,11 @@ aws secretsmanager delete-resource-policy \ ``` ## secretsmanager:UpdateSecretVersionStage -Bir secret'in durumları, secret sürümlerini yönetmek için kullanılır. AWSCURRENT, uygulamaların kullandığı aktif sürümü işaret eder; AWSPREVIOUS, gerekirse geri dönebileceğiniz önceki sürümü saklar; AWSPENDING ise rotation sürecinde yeni bir sürümü aktif yapmadan önce hazırlamak ve doğrulamak için kullanılır. +Bir secret'in durumları, secret sürümlerini yönetmek için kullanılır. AWSCURRENT uygulamaların kullandığı aktif sürümü işaret eder, AWSPREVIOUS gerektiğinde geri alabilmeniz için önceki sürümü tutar ve AWSPENDING yeni bir sürümü mevcut hale getirmeden önce hazırlamak ve doğrulamak için rotasyon sürecinde kullanılır. -Uygulamalar her zaman AWSCURRENT etiketli sürümü okur. Birisi o etiketi yanlış sürüme taşırsa, uygulamalar geçersiz kimlik bilgilerini kullanır ve başarısız olabilir. +Uygulamalar her zaman AWSCURRENT etiketi olan sürümü okur. Birisi bu etiketi yanlış bir sürüme taşırsa, uygulamalar geçersiz kimlik bilgilerini kullanır ve başarısız olabilir. -AWSPREVIOUS otomatik olarak kullanılmaz. Ancak, AWSCURRENT kaldırılır veya yanlış atanırsa, her şey hâlâ önceki sürümle çalışıyor gibi görünebilir. +AWSPREVIOUS otomatik olarak kullanılmaz. Ancak AWSCURRENT kaldırılır veya yanlış atanırsa, her şeyin hâlâ önceki sürümle çalışıyor gibi görünebilir. ```bash aws secretsmanager update-secret-version-stage \ --secret-id \ @@ -79,3 +79,52 @@ aws secretsmanager update-secret-version-stage \ --remove-from-version-id ``` {{#include ../../../banners/hacktricks-training.md}} + + + + + +### BatchGetSecretValue ile Toplu Secret Exfiltration (her çağrıda en fazla 20) + +Secrets Manager BatchGetSecretValue API'sini kötüye kullanarak tek bir istekte en fazla 20 secret alabilirsiniz. Bu, her secret için GetSecretValue çağrısı yapmaya kıyasla API çağrısı hacmini önemli ölçüde azaltabilir. Eğer filtreler (tags/name) kullanılıyorsa, ListSecrets izni de gereklidir. CloudTrail yine de toplu olarak alınan her secret için bir GetSecretValue olayı kaydeder. + +Gerekli izinler +- secretsmanager:BatchGetSecretValue +- secretsmanager:GetSecretValue for each target secret +- secretsmanager:ListSecrets if using --filters +- kms:Decrypt on the CMKs used by the secrets (if not using aws/secretsmanager) + +> [!WARNING] +> Note that the permission `secretsmanager:BatchGetSecretValue` is not included enough to retrieve secrets, you also need `secretsmanager:GetSecretValue` for each secret you want to retrieve. + +Exfiltrate by explicit list +```bash +aws secretsmanager batch-get-secret-value \ +--secret-id-list \ +--query 'SecretValues[].{Name:Name,Version:VersionId,Val:SecretString}' +``` +Exfiltrate filtrelerle (tag key/value or name prefix) +```bash +# By tag key +aws secretsmanager batch-get-secret-value \ +--filters Key=tag-key,Values=env \ +--max-results 20 \ +--query 'SecretValues[].{Name:Name,Val:SecretString}' + +# By tag value +aws secretsmanager batch-get-secret-value \ +--filters Key=tag-value,Values=prod \ +--max-results 20 + +# By name prefix +aws secretsmanager batch-get-secret-value \ +--filters Key=name,Values=MyApp +``` +Kısmi başarısızlıkların ele alınması +```bash +# Inspect the Errors list for AccessDenied/NotFound and retry/adjust filters +aws secretsmanager batch-get-secret-value --secret-id-list +``` +Etkisi +- Daha az API çağrısıyla birçok sırrın hızlı “smash-and-grab” ile ele geçirilmesi, GetSecretValue artışlarına göre ayarlanmış uyarıları potansiyel olarak atlatabilir. +- CloudTrail günlükleri hâlâ toplu işlemle alınan her sır için bir GetSecretValue olayı içerir. diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-secrets-manager-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-secrets-manager-privesc.md index e1a31e15f..d87c6f49a 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-secrets-manager-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-secrets-manager-privesc.md @@ -4,7 +4,7 @@ ## Secrets Manager -Secrets Manager hakkında daha fazla bilgi için bakınız: +Daha fazla bilgi için Secrets Manager'a bakın: {{#ref}} ../aws-services/aws-secrets-manager-enum.md @@ -12,24 +12,24 @@ Secrets Manager hakkında daha fazla bilgi için bakınız: ### `secretsmanager:GetSecretValue` -Bu izne sahip bir attacker, AWS **Secretsmanager** içinde **bir secret içindeki kaydedilmiş değeri** alabilir. +Bu izne sahip bir saldırgan AWS **Secretsmanager** içindeki bir secret'ın **kaydedilmiş değerini** alabilir. ```bash aws secretsmanager get-secret-value --secret-id # Get value ``` -**Potential Impact:** AWS secrets manager service içinde yüksek hassasiyetli verilere erişim. +**Potansiyel Etki:** AWS Secrets Manager servisi içindeki yüksek hassasiyetli verilere erişim. > [!WARNING] -> Note that even with the `secretsmanager:BatchGetSecretValue` permission an attacker would also need `secretsmanager:GetSecretValue` to retrieve the sensitive secrets. +> `secretsmanager:BatchGetSecretValue` izni olsa bile, bir saldırganın hassas secret'ları almak için `secretsmanager:GetSecretValue` iznine de ihtiyacı olduğunu unutmayın. ### `secretsmanager:GetResourcePolicy`, `secretsmanager:PutResourcePolicy`, (`secretsmanager:ListSecrets`) -Önceki izinlerle **diğer principals/hesaplara (hatta dışarıdaki hesaplara)** **secret**'e erişim verme imkânı vardır. Bir KMS anahtarıyla şifrelenmiş **secret'leri okumak** için kullanıcının ayrıca **KMS anahtarına erişimi** olması gerektiğini unutmayın (daha fazla bilgi için [KMS Enum page](../aws-services/aws-kms-enum.md)). +Önceki izinlerle **diğer principals/accounts'a (hatta harici) erişim verme** ile **secret**'a erişim sağlamak mümkündür. KMS key ile şifrelenmiş **secret'ları okumak** için kullanıcının ayrıca **KMS key'e erişimi** olması gerektiğini unutmayın (daha fazla bilgi için [KMS Enum page](../aws-services/aws-kms-enum.md)). ```bash aws secretsmanager list-secrets aws secretsmanager get-resource-policy --secret-id aws secretsmanager put-resource-policy --secret-id --resource-policy file:///tmp/policy.json ``` -Çevirmem için policy.json içeriğini gönderin — şu anda çevrilecek bir metin yok. +policy.json: ```json { "Version": "2012-10-17",