Translated ['src/pentesting-cloud/azure-security/README.md', 'src/pentes

This commit is contained in:
Translator
2025-01-26 10:44:53 +00:00
parent 2c2ccd581d
commit 2517a83f64
3 changed files with 94 additions and 28 deletions

View File

@@ -10,17 +10,17 @@ Azure ve Entra ID'nin temellerini öğrenmek için aşağıdaki sayfayı ziyaret
az-basic-information/
{{#endref}}
## Azure Pentester/Kırmızı Ekip Metodolojisi
## Azure Pentester/Kırmızı Takım Metodolojisi
AZURE ortamını denetlemek için bilmek çok önemlidir: hangi **hizmetlerin kullanıldığı**, neyin **açık olduğu**, kimin neye **erişimi** olduğu ve iç Azure hizmetlerinin ve **dış hizmetlerin** nasıl bağlandığı.
Kırmızı Ekip perspektifinden, bir Azure ortamını ele geçirmenin **ilk adımı** bazı **ayak izleri** elde etmektir.
Kırmızı Takım bakış açısından, bir Azure ortamını ele geçirmenin **ilk adımı** bazı **ayak izleri** elde etmektir.
### Dış Enum & İlk Erişim
İlk adım, elbette, saldırdığınız kiracı hakkında bilgi toplamak ve bir ayak izi elde etmeye çalışmaktır.
Alan adı temelinde, **şirketin Azure kullanıp kullanmadığını**, **kiracı ID'sini** öğrenmek, aynı kiracıda başka **geçerli alan adlarını** (varsa) bulmak ve SSO'nun etkin olup olmadığını, e-posta yapılandırmalarını, geçerli kullanıcı e-postalarını gibi **ilgili bilgileri** elde etmek mümkündür...
Alan adı temelinde, **şirketin Azure kullanıp kullanmadığını**, **kiracı ID'sini**, aynı kiracıda başka **geçerli alan adlarını** (varsa) ve SSO'nun etkin olup olmadığını, e-posta yapılandırmalarını, geçerli kullanıcı e-postalarını gibi **ilgili bilgileri** öğrenmek mümkündür.
**Dış enum** gerçekleştirmek için aşağıdaki sayfayı kontrol edin:
@@ -29,7 +29,7 @@ az-unauthenticated-enum-and-initial-entry/
{{#endref}}
Bu bilgilerle, bir ayak izi elde etmeye çalışmanın en yaygın yolları şunlardır:
- **OSINT**: **leak**'leri Github veya başka herhangi bir açık kaynak platformda kontrol edin, bu platformlar **kimlik bilgileri** veya ilginç bilgiler içerebilir.
- **OSINT**: **kimlik bilgileri** veya ilginç bilgiler içerebilecek Github veya başka bir açık kaynak platformda **sızıntıları** kontrol edin.
- **Şifre** yeniden kullanımı, sızıntılar veya [şifre püskürtme](az-unauthenticated-enum-and-initial-entry/az-password-spraying.md)
- Bir çalışandan kimlik bilgileri satın almak
- [**Yaygın Phishing**](https://book.hacktricks.wiki/en/generic-methodologies-and-resources/phishing-methodology/index.html) (kimlik bilgileri veya Oauth Uygulaması)
@@ -37,29 +37,36 @@ Bu bilgilerle, bir ayak izi elde etmeye çalışmanın en yaygın yolları şunl
- 3. tarafların **ihlal edilmesi**
- Azure'da Barındırılan Uygulamalardaki Güvenlik Açıkları
- [**Sunucu Tarafı İstek Sahteciliği**](https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html) ile meta veri uç noktasına erişim
- **Alt alan ele geçirmeleri** gibi [https://godiego.co/posts/STO-Azure/](https://godiego.co/posts/STO-Azure/)
- Eğer bir geliştirici dizüstü bilgisayarı ele geçirilmişse ([WinPEAS ve LinPEAS](https://github.com/peass-ng/PEASS-ng) bu bilgiyi bulabilir):
- İçinde **`<HOME>/.Azure`**
- **Alt alan devralmaları** gibi [https://godiego.co/posts/STO-Azure/](https://godiego.co/posts/STO-Azure/)
- **Diğer azure hizmetleri yanlış yapılandırmaları**
- Bazı geliştirici dizüstü bilgisayarları ele geçirilmişse ([WinPEAS ve LinPEAS](https://github.com/peass-ng/PEASS-ng) bu bilgiyi bulabilir):
- **`<HOME>/.Azure`** içinde
- **`azureProfile.json`** geçmişte oturum açmış kullanıcılar hakkında bilgi içerir
- **`clouds.config`** abonelikler hakkında bilgi içerir
- **`service_principal_entries.json`** uygulama kimlik bilgilerini içerir (kiracı id, istemciler ve gizli anahtar). Sadece Linux & macOS'ta
- **`msal_token_cache.json`** erişim jetonları ve yenileme jetonlarını içerir. Sadece Linux & macOS'ta
- **`service_principal_entries.json`** uygulama kimlik bilgilerini içerir (kiracı id'si, istemciler ve gizli anahtar). Sadece Linux & macOS'ta
- **`msal_token_cache.json`** erişim belirteçlerini ve yenileme belirteçlerini içerir. Sadece Linux & macOS'ta
- **`service_principal_entries.bin`** ve msal_token_cache.bin Windows'ta kullanılır ve DPAPI ile şifrelenmiştir
- **`msal_http_cache.bin`** HTTP isteği önbelleğidir
- Yükleyin: `with open("msal_http_cache.bin", 'rb') as f: pickle.load(f)`
- **`AzureRmContext.json`** Az PowerShell kullanarak önceki oturum açma bilgilerini içerir (ancak kimlik bilgileri yoktur)
- İçinde **`C:\Users\<username>\AppData\Local\Microsoft\IdentityCache\*`** kullanıcıların DPAPI ile şifrelenmiş **erişim jetonları**, ID jetonları ve hesap bilgileri içeren birkaç `.bin` dosyası vardır.
- **`C:\Users\<username>\AppData\Local\Microsoft\TokenBroken\Cache\`** içindeki `.tbres` dosyalarında daha fazla **erişim jetonu** bulmak mümkündür; bu dosyalar DPAPI ile şifrelenmiş base64 içerir.
- Linux ve macOS'ta, Az PowerShell kullanarak **erişim jetonları, yenileme jetonları ve id jetonları** elde edebilirsiniz (kullanıldıysa) `pwsh -Command "Save-AzContext -Path /tmp/az-context.json"` komutunu çalıştırarak
- Windows'ta bu sadece id jetonları üretir.
- Linux ve macOS'ta Az PowerShell'in kullanılıp kullanılmadığını kontrol etmek mümkündür; `$HOME/.local/share/.IdentityService/` var mı diye bakarak (içindeki dosyalar boş ve işe yaramaz olsa da)
- **`C:\Users\<username>\AppData\Local\Microsoft\IdentityCache\*`** içinde, kullanıcıların DPAPI ile şifrelenmiş **erişim belirteçleri**, ID belirteçleri ve hesap bilgileri içeren birkaç `.bin` dosyası vardır.
- **`C:\Users\<username>\AppData\Local\Microsoft\TokenBroken\Cache\`** içindeki `.tbres` dosyalarında daha fazla **erişim belirteci** bulmak mümkündür; bu dosyalar DPAPI ile şifrelenmiş base64 içerir.
- Linux ve macOS'ta, Az PowerShell'den **erişim belirteçleri, yenileme belirteçleri ve id belirteçleri** almak için `pwsh -Command "Save-AzContext -Path /tmp/az-context.json"` komutunu çalıştırabilirsiniz (kullanıldıysa).
- Windows'ta bu sadece id belirteçleri üretir.
- Linux ve macOS'ta Az PowerShell'in kullanılıp kullanılmadığını kontrol etmek için `$HOME/.local/share/.IdentityService/` var mı diye bakmak mümkündür (içerdiği dosyalar boş ve işe yaramaz olsa da).
Aşağıdaki sayfada bir ayak izi elde etmeye yol açabilecek **diğer Azure Hizmetleri yanlış yapılandırmalarını** bulun:
{{#ref}}
az-unauthenticated-enum-and-initial-entry/
{{#endref}}
> [!NOTE]
> Unutmayın ki genellikle **en gürültülü** kısım **giriş** kısmıdır, kendisi değil.
> Genellikle **en gürültülü** bölümün **giriş** olduğunu, kendisinin değil, enum olduğunu unutmayın.
### Azure & Entra ID Araçları
Aşağıdaki araçlar, hem Entra ID kiracılarını hem de Azure ortamlarını yavaş (tespit edilmemek için) veya otomatik olarak (zaman kazanmak için) listelemek için çok faydalı olacaktır:
Aşağıdaki araçlar, hem Entra ID kiracılarını hem de Azure ortamlarını yavaşça (tespit edilmemek için) veya otomatik olarak (zaman kazanmak için) listelemek için çok faydalı olacaktır:
{{#ref}}
az-enumeration-tools.md
@@ -69,19 +76,19 @@ az-enumeration-tools.md
<figure><img src="../../images/image (268).png" alt=""><figcaption></figcaption></figure>
Geçerli kimlik bilgileriniz olsa da giriş yapamadığınız durumlarda, mevcut olabilecek bazı yaygın korumalar şunlardır:
Geçerli kimlik bilgileriniz olsa bile giriş yapamadığınız durumlarda, mevcut olabilecek bazı yaygın korumalar şunlardır:
- **IP beyaz listeleme** -- Geçerli bir IP'yi ele geçirmeniz gerekir
- **Coğrafi kısıtlamalar** -- Kullanıcının nerede yaşadığını veya şirketin ofislerinin nerede olduğunu bulmak ve aynı şehirden (veya en azından aynı ülkeden) bir IP almak
- **Coğrafi kısıtlamalar** -- Kullanıcının nerede yaşadığını veya şirketin ofislerinin nerede olduğunu bulup aynı şehirden (veya en azından aynı ülkeden) bir IP almak
- **Tarayıcı** -- Belki de yalnızca belirli bir işletim sisteminden (Windows, Linux, Mac, Android, iOS) bir tarayıcıya izin verilmektedir. Kurbanın/şirketin hangi işletim sistemini kullandığını öğrenin.
- Ayrıca, genellikle daha az sınırlı olan ve girişi daha az denetlenen **Hizmet Prensibi kimlik bilgilerini** ele geçirmeyi de deneyebilirsiniz.
- Ayrıca, genellikle daha az sınırlı olan ve girişi daha az incelenen **Hizmet Prensibi kimlik bilgilerini** ele geçirmeyi de deneyebilirsiniz.
Bunu aştıktan sonra, başlangıç ayarlarınıza geri dönebilir ve hala erişiminiz olabilir.
Bunu aştıktan sonra, başlangıç ayarınıza geri dönebilir ve hala erişiminiz olabilir.
### Whoami
> [!CAUTION]
> [**Az - Entra ID**](az-services/az-azuread.md) bölümünde az cli, AzureAD ve Az PowerShell'in **nasıl kurulacağını** öğrenin.
> [**Az - Entra ID**](az-services/az-azuread.md) bölümünde az cli, AzureAD ve Az PowerShell'in **nasıl yükleneceğini** öğrenin.
Bilmeniz gereken ilk şey **kim olduğunuzdur** (hangi ortamda olduğunuz):
@@ -148,13 +155,32 @@ az-enumeration-tools.md#automated-post-exploitation-tools
Kendinizi tanıdıktan sonra, **erişim sağladığınız Azure hizmetlerini saymaya** başlayabilirsiniz.
**Kaynaklar üzerindeki izinlerinizi** bulmaya başlamalısınız. Bunun için:
1. **Erişim sağladığınız kaynağı bulun**:
Az PowerShell komutu **`Get-AzResource`**, **mevcut kullanıcınızın görünürlüğü olan kaynakları bilmenizi sağlar**.
Ayrıca, **web konsolunda** [https://portal.azure.com/#view/HubsExtension/BrowseAll](https://portal.azure.com/#view/HubsExtension/BrowseAll) adresine giderek veya "Tüm kaynaklar" araması yaparak ya da `az rest --method GET --url "https://management.azure.com/subscriptions/<subscription-id>/resources?api-version=2021-04-01"` komutunu çalıştırarak aynı bilgiyi alabilirsiniz.
Ayrıca, aynı bilgiyi **web konsolunda** [https://portal.azure.com/#view/HubsExtension/BrowseAll](https://portal.azure.com/#view/HubsExtension/BrowseAll) adresine giderek veya "Tüm kaynaklar" araması yaparak veya şu komutu çalıştırarak alabilirsiniz: `az rest --method GET --url "https://management.azure.com/subscriptions/<subscription-id>/resources?api-version=2021-04-01"`
Dahası, yeterli izinlere sahip olduğunuzda, **`Get-AzRoleAssignment`** rolü, abonelikteki **tüm rolleri saymak veya belirli bir kaynak üzerindeki izinleri** belirtmek için kullanılabilir; bunu şu şekilde gösterebilirsiniz: **`Get-AzRoleAssignment -Scope /subscriptions/9291ff6e-6afb-430e-82a4-6f04b2d05c7f/resourceGroups/Resource_Group_1/providers/Microsoft.RecoveryServices/vaults/vault-m3ww8ut4`**
2. **Erişim sağladığınız kaynaklar üzerindeki izinlerinizi ve size atanan rolleri bulun**:
Aşağıdaki bölümde, en yaygın Azure hizmetleri ve bunları nasıl sayacınız hakkında bilgi bulabilirsiniz:
Bu işlemi gerçekleştirmek için **`Microsoft.Authorization/roleAssignments/read`** iznine ihtiyacınız olduğunu unutmayın.
Ayrıca, yeterli izinlerle, **`Get-AzRoleAssignment`** rolü, abonelikteki **tüm rolleri** saymak veya belirli bir kaynak üzerindeki izni belirtmek için kullanılabilir, örneğin: **`Get-AzRoleAssignment -Scope /subscriptions/9291ff6e-6afb-430e-82a4-6f04b2d05c7f/resourceGroups/Resource_Group_1/providers/Microsoft.RecoveryServices/vaults/vault-m3ww8ut4`**.
Bu bilgiyi **`az rest --method GET --uri "https://management.azure.com/<Scope>/providers/Microsoft.Authorization/roleAssignments?api-version=2020-08-01-preview" | jq ".value"`** komutunu çalıştırarak da alabilirsiniz:
- **`az rest --method GET --uri "https://management.azure.com//subscriptions/9291ff6e-6afb-430e-82a4-6f04b2d05c7f/resourceGroups/Resource_Group_1/providers/Microsoft.KeyVault/vaults/vault-m3ww8ut4/providers/Microsoft.Authorization/roleAssignments?api-version=2020-08-01-preview" | jq ".value"`**
3. **Size atanan rollerin ayrıntılı izinlerini bulun**:
Ayrıntılı izinleri almak için **`(Get-AzRoleDefinition -Id "<RoleDefinitionId>").Actions`** komutunu çalıştırabilirsiniz.
Ya da API'yi doğrudan **`az rest --method GET --uri "https://management.azure.com//subscriptions/<subscription-id>/providers/Microsoft.Authorization/roleDefinitions/<RoleDefinitionId>?api-version=2020-08-01-preview" | jq ".properties"`** komutuyla çağırabilirsiniz.
Aşağıdaki bölümde **en yaygın Azure hizmetleri ve bunları nasıl sayacağınız hakkında bilgi bulabilirsiniz**:
{{#ref}}
az-services/
@@ -164,19 +190,19 @@ az-services/
Azure ortamının nasıl yapılandığını ve hangi hizmetlerin kullanıldığını öğrendikten sonra, **yetki yükseltme, yan hareket etme, diğer post-exploitation saldırılarını gerçekleştirme ve sürekliliği sağlama** yollarını aramaya başlayabilirsiniz.
Aşağıdaki bölümde, en yaygın Azure hizmetlerinde yetki yükseltme hakkında bilgi bulabilirsiniz:
Aşağıdaki bölümde en yaygın Azure hizmetlerinde yetki yükseltme hakkında bilgi bulabilirsiniz:
{{#ref}}
az-privilege-escalation/
{{#endref}}
Aşağıdaki bölümde, en yaygın Azure hizmetlerinde post-exploitation saldırılarını nasıl gerçekleştireceğiniz hakkında bilgi bulabilirsiniz:
Aşağıdaki bölümde en yaygın Azure hizmetlerinde post-exploitation saldırıları gerçekleştirme hakkında bilgi bulabilirsiniz:
{{#ref}}
az-post-exploitation/
{{#endref}}
Aşağıdaki bölümde, en yaygın Azure hizmetlerinde sürekliliği nasıl sağlayacağınız hakkında bilgi bulabilirsiniz:
Aşağıdaki bölümde en yaygın Azure hizmetlerinde sürekliliği sağlama hakkında bilgi bulabilirsiniz:
{{#ref}}
az-persistence/

View File

@@ -1 +0,0 @@
# Az - Yetki Yükseltme

View File

@@ -0,0 +1,41 @@
# Az - Storage Unauth
{{#include ../../../banners/hacktricks-training.md}}
## Storage Unauth
Depolama hakkında daha fazla bilgi için kontrol edin:
{{#ref}}
../az-services/az-storage.md
{{#endref}}
### Açık Depolama
ık depolamayı keşfetmek için [**InvokeEnumerateAzureBlobs.ps1**](https://github.com/NetSPI/MicroBurst/blob/master/Misc/Invoke-EnumerateAzureBlobs.ps1) gibi bir araç kullanabilirsiniz; bu araç **`Microburst/Misc/permutations.txt`** dosyasını kullanarak **açık depolama hesaplarını bulmak** için denemeler (çok basit) oluşturacaktır.
```bash
Import-Module .\MicroBurst\MicroBurst.psm1
Invoke-EnumerateAzureBlobs -Base corp
[...]
https://corpcommon.blob.core.windows.net/secrets?restype=container&comp=list
[...]
# Access https://corpcommon.blob.core.windows.net/secrets?restype=container&comp=list
# Check: <Name>ssh_info.json</Name>
# Access then https://corpcommon.blob.core.windows.net/secrets/ssh_info.json
```
Aynı zamanda bu amaç için [**MicroBust**](https://github.com/NetSPI/MicroBurst) yöntemini de kullanabilirsiniz. Bu fonksiyon, birkaç permütasyon ile birlikte temel alan adını birkaç **azure alanında** (depolama alanları dahil) arayacaktır:
```bash
Import-Module .\MicroBurst\MicroBurst.psm1 -Verbose
Invoke-EnumerateAzureSubDomains -Base corp -Verbose
```
### SAS URL'leri
Bir _**paylaşımlı erişim imzası**_ (SAS) URL'si, belirli bir Depolama hesabının (tam bir konteyner, bir dosya olabilir...) belirli izinlerle (okuma, yazma...) kaynaklara erişim **sağlayan** bir URL'dir. Eğer sızmış bir tane bulursanız, hassas bilgilere erişim sağlayabilirsiniz, bu şekilde görünür (bu bir konteyner erişimi içindir, eğer sadece bir dosyaya erişim veriyorsa, URL'nin yolu o dosyayı da içerecektir):
`https://<storage_account_name>.blob.core.windows.net/newcontainer?sp=r&st=2021-09-26T18:15:21Z&se=2021-10-27T02:14:21Z&spr=https&sv=2021-07-08&sr=c&sig=7S%2BZySOgy4aA3Dk0V1cJyTSIf1cW%2Fu3WFkhHV32%2B4PE%3D`
Verilere erişmek için [**Storage Explorer**](https://azure.microsoft.com/en-us/features/storage-explorer/) kullanın
{{#include ../../../banners/hacktricks-training.md}}