diff --git a/src/images/vm_to_aa.jpg b/src/images/vm_to_aa.jpg new file mode 100644 index 000000000..30893dfd5 Binary files /dev/null and b/src/images/vm_to_aa.jpg differ diff --git a/src/pentesting-cloud/aws-security/aws-basic-information/README.md b/src/pentesting-cloud/aws-security/aws-basic-information/README.md index 7cca9630e..5002c4d77 100644 --- a/src/pentesting-cloud/aws-security/aws-basic-information/README.md +++ b/src/pentesting-cloud/aws-security/aws-basic-information/README.md @@ -33,27 +33,27 @@ aws organizations create-account --account-name testingaccount --email testingac ``` ### **Organizasyon Birimleri** -Hesaplar **Organizasyon Birimleri (OU)** içinde gruplandırılabilir. Bu şekilde, Organizasyon Birimi için **tüm alt hesaplara uygulanacak** **politikalar** oluşturabilirsiniz. Bir OU'nun altı olarak başka OUs'lar da olabileceğini unutmayın. +Hesaplar **Organizasyon Birimleri (OU)** içinde gruplandırılabilir. Bu şekilde, Organizasyon Birimi için **tüm alt hesaplara uygulanacak** **politikalar** oluşturabilirsiniz. Bir OU'nun altı olarak başka OUlardan oluşabileceğini unutmayın. ```bash # You can get the root id from aws organizations list-roots aws organizations create-organizational-unit --parent-id r-lalala --name TestOU ``` ### Service Control Policy (SCP) -Bir **service control policy (SCP)**, SCP'nin etki ettiği hesaplarda kullanıcıların ve rollerin kullanabileceği hizmetleri ve eylemleri belirten bir politikadır. SCP'ler, **IAM** izin politikalarına **benzer**, ancak **hiçbir izin vermezler**. Bunun yerine, SCP'ler bir organizasyon, organizasyonel birim (OU) veya hesap için **maksimum izinleri** belirtir. Bir SCP'yi organizasyon kökünüze veya bir OU'ya eklediğinizde, **SCP, üye hesaplardaki varlıkların izinlerini sınırlar**. +Bir **service control policy (SCP)**, SCP'nin etkilediği hesaplarda kullanıcıların ve rollerin kullanabileceği hizmetleri ve eylemleri belirten bir politikadır. SCP'ler, **IAM** izin politikalarına **benzer**, ancak **hiçbir izin vermezler**. Bunun yerine, SCP'ler bir organizasyon, organizasyonel birim (OU) veya hesap için **maksimum izinleri** belirtir. Bir SCP'yi organizasyon kökünüze veya bir OU'ya eklediğinizde, **SCP, üye hesaplardaki varlıklar için izinleri sınırlar**. Bu, **root kullanıcının bile bir şey yapmasını durdurmanın TEK yoludur**. Örneğin, kullanıcıların CloudTrail'i devre dışı bırakmasını veya yedekleri silmesini engellemek için kullanılabilir.\ -Bunu aşmanın tek yolu, SCP'leri yapılandıran **master account**'u da tehlikeye atmaktır (master account engellenemez). +Bunu aşmanın tek yolu, SCP'leri yapılandıran **master hesabı** da tehlikeye atmaktır (master hesap engellenemez). > [!WARNING] -> **SCP'ler yalnızca hesap içindeki yetkilileri kısıtlar**, bu nedenle diğer hesaplar etkilenmez. Bu, bir SCP'nin `s3:GetObject` iznini reddetmesinin, insanların hesabınızdaki **bir kamu S3 bucket'ına erişmesini durdurmayacağı anlamına gelir**. +> **SCP'ler yalnızca hesap içindeki ilkeleri kısıtlar**, bu nedenle diğer hesaplar etkilenmez. Bu, bir SCP'nin `s3:GetObject` iznini reddetmesinin, insanların **hesabınızdaki bir kamu S3 bucket'ına erişmesini durdurmayacağı anlamına gelir**. SCP örnekleri: - Root hesabını tamamen reddet - Sadece belirli bölgeleri izin ver - Sadece beyaz listeye alınmış hizmetlere izin ver -- GuardDuty, CloudTrail ve S3 Public Block Access'in devre dışı bırakılmasını reddet +- GuardDuty, CloudTrail ve S3 Kamu Erişim Engeli'nin devre dışı bırakılmasını reddet - Güvenlik/olay yanıtı rollerinin silinmesini veya @@ -64,9 +64,27 @@ değiştirilmesini reddet. **JSON örneklerini** [https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps_examples.html](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps_examples.html) adresinde bulabilirsiniz. +### Resource Control Policy (RCP) + +Bir **resource control policy (RCP)**, **AWS organizasyonunuz içindeki kaynaklar için maksimum izinleri** tanımlayan bir politikadır. RCP'ler, sözdizimi açısından IAM politikalarına benzer, ancak **izin vermezler**—sadece diğer politikalar tarafından kaynaklara uygulanabilecek izinleri sınırlar. Bir RCP'yi organizasyon kökünüze, bir organizasyonel birime (OU) veya bir hesaba eklediğinizde, RCP, etkilenen kapsamda tüm kaynaklar üzerindeki kaynak izinlerini sınırlar. + +Bu, **kaynakların önceden tanımlanmış erişim seviyelerini aşmasını sağlamanın TEK yoludur**—bir kimlik tabanlı veya kaynak tabanlı politika çok izin verici olsa bile. Bu sınırlamaları aşmanın tek yolu, organizasyonunuzun yönetim hesabı tarafından yapılandırılan RCP'yi de değiştirmektir. + +> [!WARNING] +> RCP'ler yalnızca kaynakların sahip olabileceği izinleri kısıtlar. Doğrudan ilkelerin ne yapabileceğini kontrol etmezler. Örneğin, bir RCP bir S3 bucket'ına dış erişimi reddederse, bu, bucket'ın izinlerinin belirlenen sınırın ötesinde eylemlere asla izin vermesini sağlar—bir kaynak tabanlı politika yanlış yapılandırılmış olsa bile. + +RCP örnekleri: + +- S3 bucket'larını, yalnızca organizasyonunuz içindeki ilkeler tarafından erişilebilecek şekilde kısıtlayın +- KMS anahtar kullanımını yalnızca güvenilir organizasyonel hesaplardan gelen işlemlerle sınırlayın +- Yetkisiz değişiklikleri önlemek için SQS kuyruklarındaki izinleri sınırlandırın +- Hassas verileri korumak için Secrets Manager sırlarında erişim sınırlarını zorlayın + +Örnekleri [AWS Organizations Resource Control Policies belgelerinde](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps.html) bulabilirsiniz. + ### ARN -**Amazon Resource Name**, AWS içindeki her kaynağın **benzersiz adıdır**, bu şekilde oluşturulmuştur: +**Amazon Resource Name**, AWS içindeki her kaynağın **benzersiz adıdır**, bu şekilde oluşur: ``` arn:partition:service:region:account-id:resource-type/resource-id arn:aws:elasticbeanstalk:us-west-1:123456789098:environment/App/Env @@ -90,9 +108,9 @@ IAM, AWS hesabınızdaki kaynaklarınıza kimliklerin kimlik doğrulama, yetkile ### [AWS hesap kök kullanıcısı](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html) -Amazon Web Services (AWS) hesabı oluşturduğunuzda, hesabınızdaki tüm AWS hizmetlerine ve kaynaklarına **tam erişime sahip** tek bir oturum açma kimliği ile başlarsınız. Bu, AWS hesabının _**kök kullanıcısı**_dır ve **hesabı oluşturmak için kullandığınız e-posta adresi ve şifre ile oturum açarak** erişilir. +Amazon Web Services (AWS) hesabı oluşturduğunuzda, hesabınızdaki tüm AWS hizmetlerine ve kaynaklarına **tam erişime sahip** tek bir oturum açma kimliği ile başlarsınız. Bu, AWS hesap _**kök kullanıcısı**dır_ ve **hesabı oluşturmak için kullandığınız e-posta adresi ve şifre ile oturum açarak** erişilir. -Yeni bir **admin kullanıcısı**nın **kök kullanıcısından daha az yetkisi** olacağını unutmayın. +Yeni bir **admin kullanıcısının kök kullanıcıdan** **daha az izin** alacağını unutmayın. Güvenlik açısından, diğer kullanıcıları oluşturmanız ve bu kullanıcıyı kullanmaktan kaçınmanız önerilir. @@ -100,17 +118,17 @@ Güvenlik açısından, diğer kullanıcıları oluşturmanız ve bu kullanıcı IAM _kullanıcısı_, AWS'de **AWS ile etkileşimde bulunan kişi veya uygulamayı temsil etmek** için oluşturduğunuz bir varlıktır. AWS'deki bir kullanıcı, bir isim ve kimlik bilgileri (şifre ve en fazla iki erişim anahtarı) içerir. -Bir IAM kullanıcısı oluşturduğunuzda, ona **uygun izin politikaları eklenmiş bir kullanıcı grubunun üyesi** yaparak (önerilir) veya **doğrudan politikalar ekleyerek** **izinler** verirsiniz. +Bir IAM kullanıcısı oluşturduğunuzda, ona uygun izin politikaları eklenmiş bir **kullanıcı grubunun üyesi** yaparak (önerilir) veya **doğrudan politikalar ekleyerek** **izinler** verirsiniz. -Kullanıcılar, konsoldan giriş yapmak için **MFA etkinleştirilebilir**. MFA etkinleştirilmiş kullanıcıların API token'ları MFA ile korunmaz. Eğer **MFA kullanarak bir kullanıcının API anahtarlarının erişimini kısıtlamak** istiyorsanız, belirli eylemleri gerçekleştirmek için MFA'nın mevcut olması gerektiğini politikada belirtmeniz gerekir (örnek [**burada**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_configure-api-require.html)). +Kullanıcılar, konsoldan giriş yapmak için **MFA etkinleştirilebilir**. MFA etkinleştirilmiş kullanıcıların API token'ları MFA ile korunmaz. Eğer **MFA kullanarak bir kullanıcının API anahtarlarının erişimini kısıtlamak** istiyorsanız, belirli eylemleri gerçekleştirmek için MFA'nın mevcut olması gerektiğini politikada belirtmelisiniz (örnek [**burada**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_configure-api-require.html)). #### CLI - **Erişim Anahtarı ID**: 20 rastgele büyük harfli alfanümerik karakter, örneğin AKHDNAPO86BSHKDIRYT -- **Gizli erişim anahtarı ID**: 40 rastgele büyük ve küçük harf karakteri: S836fh/J73yHSb64Ag3Rkdi/jaD6sPl6/antFtU (kaybedilen gizli erişim anahtarı ID'lerini geri almak mümkün değildir). +- **Gizli erişim anahtarı ID**: 40 rastgele büyük ve küçük harf karakteri: S836fh/J73yHSb64Ag3Rkdi/jaD6sPl6/antFtU (kayıp gizli erişim anahtarı ID'lerini geri almak mümkün değildir). -Erişim Anahtarını **değiştirmeniz gerektiğinde** izlemeniz gereken süreç:\ -_Yeni bir erişim anahtarı oluşturun -> Yeni anahtarı sistem/uygulamaya uygulayın -> Orijinalini pasif olarak işaretleyin -> Yeni erişim anahtarının çalıştığını test edin ve doğrulayın -> Eski erişim anahtarını silin_ +**Erişim Anahtarını değiştirmek** istediğinizde izlemeniz gereken süreç:\ +_Yeni bir erişim anahtarı oluştur -> Yeni anahtarı sistem/uygulamaya uygula -> Orijinalini pasif olarak işaretle -> Yeni erişim anahtarının çalıştığını test et ve doğrula -> Eski erişim anahtarını sil_ ### MFA - Çok Faktörlü Kimlik Doğrulama @@ -123,8 +141,8 @@ MFA koşulları olan politikalar aşağıdakilere eklenebilir: - Amazon S3 bucket, Amazon SQS kuyruğu veya Amazon SNS konusu gibi bir kaynak - Bir kullanıcının üstlenebileceği bir IAM rolünün güven politikası -Eğer **CLI üzerinden** MFA kontrolü yapan bir kaynağa **erişmek** istiyorsanız, **`GetSessionToken`** çağrısı yapmalısınız. Bu, MFA hakkında bilgi içeren bir token verecektir.\ -Unutmayın ki **`AssumeRole` kimlik bilgileri bu bilgiyi içermez**. +Eğer **CLI üzerinden** **MFA kontrolü yapan** bir kaynağa erişmek istiyorsanız, **`GetSessionToken`** çağrısı yapmalısınız. Bu, MFA hakkında bilgi içeren bir token verecektir.\ +**`AssumeRole` kimlik bilgileri bu bilgiyi içermez** olduğunu unutmayın. ```bash aws sts get-session-token --serial-number --token-code ``` @@ -132,30 +150,30 @@ As [**burada belirtilmiştir**](https://docs.aws.amazon.com/IAM/latest/UserGuide ### [IAM kullanıcı grupları](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html) -Bir IAM [kullanıcı grubu](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html), **birden fazla kullanıcıya** aynı anda **politika eklemenin** bir yoludur, bu da bu kullanıcıların izinlerini yönetmeyi kolaylaştırabilir. **Roller ve gruplar bir grubun parçası olamaz**. +Bir IAM [kullanıcı grubu](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html), **birden fazla kullanıcıya** aynı anda **politika eklemenin** bir yoludur, bu da o kullanıcıların izinlerini yönetmeyi kolaylaştırabilir. **Roller ve gruplar bir grubun parçası olamaz**. -Bir **kimlik tabanlı politikayı bir kullanıcı grubuna** ekleyebilirsiniz, böylece kullanıcı grubundaki tüm **kullanıcılar** **politikanın izinlerini alır**. **Bir kullanıcı grubunu** bir **`Principal`** olarak **belirleyemezsiniz** (örneğin, kaynak tabanlı bir politika gibi) çünkü gruplar izinlerle, kimlik doğrulama ile değil ilişkilidir ve prensipler kimlik doğrulaması yapılmış IAM varlıklarıdır. +Bir **kimlik tabanlı politikayı bir kullanıcı grubuna** ekleyebilirsiniz, böylece kullanıcı grubundaki tüm **kullanıcılar** **politikanın izinlerini alır**. Bir **kullanıcı grubunu** bir **`Principal`** olarak tanımlayamazsınız (örneğin, kaynak tabanlı bir politika gibi) çünkü gruplar izinlerle, kimlik doğrulama ile değil, ilişkilidir ve prensipler kimlik doğrulaması yapılmış IAM varlıklarıdır. Kullanıcı gruplarının bazı önemli özellikleri şunlardır: -- Bir kullanıcı **grubu** **birçok kullanıcı** içerebilir ve bir **kullanıcı** **birden fazla gruba** **ait olabilir**. -- **Kullanıcı grupları iç içe olamaz**; yalnızca kullanıcıları içerebilir, diğer kullanıcı gruplarını değil. +- Bir **kullanıcı grubu** **birçok kullanıcı** içerebilir ve bir **kullanıcı** **birden fazla gruba** ait olabilir. +- **Kullanıcı grupları iç içe geçemez**; yalnızca kullanıcıları içerebilir, diğer kullanıcı gruplarını değil. - AWS hesabındaki tüm kullanıcıları otomatik olarak içeren **varsayılan bir kullanıcı grubu yoktur**. Böyle bir kullanıcı grubuna sahip olmak istiyorsanız, onu oluşturmalı ve her yeni kullanıcıyı ona atamalısınız. -- AWS hesabındaki IAM kaynaklarının sayısı ve boyutu, örneğin grup sayısı ve bir kullanıcının üye olabileceği grup sayısı sınırlıdır. Daha fazla bilgi için [IAM ve AWS STS kotalarına](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html) bakın. +- AWS hesabındaki IAM kaynaklarının sayısı ve boyutu, örneğin grup sayısı ve bir kullanıcının üyesi olabileceği grup sayısı sınırlıdır. Daha fazla bilgi için [IAM ve AWS STS kotalarına](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html) bakın. ### [IAM rolleri](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) -Bir IAM **rolü**, bir **kullanıcı** ile çok **benzer** olup, AWS'de ne yapabileceğini ve ne yapamayacağını belirleyen **izin politikalarına sahip bir kimliktir**. Ancak, bir rolün **ilişkili olduğu herhangi bir kimlik bilgisi** (şifre veya erişim anahtarları) yoktur. Bir kişiye özgü olarak değil, bir rolün **ihtiyacı olan herkes tarafından üstlenilmesi** amaçlanmıştır (ve yeterli izinlere sahip olunmalıdır). Bir **IAM kullanıcısı, belirli bir görev için geçici olarak** farklı izinler almak üzere bir rolü üstlenebilir. Bir rol, IAM yerine harici bir kimlik sağlayıcısı kullanarak oturum açan bir [**federasyon kullanıcısına**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers.html) **atanabilir**. +Bir IAM **rolü**, bir **kullanıcıya** çok **benzer** olup, AWS'de ne yapabileceğini ve ne yapamayacağını belirleyen **izin politikaları ile bir kimliktir**. Ancak, bir rolün **ilişkili olduğu herhangi bir kimlik bilgisi** (şifre veya erişim anahtarları) yoktur. Bir kişiye özgü olarak değil, bir rolün **ihtiyacı olan herkes tarafından üstlenilmesi** amaçlanmıştır (ve yeterli izinlere sahip olunmalıdır). Bir **IAM kullanıcısı, belirli bir görev için geçici olarak** farklı izinler almak üzere bir rolü üstlenebilir. Bir rol, IAM yerine harici bir kimlik sağlayıcı kullanarak oturum açan bir [**federasyon kullanıcısına**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers.html) atanabilir. -Bir IAM rolü, **iki tür politikadan** oluşur: **boş olamaz** olan bir **güven politikası**, **rolü kimin üstlenebileceğini** tanımlar ve **boş olamaz** olan bir **izin politikası**, **neye erişebileceğini** tanımlar. +Bir IAM rolü, **iki tür politikadan** oluşur: **boş olamaz** olan bir **güven politikası**, rolü **kimin üstlenebileceğini** tanımlar ve **boş olamaz** olan bir **izin politikası**, **neye erişebileceğini** tanımlar. #### AWS Güvenlik Token Servisi (STS) -AWS Güvenlik Token Servisi (STS), **geçici, sınırlı ayrıcalıklara sahip kimlik bilgileri** vermeyi kolaylaştıran bir web hizmetidir. Özellikle aşağıdakiler için tasarlanmıştır: +AWS Güvenlik Token Servisi (STS), **geçici, sınırlı ayrıcalıklı kimlik bilgileri** vermeyi kolaylaştıran bir web hizmetidir. Özellikle aşağıdakiler için tasarlanmıştır: ### [IAM'de Geçici Kimlik Bilgileri](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html) -**Geçici kimlik bilgileri esas olarak IAM rolleri ile kullanılır**, ancak başka kullanımları da vardır. Standart IAM kullanıcınızdan daha kısıtlı bir izin setine sahip geçici kimlik bilgileri talep edebilirsiniz. Bu, daha kısıtlı kimlik bilgileri tarafından **izin verilmeyen görevleri kazara yerine getirmenizi** **önler**. Geçici kimlik bilgilerinin bir avantajı, belirli bir süre sonra otomatik olarak süresinin dolmasıdır. Kimlik bilgilerinin geçerli olduğu süre üzerinde kontrol sahibisiniz. +**Geçici kimlik bilgileri esas olarak IAM rolleri ile kullanılır**, ancak başka kullanımları da vardır. Standart IAM kullanıcınızdan daha kısıtlı bir izin setine sahip geçici kimlik bilgileri talep edebilirsiniz. Bu, daha kısıtlı kimlik bilgileri tarafından **izin verilmeyen görevleri kazara gerçekleştirmenizi** **önler**. Geçici kimlik bilgilerinin bir avantajı, belirli bir süre sonra otomatik olarak süresinin dolmasıdır. Kimlik bilgilerinin geçerlilik süresi üzerinde kontrol sahibisiniz. ### Politikalar @@ -163,8 +181,8 @@ AWS Güvenlik Token Servisi (STS), **geçici, sınırlı ayrıcalıklara sahip k İzinleri atamak için kullanılır. 2 tür vardır: -- AWS yönetilen politikalar (AWS tarafından önceden yapılandırılmış) -- Müşteri Yönetilen Politikalar: Siz tarafından yapılandırılmıştır. AWS yönetilen politikalarına (bunlardan birini değiştirerek ve kendi politikanızı oluşturarak), politika oluşturucu (izinleri vermenize ve reddetmenize yardımcı olan bir GUI görünümü) kullanarak veya kendi politikanızı yazarak dayalı politikalar oluşturabilirsiniz. +- AWS yönetilen politikaları (AWS tarafından önceden yapılandırılmış) +- Müşteri Yönetilen Politikalar: Siz tarafından yapılandırılmıştır. AWS yönetilen politikalarına (birini değiştirerek ve kendi politikanızı oluşturarak), politika oluşturucu (izinleri vermenize ve reddetmenize yardımcı olan bir GUI görünümü) kullanarak veya kendi yazdığınız politikalarla dayalı politikalar oluşturabilirsiniz. **Varsayılan erişim** **reddedilir**, açık bir rol belirtilirse erişim verilecektir.\ Eğer **tek bir "Reddet" varsa, "İzin Ver"i geçersiz kılacaktır**, AWS hesabının kök güvenlik kimlik bilgilerini kullanan talepler hariç (varsayılan olarak izin verilir). @@ -193,28 +211,28 @@ Eğer **tek bir "Reddet" varsa, "İzin Ver"i geçersiz kılacaktır**, AWS hesab [Herhangi bir hizmette koşullar için kullanılabilecek global alanlar burada belgelenmiştir](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resourceaccount).\ [Her hizmet için koşullar için kullanılabilecek özel alanlar burada belgelenmiştir](https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_actions-resources-contextkeys.html). -#### Inline Policies +#### Inline Politika -Bu tür politikalar **doğrudan** bir kullanıcıya, gruba veya role atanır. Bu nedenle, başka birinin kullanabileceği gibi Politika listesinde görünmezler.\ +Bu tür politikalar **doğrudan** bir kullanıcıya, gruba veya role atanır. Bu nedenle, başka biri bunları kullanamadığı için Politika listesinde görünmezler.\ Inline politikalar, bir politikanın uygulandığı kimlik ile **katı bir birebir ilişkiyi sürdürmek** istiyorsanız faydalıdır. Örneğin, bir politikanın izinlerinin, amaçlandığı kimlik dışında başka bir kimliğe yanlışlıkla atanmadığından emin olmak istersiniz. Inline politika kullandığınızda, politikanın izinleri yanlış bir kimliğe yanlışlıkla eklenemez. Ayrıca, AWS Yönetim Konsolu'nu kullanarak o kimliği sildiğinizde, kimliğe gömülü politikalar da silinir. Bunun nedeni, bunların ana varlığın bir parçası olmasıdır. -#### Resource Bucket Policies +#### Kaynak Bucket Politikaları Bunlar, **kaynaklarda** tanımlanabilen **politikalar**dır. **AWS'nin tüm kaynakları bunları desteklemez**. -Eğer bir anahtarın üzerinde açık bir reddetme yoksa ve bir kaynak politikası onlara erişim veriyorsa, o zaman izin verilir. +Eğer bir anahtar üzerinde açık bir reddetme yoksa ve bir kaynak politikası onlara erişim veriyorsa, o zaman izin verilir. -### IAM Boundaries +### IAM Sınırları -IAM sınırları, bir kullanıcının veya rolün erişim sağlaması gereken izinleri **sınırlamak için** kullanılabilir. Bu şekilde, eğer kullanıcıya **farklı bir politika** tarafından farklı bir izin seti verilirse, bunları kullanmaya çalıştığında işlem **başarısız** olur. +IAM sınırları, bir kullanıcının veya rolün erişim sağlaması gereken izinleri **sınırlamak için** kullanılabilir. Bu şekilde, eğer kullanıcıya **farklı bir politika** tarafından farklı bir izin seti verilirse, bu izinleri kullanmaya çalıştığında işlem **başarısız** olur. -Bir sınır, bir kullanıcıya eklenen bir politikadır ve bu, kullanıcının veya rolün sahip olabileceği **maksimum izin seviyesini** gösterir. Yani, **kullanıcı Yönetici erişimine sahip olsa bile**, eğer sınır yalnızca S· bucket'larını okuyabileceğini gösteriyorsa, bu onun yapabileceği maksimum şeydir. +Bir sınır, bir kullanıcıya eklenen bir politikadır ve **kullanıcının veya rolün sahip olabileceği maksimum izin seviyesini gösterir**. Yani, **kullanıcı Yönetici erişimine sahip olsa bile**, eğer sınır sadece S· bucket'larını okuyabileceğini gösteriyorsa, yapabileceği maksimum şey budur. **Bu**, **SCP'ler** ve **en az ayrıcalık** ilkesine uymak, kullanıcıların ihtiyaç duyduğundan daha fazla izne sahip olmalarını kontrol etmenin yollarıdır. -### Session Policies +### Oturum Politikaları -Bir oturum politikası, bir rolün **üstlenildiği** zaman ayarlanan bir **politikadır**. Bu, o oturum için bir **IAM sınırı** gibi olacaktır: Bu, oturum politikasının izin vermediği, ancak **politikada belirtilenlerle sınırladığı** anlamına gelir (maksimum izinler rolün sahip olduğu izinlerdir). +Oturum politikası, bir rolün **üstlenildiği** zaman ayarlanan bir **politikadır**. Bu, o oturum için bir **IAM sınırı** gibi olacaktır: Bu, oturum politikasının izin vermediği, ancak **politikada belirtilenlerle sınırladığı** anlamına gelir (maksimum izinler rolün sahip olduğu izinlerdir). Bu, **güvenlik önlemleri** için faydalıdır: Bir yönetici çok ayrıcalıklı bir rol üstleneceği zaman, oturumun tehlikeye girmesi durumunda izinleri yalnızca oturum politikasında belirtilenlerle sınırlayabilir. ```bash @@ -224,7 +242,7 @@ aws sts assume-role \ [--policy-arns ] [--policy ] ``` -Not edin ki varsayılan olarak **AWS, üçüncü nedenlerden dolayı oluşturulacak oturumlara oturum politikaları ekleyebilir**. Örneğin, [kimlik doğrulaması yapılmamış cognito varsayılan rolleri](../aws-services/aws-cognito-enum/cognito-identity-pools.md#accessing-iam-roles) kullanıldığında (gelişmiş kimlik doğrulaması ile), AWS **oturum politikası ile oturum kimlik bilgileri** oluşturacaktır; bu, oturumun erişebileceği hizmetleri [**aşağıdaki liste ile sınırlamaktadır**](https://docs.aws.amazon.com/cognito/latest/developerguide/iam-roles.html#access-policies-scope-down-services). +Not edin ki varsayılan olarak **AWS, üçüncü nedenlerden dolayı oluşturulacak oturumlara oturum politikaları ekleyebilir**. Örneğin, [kimlik doğrulaması yapılmamış cognito varsayılan rolleri](../aws-services/aws-cognito-enum/cognito-identity-pools.md#accessing-iam-roles) kullanıldığında (gelişmiş kimlik doğrulaması ile), AWS **oturum politikası ile oturum kimlik bilgileri** oluşturacaktır; bu, oturumun erişebileceği hizmetleri [**aşağıdaki liste ile sınırlar**](https://docs.aws.amazon.com/cognito/latest/developerguide/iam-roles.html#access-policies-scope-down-services). Bu nedenle, bir noktada "... çünkü hiçbir oturum politikası ...'ya izin vermiyor" hatası ile karşılaşırsanız ve rol, eylemi gerçekleştirme erişimine sahipse, bunun nedeni **bunu engelleyen bir oturum politikasının olmasıdır**. @@ -233,9 +251,9 @@ Bu nedenle, bir noktada "... çünkü hiçbir oturum politikası ...'ya izin ver Kimlik federasyonu, **AWS'ye dışarıdan gelen kimlik sağlayıcılarından kullanıcıların** AWS kaynaklarına güvenli bir şekilde erişmesini sağlar; bu, geçerli bir IAM kullanıcı hesabından AWS kullanıcı kimlik bilgilerini sağlamayı gerektirmez.\ Bir kimlik sağlayıcısına örnek, kendi kurumsal **Microsoft Active Directory**'niz ( **SAML** aracılığıyla) veya **OpenID** hizmetleridir ( **Google** gibi). Federasyon erişimi, içindeki kullanıcıların AWS'ye erişmesine izin verecektir. -Bu güveni yapılandırmak için, **diğer platforma güvenen bir IAM Kimlik Sağlayıcısı (SAML veya OAuth)** oluşturulur. Ardından, en az bir **IAM rolü (güvenen) Kimlik Sağlayıcıya atanır**. Güvenilen platformdan bir kullanıcı AWS'ye eriştiğinde, belirtilen rol olarak erişecektir. +Bu güveni yapılandırmak için, **diğer platforma güvenen bir IAM Kimlik Sağlayıcısı (SAML veya OAuth)** oluşturulur. Ardından, en az bir **IAM rolü (kimlik sağlayıcıya güvenen) atanır**. Güvenilen platformdan bir kullanıcı AWS'ye eriştiğinde, belirtilen rol olarak erişim sağlayacaktır. -Ancak, genellikle üçüncü taraf platformda kullanıcının grubuna bağlı olarak **farklı bir rol vermek** istersiniz. Bu durumda, birkaç **IAM rolü üçüncü taraf Kimlik Sağlayıcıya güvenebilir** ve üçüncü taraf platform, kullanıcılara bir rolü veya diğerini üstlenme izni verecektir. +Ancak, genellikle **üçüncü taraf platformdaki kullanıcının grubuna bağlı olarak farklı bir rol vermek** istersiniz. Bu durumda, birkaç **IAM rolü üçüncü taraf Kimlik Sağlayıcıya güvenebilir** ve üçüncü taraf platform, kullanıcıların bir rolü veya diğerini üstlenmesine izin verecektir.
@@ -255,17 +273,17 @@ Kullanıcıları giriş yapmak için kullanılabilecek 3 kimlik kaynağı vardı Kimlik Merkezi dizininin en basit durumunda, **Kimlik Merkezi bir kullanıcı ve grup listesine sahip olacak** ve onlara **herhangi bir hesabın** politikalarını **atama** yeteneğine sahip olacaktır. -Bir Kimlik Merkezi kullanıcı/grubuna bir hesaba erişim vermek için, **Kimlik Merkeziye güvenen bir SAML Kimlik Sağlayıcısı oluşturulacak** ve **belirtilen politikalarla Kimlik Sağlayıcıya güvenen bir rol, hedef hesapta oluşturulacaktır**. +Bir Kimlik Merkezi kullanıcı/grubuna bir hesaba erişim vermek için, **Kimlik Merkezi'ne güvenen bir SAML Kimlik Sağlayıcısı oluşturulacak** ve hedef hesapta **belirtilen politikalarla Kimlik Sağlayıcıya güvenen bir rol oluşturulacaktır**. #### AwsSSOInlinePolicy -**IAM Kimlik Merkezi aracılığıyla oluşturulan rollere satır içi politikalarla izin vermek mümkündür**. **AWS Kimlik Merkezi'nde satır içi politikalar** verilen hesaplarda oluşturulan roller, **`AwsSSOInlinePolicy`** adlı bir satır içi politikada bu izinlere sahip olacaktır. +**IAM Kimlik Merkezi aracılığıyla oluşturulan rollere satır içi politikalar aracılığıyla izinler vermek** mümkündür. **AWS Kimlik Merkezi'nde satır içi politikalar** verilen hesaplarda oluşturulan roller, **`AwsSSOInlinePolicy`** adlı bir satır içi politikada bu izinlere sahip olacaktır. Bu nedenle, **`AwsSSOInlinePolicy`** adlı bir satır içi politikaya sahip 2 rol görseniz bile, bu **aynı izinlere sahip olduğu anlamına gelmez**. ### Hesaplar Arası Güvenler ve Roller -**Bir kullanıcı** (güvenen), bazı politikalarla bir Hesaplar Arası Rol oluşturabilir ve ardından **başka bir kullanıcının** (güvenilen) **kendi hesabına erişmesine izin verebilir**, ancak yalnızca **yeni rol politikalarında belirtilen erişimle**. Bunu oluşturmak için, yeni bir Rol oluşturun ve Hesaplar Arası Rolü seçin. Hesaplar Arası Erişim için roller iki seçenek sunar. Sahip olduğunuz AWS hesapları arasında erişim sağlamak ve sahip olduğunuz bir hesap ile üçüncü taraf bir AWS hesabı arasında erişim sağlamak.\ +**Bir kullanıcı** (güvenen), bazı politikalarla bir Hesaplar Arası Rol oluşturabilir ve ardından **başka bir kullanıcıya** (güvenilen) **hesabına erişim izni verebilir**, ancak yalnızca **yeni rol politikalarında belirtilen erişimle**. Bunu oluşturmak için, yeni bir Rol oluşturun ve Hesaplar Arası Rolü seçin. Hesaplar Arası Erişim için roller iki seçenek sunar. Sahip olduğunuz AWS hesapları arasında erişim sağlamak ve sahip olduğunuz bir hesap ile üçüncü taraf bir AWS hesabı arasında erişim sağlamak.\ **Güvenilen kullanıcıyı belirtmek ve genel bir şey koymamak** önerilir; aksi takdirde, diğer kimlik doğrulaması yapılmış kullanıcılar, federasyon kullanıcıları gibi, bu güveni kötüye kullanabilir. ### AWS Basit AD @@ -275,7 +293,7 @@ Desteklenmiyor: - Güven İlişkileri - AD Yönetim Merkezi - Tam PS API desteği -- AD Geri Dönüşüm Kutusu +- AD Geri Dönüş Kutusu - Grup Yönetilen Hizmet Hesapları - Şema Uzantıları - OS veya Örnekler için Doğrudan erişim yok @@ -286,10 +304,10 @@ Uygulama, geçici kimlik bilgileri oluşturmak için AssumeRoleWithWebIdentity k ### Diğer IAM seçenekleri -- **Şifre politikası ayarlarını** minimum uzunluk ve şifre gereksinimleri gibi seçeneklerle ayarlayabilirsiniz. -- **"Kimlik Bilgisi Raporu"nu** mevcut kimlik bilgileri hakkında bilgi ile indirebilirsiniz (kullanıcı oluşturma zamanı, şifre etkin mi...). Bir kimlik bilgisi raporu, her **dört saatte bir** kadar sık oluşturulabilir. +- **Şifre politikası ayarlarını** minimum uzunluk ve şifre gereksinimleri gibi seçeneklerle **ayarlayabilirsiniz**. +- Mevcut kimlik bilgileri hakkında bilgi içeren bir **"Kimlik Bilgisi Raporu"** **indirebilirsiniz** (kullanıcı oluşturma zamanı, şifrenin etkin olup olmadığı gibi...). Bir kimlik bilgisi raporu, her **dört saatte bir** kadar sık oluşturulabilir. -AWS Kimlik ve Erişim Yönetimi (IAM), AWS genelinde **ince ayrıntılı erişim kontrolü** sağlar. IAM ile, **kimin hangi hizmetlere ve kaynaklara erişebileceğini** ve hangi koşullar altında erişebileceğini belirtebilirsiniz. IAM politikaları ile, iş gücünüze ve sistemlerinize **en az ayrıcalık izinleri** sağlamak için izinleri yönetirsiniz. +AWS Kimlik ve Erişim Yönetimi (IAM), AWS genelinde **ince ayrıntılı erişim kontrolü** sağlar. IAM ile, **kimin hangi hizmetlere ve kaynaklara erişebileceğini** ve hangi koşullar altında erişebileceğini belirtebilirsiniz. IAM politikaları ile, iş gücünüze ve sistemlerinize **en az ayrıcalık izinlerini** sağlamak için izinleri yönetirsiniz. ### IAM ID Ön Ekleri @@ -305,7 +323,7 @@ AWS Kimlik ve Erişim Yönetimi (IAM), AWS genelinde **ince ayrıntılı erişim | AIPA | Amazon EC2 örnek profili | | AKIA | Erişim anahtarı | | ANPA | Yönetilen politika | -| ANVA | Yönetilen politikada sürüm | +| ANVA | Yönetilen politikadaki sürüm | | APKA | Genel anahtar | | AROA | Rol | | ASCA | Sertifika | @@ -329,7 +347,7 @@ Aşağıdaki ayrıcalıklar, çeşitli meta verilerin okunmasına izin verir: ### CLI Kimlik Doğrulaması Bir normal kullanıcının CLI aracılığıyla AWS'ye kimlik doğrulaması yapabilmesi için **yerel kimlik bilgilerine** sahip olması gerekir. Varsayılan olarak, bunları `~/.aws/credentials` dosyasında **manuel olarak** yapılandırabilir veya **çalıştırarak** `aws configure` yapabilirsiniz.\ -O dosyada birden fazla profil bulundurabilirsiniz; eğer **hiçbir profil** belirtilmezse, **aws cli** kullanırken o dosyada **`[default]`** olarak adlandırılan profil kullanılacaktır.\ +O dosyada birden fazla profil bulundurabilirsiniz; eğer **hiçbir profil** belirtilmezse, **aws cli** kullanılarak o dosyadaki **`[default]`** adlı profil kullanılacaktır.\ Birden fazla profil içeren kimlik bilgisi dosyası örneği: ``` [default] @@ -343,7 +361,7 @@ region = eu-west-2 ``` Eğer **farklı AWS hesaplarına** erişmeniz gerekiyorsa ve profilinize **bu hesaplar içinde bir rol üstlenme** yetkisi verildiyse, her seferinde STS'yi manuel olarak çağırmanıza gerek yoktur (`aws sts assume-role --role-arn --role-session-name sessname`) ve kimlik bilgilerini yapılandırmanıza gerek yoktur. -`~/.aws/config` dosyasını kullanarak [**üstlenilecek rolleri belirtmek**](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-role.html) mümkündür ve ardından `--profile` parametresini her zamanki gibi kullanabilirsiniz (rol üstlenme işlemi kullanıcı için şeffaf bir şekilde gerçekleştirilecektir).\ +`~/.aws/config` dosyasını kullanarak[ **üstlenilecek rolleri belirtmek**](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-role.html) ve ardından `--profile` parametresini her zamanki gibi kullanabilirsiniz (rol üstlenme, kullanıcı için şeffaf bir şekilde gerçekleştirilecektir).\ Bir yapılandırma dosyası örneği: ``` [profile acc2] @@ -357,12 +375,13 @@ Bu yapılandırma dosyası ile aws cli'yi şu şekilde kullanabilirsiniz: ``` aws --profile acc2 ... ``` -Eğer **tarayıcı** için buna **benzer** bir şey arıyorsanız, **AWS Extend Switch Roles** [**uzantısını**](https://chrome.google.com/webstore/detail/aws-extend-switch-roles/jpmkfafbacpgapdghgdpembnojdlgkdl?hl=en) kontrol edebilirsiniz. +Eğer **tarayıcı** için buna **benzer** bir şey arıyorsanız, **uzantı** [**AWS Extend Switch Roles**](https://chrome.google.com/webstore/detail/aws-extend-switch-roles/jpmkfafbacpgapdghgdpembnojdlgkdl?hl=en) kontrol edebilirsiniz. ## Referanslar - [https://docs.aws.amazon.com/organizations/latest/userguide/orgs_getting-started_concepts.html](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_getting-started_concepts.html) - [https://aws.amazon.com/iam/](https://aws.amazon.com/iam/) - [https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html) +- [https://aws.amazon.com/blogs/aws/introducing-resource-control-policies-rcps-a-new-authorization-policy/](https://aws.amazon.com/blogs/aws/introducing-resource-control-policies-rcps-a-new-authorization-policy/) {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-automation-accounts-privesc.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-automation-accounts-privesc.md index 591616bf6..df62ec883 100644 --- a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-automation-accounts-privesc.md +++ b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-automation-accounts-privesc.md @@ -1,8 +1,8 @@ -# Az - Azure Automation Accounts Privesc +# Az - Azure Automation Hesapları Privesc {{#include ../../../banners/hacktricks-training.md}} -## Azure Automation Accounts +## Azure Automation Hesapları Daha fazla bilgi için kontrol edin: @@ -10,20 +10,31 @@ Daha fazla bilgi için kontrol edin: ../az-services/az-automation-accounts.md {{#endref}} -### Hybrid Workers Group +### Hibrit Çalışanlar Grubu -Unutmayın ki eğer bir saldırgan bir şekilde bir hybrid worker'da rastgele bir runbook (rastgele kod) çalıştırabiliyorsa, **VM'nin konumuna geçiş yapacaktır**. Bu, bir yerel makine, farklı bir bulutun VPC'si veya hatta bir Azure VM olabilir. +- **Otomasyon Hesabından VM'ye** -Ayrıca, eğer hybrid worker Azure'da diğer Yönetilen Kimliklerle birlikte çalışıyorsa, runbook **runbook'un yönetilen kimliğine ve VM'nin metadata hizmetinden tüm yönetilen kimliklerine erişim sağlayacaktır**. +Unutmayın ki eğer bir şekilde bir saldırgan hibrit bir çalışanda rastgele bir runbook (rastgele kod) çalıştırabiliyorsa, **VM'nin konumuna geçiş yapacaktır**. Bu, bir yerel makine, farklı bir bulutun VPC'si veya hatta bir Azure VM olabilir. + +Ayrıca, eğer hibrit çalışan Azure'da diğer Yönetilen Kimliklerle birlikte çalışıyorsa, runbook **runbook'un yönetilen kimliğine ve VM'nin metadata hizmetinden tüm yönetilen kimliklerine erişim sağlayacaktır**. > [!TIP] -> **Metadata hizmetinin** yönetilen kimlikler token'ını almak için kullanılan hizmetten farklı bir URL'si vardır (**`http://169.254.169.254`**). +> **Metadata hizmetinin** otomasyon hesabının yönetilen kimlik token'ını aldığı hizmetten (**`IDENTITY_ENDPOINT`**) farklı bir URL'si vardır (**`http://169.254.169.254`**). + +- **VM'den Otomasyon Hesabına** + +Ayrıca, eğer birisi otomasyon hesabı scriptinin çalıştığı bir VM'yi ele geçirirse, **Otomasyon Hesabı** metadata'sını bulabilecek ve **Otomasyon Hesabı'na bağlı Yönetilen Kimlikler** için token'lar elde etmek üzere VM'den erişebilecektir. + +Aşağıdaki görüntüde görüldüğü gibi, VM üzerinde Yönetici erişimine sahip olmak, **işlem ortam değişkenlerinde** otomasyon hesabı metadata hizmetine erişmek için URL ve gizli anahtarı bulmayı mümkün kılar: + +![]() + ### `Microsoft.Automation/automationAccounts/jobs/write`, `Microsoft.Automation/automationAccounts/runbooks/draft/write`, `Microsoft.Automation/automationAccounts/jobs/output/read`, `Microsoft.Automation/automationAccounts/runbooks/publish/action` (`Microsoft.Resources/subscriptions/resourcegroups/read`, `Microsoft.Automation/automationAccounts/runbooks/write`) -Özetle, bu izinler **Automation Account'ta Runbook'lar oluşturma, değiştirme ve çalıştırma** yetkisi verir; bu da **Automation Account'ın bağlamında kod çalıştırmak** ve atanan **Yönetilen Kimliklere** ayrıcalıkları yükseltmek için kullanılabilir ve **kimlik bilgilerini** ve **şifrelenmiş değişkenleri** Automation Account'ta sızdırabilir. +Özetle, bu izinler **Otomasyon Hesabında Runbook'lar oluşturma, değiştirme ve çalıştırma** yetkisi verir; bu da **Otomasyon Hesabı bağlamında kod çalıştırmak** ve atanan **Yönetilen Kimliklere** ayrıcalıkları yükseltmek, ayrıca **kimlik bilgilerini** ve **şifrelenmiş değişkenleri** otomasyon hesabında sızdırmak için kullanılabilir. -**`Microsoft.Automation/automationAccounts/runbooks/draft/write`** izni, Automation Account'taki bir Runbook'un kodunu değiştirmeye olanak tanır: +**`Microsoft.Automation/automationAccounts/runbooks/draft/write`** izni, Otomasyon Hesabındaki bir Runbook'un kodunu değiştirmeye olanak tanır: ```bash # Update the runbook content with the provided PowerShell script az automation runbook replace-content --no-wait \ @@ -64,7 +75,7 @@ az automation runbook create --automation-account-name --resource ``` ### `Microsoft.Automation/automationAccounts/write`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action` -Bu izin, kullanıcının **Automation Account'a bir kullanıcı yönetilen kimliği atamasına** olanak tanır: +Bu izin, kullanıcının **Automation Account'a bir kullanıcı yönetimli kimlik atamasına** olanak tanır: ```bash az rest --method PATCH \ --url "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.Automation/automationAccounts/?api-version=2020-01-13-preview" \ @@ -82,7 +93,7 @@ az rest --method PATCH \ **`Microsoft.Automation/automationAccounts/schedules/write`** izni ile, her 15 dakikada bir (çok gizli değil) çalışan yeni bir Takvim oluşturmak mümkündür. Aşağıdaki komut kullanılarak yapılabilir. -Takvim için **minimum aralığın 15 dakika** olduğunu ve **minimum başlangıç zamanının 5 dakika** ileri olduğunu unutmayın. +Takvim için **minimum aralığın 15 dakika** olduğunu ve **minimum başlangıç zamanının 5 dakika** gelecekte olduğunu unutmayın. ```bash ## For linux az automation schedule create \ @@ -123,7 +134,7 @@ az rest --method PUT \ }' ``` > [!TIP] -> Önceki örnekte jobchedule id **`b510808a-8fdc-4509-a115-12cfc3a2ad0d` örneği** olarak bırakıldı, ancak bu atamayı oluşturmak için keyfi bir değer kullanmanız gerekecek. +> Önceki örnekte jobchedule id **`b510808a-8fdc-4509-a115-12cfc3a2ad0d` örneği** olarak bırakıldı, ancak bu atamayı oluşturmak için rastgele bir değer kullanmanız gerekecek. ### `Microsoft.Automation/automationAccounts/webhooks/write` @@ -194,7 +205,7 @@ az automation source-control create \ --token-type PersonalAccessToken \ --access-token github_pat_11AEDCVZ ``` -Bu, runbook'ları Github deposundan Automation Account'a otomatik olarak içe aktaracak ve bazı diğer izinlerle çalıştırmaya başlamak **yetkileri yükseltmek** mümkün olacaktır. +Bu, runbook'ları Github deposundan Automation Account'a otomatik olarak içe aktaracak ve bazı diğer izinlerle çalıştırmaya başlamak **yetkileri artırmak** mümkün olacaktır. Ayrıca, Automation Accounts'ta kaynak kontrolünün çalışabilmesi için yönetilen bir kimliğe sahip olması gerektiğini ve eğer bu bir kullanıcı yönetilen kimliği ise MI'nin istemci kimliğinin **`AUTOMATION_SC_USER_ASSIGNED_IDENTITY_ID`** değişkeninde belirtilmesi gerektiğini unutmayın. @@ -219,29 +230,29 @@ az rest --method PUT \ ``` ### Özel Çalışma Ortamları -Eğer bir otomasyon hesabı özel bir çalışma ortamı kullanıyorsa, çalışma ortamının özel bir paketini bazı kötü niyetli kodlarla (örneğin **bir arka kapı**) değiştirmek mümkün olabilir. Bu şekilde, o özel çalışma ortamını kullanan bir runbook çalıştırıldığında ve özel paket yüklendiğinde, kötü niyetli kod çalıştırılacaktır. +Eğer bir otomasyon hesabı özel bir çalışma ortamı kullanıyorsa, çalışma ortamının özel paketini bazı kötü niyetli kodlarla (örneğin **bir arka kapı**) üzerine yazmak mümkün olabilir. Bu şekilde, o özel çalışma ortamını kullanan bir runbook çalıştırıldığında ve özel paket yüklendiğinde, kötü niyetli kod çalıştırılacaktır. ### Durum Yapılandırmasını Tehdit Etme **Tam gönderiyi kontrol edin:** [**https://medium.com/cepheisecurity/abusing-azure-dsc-remote-code-execution-and-privilege-escalation-ab8c35dd04fe**](https://medium.com/cepheisecurity/abusing-azure-dsc-remote-code-execution-and-privilege-escalation-ab8c35dd04fe) -- Adım 1 — Dosyalar Oluşturma +- Adım 1 — Dosyaları Oluşturma **Gerekli Dosyalar:** İki PowerShell betiğine ihtiyaç vardır: 1. `reverse_shell_config.ps1`: Yükü alıp çalıştıran bir İstenilen Durum Yapılandırması (DSC) dosyası. [GitHub](https://github.com/nickpupp0/AzureDSCAbuse/blob/master/reverse_shell_config.ps1) adresinden temin edilebilir. 2. `push_reverse_shell_config.ps1`: Yapılandırmayı VM'ye yayınlamak için bir betik, [GitHub](https://github.com/nickpupp0/AzureDSCAbuse/blob/master/push_reverse_shell_config.ps1) adresinde mevcuttur. -**Özelleştirme:** Bu dosyalardaki değişkenler ve parametreler, kullanıcıya özgü ortama göre, kaynak adları, dosya yolları ve sunucu/yük tanımlayıcıları dahil olmak üzere özelleştirilmelidir. +**Özelleştirme:** Bu dosyalardaki değişkenler ve parametreler, kullanıcıya özgü ortam için, kaynak adları, dosya yolları ve sunucu/yük tanımlayıcıları dahil olmak üzere özelleştirilmelidir. - Adım 2 — Yapılandırma Dosyasını Sıkıştırma -`reverse_shell_config.ps1` bir `.zip` dosyasına sıkıştırılır, böylece Azure Depolama Hesabına transfer için hazır hale gelir. +`reverse_shell_config.ps1` bir `.zip` dosyasına sıkıştırılır, böylece Azure Depolama Hesabına aktarım için hazır hale gelir. ```bash Compress-Archive -Path .\reverse_shell_config.ps1 -DestinationPath .\reverse_shell_config.ps1.zip ``` - Adım 3 — Depolama Bağlamını Ayarla ve Yükle -Sıkıştırılmış yapılandırma dosyası, Azure'un Set-AzStorageBlobContent cmdlet'ini kullanarak önceden tanımlanmış Azure Storage konteyneri olan azure-pentest'e yüklenir. +Sıkıştırılmış yapılandırma dosyası, Azure'un Set-AzStorageBlobContent cmdlet'ini kullanarak önceden tanımlanmış bir Azure Depolama konteyneri olan azure-pentest'e yüklenir. ```bash Set-AzStorageBlobContent -File "reverse_shell_config.ps1.zip" -Container "azure-pentest" -Blob "reverse_shell_config.ps1.zip" -Context $ctx ``` @@ -255,7 +266,7 @@ Hedef Windows VM ve ters shell için port belirtmek üzere script düzenlenir. - Adım 5 — Yapılandırma Dosyasını Yayınla -Yapılandırma dosyası çalıştırılır ve ters shell scripti belirtilen konuma Windows VM üzerinde dağıtılır. +Yapılandırma dosyası çalıştırılır ve sonuç olarak ters shell scripti belirtilen konuma Windows VM üzerinde dağıtılır. - Adım 6 — Payload'ı Barındır ve Dinleyici Kur