Translated ['', 'src/pentesting-cloud/azure-security/az-services/az-stor

This commit is contained in:
Translator
2026-01-13 15:05:42 +00:00
parent 3705d773cf
commit 1238afd076

View File

@@ -1,97 +1,117 @@
# Az - Depolama Hesapları ve Bloblar
# Az - Depolama Hesapları & Blobs
{{#include ../../../banners/hacktricks-training.md}}
## Temel Bilgiler
Azure Depolama Hesapları, Microsoft Azure'daki temel hizmetlerdir ve çeşitli veri türleri için ölçeklenebilir, güvenli ve yüksek erişilebilir bulut **depolama sağlar**, bunlar arasında bloblar (ikili büyük nesneler), dosyalar, kuyruklar ve tablolar bulunur. Bu hizmetler, kolay yönetim için bu farklı depolama hizmetlerini tek bir ad alanı altında gruplandıran konteynerler olarak hizmet eder.
Azure Storage Accounts, blob'lar (binary large objects), dosyalar, kuyruklar ve tablolar dahil çeşitli veri türleri için ölçeklenebilir, güvenli ve yüksek kullanılabilirlikte bulut **depolama sağlayan** Microsoft Azure servisleridir. Bu farklı depolama servislerini tek bir ad alanı altında gruplayan kapsayıcılar olarak görev yaparlar ve yönetimi kolaylaştırır.
**Ana yapılandırma seçenekleri**:
- Her depolama hesabının **tüm Azure'da benzersiz bir adı** olmalıdır.
- Her depolama hesabı bir **bölge** veya Azure genişletilmiş bölgesinde dağıtılır.
- Daha iyi performans için depolama hesabının **premium** versiyonu seçilebilir.
- Rack, sürücü ve veri merkezi **arızalarına** karşı korumak için **4 tür yedeklilik seçeneği** arasından seçim yapmak mümkündür.
- Her storage account'un **Azure genelinde benzersiz bir isme** sahip olması gerekir.
- Her storage account bir **bölgede** veya bir Azure genişletilmiş zonunda dağıtılır.
- Daha iyi performans için storage account'un **premium** sürümünü seçmek mümkündür.
- Raf, disk ve veri merkezi **arıza**larına karşı korumak için **4 tür yedeklilik** arasından seçim yapılabilir.
**Güvenlik yapılandırma seçenekleri**:
- **REST API işlemleri için güvenli aktarım gerektir**: Depolama ile yapılan her iletişimde TLS gerektir.
- **Bireysel konteynerlerde anonim erişimi etkinleştirmeye izin verir**: Aksi takdirde, gelecekte anonim erişimi etkinleştirmek mümkün olmayacaktır.
- **Depolama hesabı anahtar erişimini etkinleştir**: Aksi takdirde, Paylaşılan Anahtarlarla erişim yasaklanacaktır.
- **REST API işlemleri için güvenli aktarımı zorunlu kılma**: Depolama ile yapılan herhangi bir iletişimde TLS gerektirir.
- **Bireysel container'larda anonim erişimi etkinleştirmeye izin verme**: Eğer kapalıysa, gelecekte anonim erişim etkinleştirilemez.
- **Depolama hesabı anahtar erişimini etkinleştirme**: Eğer kapalıysa, Shared Keys ile erişim yasaklanır.
- **Minimum TLS sürümü**
- **Kopyalama işlemleri için izin verilen kapsam**: Herhangi bir depolama hesabından, aynı Entra kiracısından herhangi bir depolama hesabından veya aynı sanal ağda özel uç noktaları olan depolama hesabından izin verin.
- **Kopyalama işlemleri için izin verilen kapsam**: Herhangi bir storage account'tan, aynı Entra tenant'ından herhangi bir storage account'tan veya aynı virtual network içinde private endpoint'li storage account'tan izin ver.
**Blob Depolama seçenekleri**:
- **Çapraz kiracı çoğaltmaya izin ver**
- **Erişim katmanı**: Sıcak (sık erişilen veriler), Soğuk ve Dondurulmuş (nadiren erişilen veriler)
- **Tenantlar arası replikasyona izin ver**
- **Erişim katmanı**: Hot (sık erişilen veri), Cool ve Cold (nadiren erişilen veri)
**Ağ seçenekleri**:
- **Ağ erişimi**:
- Tüm ağlardan izin ver
- Seçilen sanal ağlardan ve IP adreslerinden izin ver
- Seçili virtual network'lerden ve IP adreslerinden izin ver
- Genel erişimi devre dışı bırak ve özel erişim kullan
- **Özel uç noktalar**: Sanal ağdan depolama hesabına özel bir bağlantı sağlar.
- **Private endpoints**: Sanal ağdan depolama hesabına özel bir bağlantıya izin verir
**Veri koruma seçenekleri**:
- **Konteynerler için anlık görüntü geri yükleme**: Konteynerleri daha önceki bir duruma geri yüklemeye olanak tanır.
- Versiyonlama, değişiklik akışı ve blob yumuşak silme etkinleştirilmelidir.
- **Bloblar için yumuşak silmeyi etkinleştir**: Silinen bloblar (hatta üzerine yazılanlar) için gün sayısı cinsinden bir saklama süresi sağlar.
- **Konteynerler için yumuşak silmeyi etkinleştir**: Silinen konteynerler için gün sayısı cinsinden bir saklama süresi sağlar.
- **Dosya paylaşımları için yumuşak silmeyi etkinleştir**: Silinen dosya paylaşımları için gün sayısı cinsinden bir saklama süresi sağlar.
- **Bloblar için versiyonlamayı etkinleştir**: Bloblarınızın önceki sürümlerini koruyun.
- **Blob değişiklik akışını etkinleştir**: Bloblara yapılan oluşturma, değiştirme ve silme değişikliklerinin kayıtlarını tutun.
- **Sürüm düzeyinde değişmezlik desteğini etkinleştir**: Tüm blob sürümlerine uygulanacak zaman tabanlı saklama politikası belirlemenizi sağlar.
- Sürüm düzeyinde değişmezlik desteği ve konteynerler için anlık görüntü geri yükleme aynı anda etkinleştirilemez.
- **Konteynerler için point-in-time restore**: Konteynerleri önceki bir duruma geri yüklemeyi sağlar
- Bunun için versioning, change feed ve blob soft delete'in etkinleştirilmesi gerekir.
- **Blob'lar için soft delete'i etkinleştir**: Silinen blob'lar (üzerine yazılanlar dahil) için gün bazında bir saklama süresi sağlar
- **Konteynerler için soft delete'i etkinleştir**: Silinen konteynerler için gün bazında bir saklama süresi sağlar
- **File share'ler için soft delete'i etkinleştir**: Silinen file share'ler için gün bazında bir saklama süresi sağlar
- **Blob'lar için versioning'i etkinleştir**: Blob'larınızın önceki sürümlerini korur
- **Blob change feed'i etkinleştir**: Blob'larda yapılan oluşturma, değişiklik ve silme işlemlerinin loglarını tutar
- **Sürüm düzeyinde değişmezlik (version-level immutability) desteğini etkinleştir**: Tüm blob sürümlerine uygulanacak hesap düzeyinde zaman-temelli bir saklama politikası ayarlamanıza izin verir.
- Sürüm düzeyinde değişmezlik desteği ile konteynerler için point-in-time restore aynı anda etkinleştirilemez.
**Şifreleme yapılandırma seçenekleri**:
- **Şifreleme türü**: Microsoft yönetimli anahtarlar (MMK) veya Müşteri yönetimli anahtarlar (CMK) kullanmak mümkündür.
- **Altyapı şifrelemesini etkinleştir**: Verileri "daha fazla güvenlik" için çift şifrelemeye olanak tanır.
- **Şifreleme türü**: Microsoft-managed keys (MMK) veya Customer-managed keys (CMK) kullanılabilir
- **Altyapı şifrelemesini etkinleştir**: Verileri "daha fazla güvenlik" için çift şifrelemeye izin verir
### Depolama uç noktaları
<table data-header-hidden><thead><tr><th width="197">Depolama Hizmeti</th><th>Uç Nokta</th></tr></thead><tbody><tr><td><strong>Blob depolama</strong></td><td><code>https://<storage-account>.blob.core.windows.net</code><br><br><code>https://<stg-acc>.blob.core.windows.net/<container-name>?restype=container&comp=list</code></td></tr><tr><td><strong>Veri Gölü Depolama</strong></td><td><code>https://<storage-account>.dfs.core.windows.net</code></td></tr><tr><td><strong>Azure Dosyaları</strong></td><td><code>https://<storage-account>.file.core.windows.net</code></td></tr><tr><td><strong>Kuyruk depolama</strong></td><td><code>https://<storage-account>.queue.core.windows.net</code></td></tr><tr><td><strong>Tablo depolama</strong></td><td><code>https://<storage-account>.table.core.windows.net</code></td></tr></tbody></table>
<table data-header-hidden><thead><tr><th width="197">Depolama Servisi</th><th>Uçnokta</th></tr></thead><tbody><tr><td><strong>Blob depolama</strong></td><td><code>https://<storage-account>.blob.core.windows.net</code><br><br><code>https://<stg-acc>.blob.core.windows.net/<container-name>?restype=container&comp=list</code></td></tr><tr><td><strong>Data Lake Storage</strong></td><td><code>https://<storage-account>.dfs.core.windows.net</code></td></tr><tr><td><strong>Azure Files</strong></td><td><code>https://<storage-account>.file.core.windows.net</code></td></tr><tr><td><strong>Queue storage</strong></td><td><code>https://<storage-account>.queue.core.windows.net</code></td></tr><tr><td><strong>Table storage</strong></td><td><code>https://<storage-account>.table.core.windows.net</code></td></tr></tbody></table>
### Kamuya Açıklık
### Genel Erişim
"Blob kamuya açık erişimi izin ver" **etkinleştirildiğinde** (varsayılan olarak devre dışı), bir konteyner oluştururken:
Eğer "Allow Blob public access" **etkinse** (varsayılan olarak devre dışı), bir container oluştururken şunları yapabilirsiniz:
- **Blobları okumak için kamuya açık erişim** verilebilir (adını bilmeniz gerekir).
- **Konteyner bloblarını listeleyin** ve **okuyun**.
- Tamamen **özel** hale getirin.
- Blob'ları **okumak için genel erişim** verebilirsiniz (adı bilinmelidir).
- **Container içerisindeki blob'ları listeleyebilir** ve **okuyabilirsiniz**.
- Tamamen **özel** yapabilirsiniz
<figure><img src="https://lh7-rt.googleusercontent.com/slidesz/AGV_vUfoetUnYBPWQpRrWNnnlbqWpl8Rdoaeg5uBrCVlvcNDlnKwQHjZe8nUb2SfPspBgbu-lCZLmUei-hFi_Jl2eKbaxUtBGTjdUSDmkrcwr90VZkmuMjk9tyh92p75btfyzGiUTa0-=s2048?key=m8TV59TrCFPlkiNnmhYx3aZt" alt=""><figcaption></figcaption></figure>
### Depolama ile Bağlantı
#### Anonim blob maruziyetini denetleme
Herhangi bir **depolama** bulursanız, buna bağlanmak için [**Microsoft Azure Storage Explorer**](https://azure.microsoft.com/es-es/products/storage/storage-explorer/) aracını kullanabilirsiniz.
- **Veri açığa çıkarabilecek storage account'ları bulun**: `az storage account list | jq -r '.[] | select(.properties.allowBlobPublicAccess==true) | .name'`. Eğer `allowBlobPublicAccess` `false` ise container'ları public yapamazsınız.
- **Riskli hesapları inceleyin** bayrağı ve diğer zayıf ayarları doğrulamak için: `az storage account show --name <acc> --query '{allow:properties.allowBlobPublicAccess, minTls:properties.minimumTlsVersion}'`.
- **Bayrağın etkin olduğu container düzeyindeki açıklığı listeleyin:**
```bash
az storage container list --account-name <acc> \
--query '[].{name:name, access:properties.publicAccess}'
```
- `"Blob"`: anonim okuma **yalnızca blob adı bilindiğinde** izinlidir (listeleme yok).
- `"Container"`: anonim **listeleme + okuma** ile tüm bloblara erişim.
- `null`: özel; kimlik doğrulama gereklidir.
- **Kimlik bilgisi olmadan erişimi kanıtlayın**:
- Eğer `publicAccess` `Container` ise, anonim listeleme çalışır: `curl "https://<acc>.blob.core.windows.net/<container>?restype=container&comp=list"`.
- Hem `Blob` hem de `Container` için, blob adı bilindiğinde anonim blob indirme çalışır:
```bash
az storage blob download -c <container> -n <blob> --account-name <acc> --file /dev/stdout
# or via raw HTTP
curl "https://<acc>.blob.core.windows.net/<container>/<blob>"
```
### Storage'a Bağlan
## Depolamaya Erişim <a href="#about-blob-storage" id="about-blob-storage"></a>
Bağlanabileceğiniz herhangi bir **storage** bulursanız, bunu yapmak için [**Microsoft Azure Storage Explorer**](https://azure.microsoft.com/es-es/products/storage/storage-explorer/) aracını kullanabilirsiniz.
## Storage'a Erişim <a href="#about-blob-storage" id="about-blob-storage"></a>
### RBAC
Depolama hesaplarına erişmek için **RBAC rolleri** ile Entra ID ilkelerini kullanmak mümkündür ve bu önerilen yoldur.
Entra ID principals'larını **RBAC roles** kullanarak storage hesaplarına erişmek için kullanmak mümkündür ve bu önerilen yöntemdir.
### Erişim Anahtarları
### Access Keys
Depolama hesaplarının erişim anahtarları vardır ve bunlar kullanılarak erişim sağlanabilir. Bu, depolama hesabına **tam erişim sağlar.**
Storage hesaplarının erişim için kullanılabilecek access keys'leri vardır. Bu, storage hesabına **tam erişim** sağlar.
<figure><img src="../../../images/image (5).png" alt=""><figcaption></figcaption></figure>
### **Paylaşılan Anahtarlar ve Lite Paylaşılan Anahtarlar**
### **Shared Keys & Lite Shared Keys**
Belirli kaynaklara erişimi yetkilendirmek için erişim anahtarları ile imzalanmış [**Paylaşılan Anahtarlar**](https://learn.microsoft.com/en-us/rest/api/storageservices/authorize-with-shared-key) oluşturmak mümkündür.
Erişim anahtarlarıyla imzalanmış [**Shared Keys**](https://learn.microsoft.com/en-us/rest/api/storageservices/authorize-with-shared-key) oluşturarak signed URL aracılığıyla belirli kaynaklara erişimi yetkilendirmek mümkündür.
> [!NOTE]
> `CanonicalizedResource` kısmının depolama hizmetleri kaynağını (URI) temsil ettiğini unutmayın. Ve URL'deki herhangi bir kısım kodlanmışsa, `CanonicalizedResource` içinde de kodlanmalıdır.
> Note that the `CanonicalizedResource` part represents the storage services resource (URI). And if any part in the URL is encoded, it should also be encoded inside the `CanonicalizedResource`.
> [!NOTE]
> Bu, **varsayılan olarak `az` cli tarafından** istekleri kimlik doğrulamak için kullanılır. Entra ID ilkesi kimlik bilgilerini kullanmasını sağlamak için `--auth-mode login` parametresini belirtin.
> Bu, istekleri kimlik doğrulamak için varsayılan olarak `az` cli tarafından kullanılır. Entra ID principal credentials kullanmasını sağlamak için parametre `--auth-mode login` belirtin.
- Aşağıdaki bilgileri imzalayarak **blob, kuyruk ve dosya hizmetleri için bir paylaşılan anahtar** oluşturmak mümkündür:
- Aşağıdaki bilgileri imzalayarak blob, queue ve file servisleri için bir **shared key** oluşturmak mümkündür:
```bash
StringToSign = VERB + "\n" +
Content-Encoding + "\n" +
@@ -108,7 +128,7 @@ Range + "\n" +
CanonicalizedHeaders +
CanonicalizedResource;
```
- Aşağıdaki bilgileri imzalayarak **tablo hizmetleri için paylaşılan bir anahtar** oluşturmak mümkündür:
- Aşağıdaki bilgileri imzalayarak **tablo hizmetleri için paylaşılan anahtar** oluşturmak mümkündür:
```bash
StringToSign = VERB + "\n" +
Content-MD5 + "\n" +
@@ -116,7 +136,7 @@ Content-Type + "\n" +
Date + "\n" +
CanonicalizedResource;
```
- **Blob, kuyruk ve dosya hizmetleri için lite paylaşılan anahtar** oluşturmak mümkündür, aşağıdaki bilgileri imzalayarak:
- Aşağıdaki bilgileri imzalayarak **blob, queue ve file servisleri için lite paylaşılan anahtar** oluşturmak mümkündür:
```bash
StringToSign = VERB + "\n" +
Content-MD5 + "\n" +
@@ -130,7 +150,7 @@ CanonicalizedResource;
StringToSign = Date + "\n"
CanonicalizedResource
```
Daha sonra, anahtarı kullanmak için, aşağıdaki sözdizimini izleyen Authorization başlığında yapılabilir:
Anahtarı kullanmak için Authorization header'ında şu sözdizimi kullanılır:
```bash
Authorization="[SharedKey|SharedKeyLite] <AccountName>:<Signature>"
#e.g.
@@ -142,75 +162,78 @@ x-ms-date: Fri, 26 Jun 2015 23:39:12 GMT
Authorization: SharedKey myaccount:ctzMq410TV3wS7upTBcunJTDLEJwMAZuFPfr0mrrA08=
Content-Length: 0
```
### **Paylaşılan Erişim İmzası** (SAS)
### **Paylaşılan Erişim İmzası (SAS)**
Paylaşılan Erişim İmzaları (SAS), bir Azure Depolama hesabındaki kaynaklara erişim için **belirli izinler veren** güvenli, zaman sınırlı URL'lerdir ve hesabın erişim anahtarlarınıığa çıkarmadan kullanılabilir. Erişim anahtarları tüm kaynaklara tam yönetim erişimi sağlarken, SAS izinleri belirleyerek (okuma veya yazma gibi) ve bir son kullanma tarihi tanımlayarak daha ayrıntılı kontrol sağlar.
Shared Access Signatures (SAS), hesap erişim anahtarlarınıığa çıkarmadan bir Azure Storage hesabındaki kaynaklara erişim için belirli izinler veren, süre sınırlı ve güvenli URL'lerdir. Erişim anahtarları tüm kaynaklara tam yönetimsel erişim sağlarken, SAS izinleri (ör. read veya write) ve bir sona erme zamanı belirleyerek ayrıntılı kontrol sağlar.
#### SAS Türleri
- **Kullanıcı delegasyonu SAS**: Bu, SAS'ı imzalayacak ve izinleri kullanıcıdan SAS'a devredecek bir **Entra ID ilkesi** üzerinden oluşturulur. Sadece **blob ve veri gölü depolama** ile kullanılabilir ([docs](https://learn.microsoft.com/en-us/rest/api/storageservices/create-user-delegation-sas)). Tüm oluşturulan kullanıcı delegeli SAS'ları **iptal etmek** mümkündür.
- Kullanıcının sahip olduğu izinlerden "daha fazla" izinle bir delegasyon SAS oluşturmak mümkündür. Ancak, eğer ilke bu izinlere sahip değilse, çalışmayacaktır (privesc yok).
- **Hizmet SAS**: Bu, depolama hesabının **erişim anahtarlarından** biri kullanılarak imzalanır. Tek bir depolama hizmetindeki belirli kaynaklara erişim vermek için kullanılabilir. Anahtar yenilendiğinde, SAS çalışmayı durdurur.
- **Hesap SAS**: Bu da depolama hesabının **erişim anahtarlarından** biri ile imzalanır. Depolama hesabı hizmetleri (Blob, Kuyruk, Tablo, Dosya) genelinde kaynaklara erişim sağlar ve hizmet düzeyindeki işlemleri içerebilir.
- **User delegation SAS**: Bu, SAS'ı imzalayacak ve kullanıcıdan SAS'a izinleri devredecek bir **Entra ID principal** tarafından oluşturulur. Sadece **blob ve data lake storage** ile kullanılabilir ([docs](https://learn.microsoft.com/en-us/rest/api/storageservices/create-user-delegation-sas)). Oluşturulmuş tüm user delegated SAS'ların **revoke** edilmesi mümkündür.
- Bir delegation SAS'ı kullanıcının sahip olduklarından "daha fazla" izinle oluşturmak mümkün olsa bile, principal bu izinlere sahip değilse çalışmaz (no privesc).
- **Service SAS**: Bu, storage account **access keys**'lerden biri kullanılarak imzalanır. Tek bir storage service içindeki belirli kaynaklara erişim vermek için kullanılabilir. Eğer key yenilenirse, SAS çalışmayı durdurur.
- **Account SAS**: Bu da storage account **access keys**'lerden biri ile imzalanır. Bir storage account servisleri (Blob, Queue, Table, File) genelinde kaynaklara erişim verir ve servis seviyesinde operasyonları içerebilir.
Bir **erişim anahtarı** ile imzalanmış bir SAS URL'si şöyle görünür:
Bir access key ile imzalanmış SAS URL örneği:
- `https://<container_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`
Bir **kullanıcı delegasyonu** olarak imzalanmış bir SAS URL'si şöyle görünür:
Bir user delegation olarak imzalanmış SAS URL örneği:
- `https://<container_name>.blob.core.windows.net/testing-container?sp=r&st=2024-11-22T15:07:40Z&se=2024-11-22T23:07:40Z&skoid=d77c71a1-96e7-483d-bd51-bd753aa66e62&sktid=fdd066e1-ee37-49bc-b08f-d0e152119b04&skt=2024-11-22T15:07:40Z&ske=2024-11-22T23:07:40Z&sks=b&skv=2022-11-02&spr=https&sv=2022-11-02&sr=c&sig=7s5dJyeE6klUNRulUj9TNL0tMj2K7mtxyRc97xbYDqs%3D`
Bazı **http parametreleri**:
Bazı http parametrelerine dikkat:
- **`se`** parametresi SAS'ın **son kullanma tarihini** belirtir.
- **`sp`** parametresi SAS'ın **izinlerini** belirtir.
- **`sig`** SAS'ı doğrulayan **imzadır**.
- **`se`** parametresi SAS'ın **sona erme tarihini** gösterir
- **`sp`** parametresi SAS'ın **izinlerini** gösterir
- **`sig`** SAS'ı doğrulayan **imzadır**
#### SAS izinleri
Bir SAS oluştururken, hangi izinlerin verilmesi gerektiğini belirtmek gerekir. SAS'ın oluşturulduğu nesneye bağlı olarak farklı izinler dahil edilebilir. Örneğin:
SAS oluşturulurken hangi izinleri vereceği belirtilmelidir. SAS'ın oluşturulduğu nesneye bağlı olarak farklı izinler dahil edilebilir. Örneğin:
- (a)dd, (c)reate, (d)elete, (e)xecute, (f)ilter_by_tags, (i)set_immutability_policy, (l)ist, (m)ove, (r)ead, (t)ag, (w)rite, (x)delete_previous_version, (y)permanent_delete
## Azure Blob Depolama için SFTP Desteği
## Azure Blob Storage için SFTP Desteği
Azure Blob Depolama artık SSH Dosya Transfer Protokolü (SFTP) desteği sunuyor, bu da özel çözümler veya üçüncü taraf ürünler gerektirmeden doğrudan Blob Depolama'ya güvenli dosya transferi ve yönetimi sağlar.
Azure Blob Storage artık SSH File Transfer Protocol (SFTP) desteği sunar; bu sayede özel çözümler veya üçüncü taraf ürünlere ihtiyaç duymadan doğrudan Blob Storage'a güvenli dosya transferi ve yönetim yapılabilir.
### Ana Özellikler
### Önemli Özellikler
- Protokol Desteği: SFTP, hiyerarşik ad alanı (HNS) ile yapılandırılmış Blob Depolama hesaplarıyla çalışır. Bu, blob'ları dizinler ve alt dizinler halinde düzenleyerek daha kolay gezinme sağlar.
- Güvenlik: SFTP, kimlik doğrulama için yerel kullanıcı kimliklerini kullanır ve RBAC veya ABAC ile entegre olmaz. Her yerel kullanıcı aşağıdaki yöntemlerle kimlik doğrulaması yapabilir:
- Azure tarafından oluşturulan şifreler
- Genel-özel SSH anahtar çiftleri
- Ayrıntılı İzinler: Okuma, Yazma, Silme ve Listeleme gibi izinler, yerel kullanıcılara 100'e kadar konteyner için atanabilir.
- Ağ Dikkate Alınması: SFTP bağlantıları 22 numaralı port üzerinden yapılır. Azure, SFTP trafiğini güvence altına almak için güvenlik duvarları, özel uç noktalar veya sanal ağlar gibi ağ yapılandırmalarını destekler.
- Protocol Support: SFTP, hierarchical namespace (HNS) ile yapılandırılmış Blob Storage hesaplarıyla çalışır. Bu, blob'ları klasör ve alt klasörlere düzenleyerek gezinmeyi kolaylaştırır.
- Security: SFTP kimlik doğrulama için local user identities kullanır ve RBAC veya ABAC ile entegre olmaz. Her local user şu yöntemlerle doğrulanabilir:
- Azure-generated passwords
- Public-private SSH key pairs
- Granular Permissions: Read, Write, Delete ve List gibi izinler en fazla 100 container için local user'lara atanabilir.
- Networking Considerations: SFTP bağlantıları port 22 üzerinden yapılır. Azure, SFTP trafiğini güvence altına almak için firewalls, private endpoints veya virtual networks gibi ağ yapılandırmalarını destekler.
### Kurulum Gereksinimleri
- Hiyerarşik Ad Alanı: Depolama hesabı oluşturulurken HNS etkinleştirilmelidir.
- Desteklenen Şifreleme: Microsoft Güvenlik Geliştirme Yaşam Döngüsü (SDL) onaylı kriptografik algoritmalar gereklidir (örneğin, rsa-sha2-256, ecdsa-sha2-nistp256).
- SFTP Yapılandırması:
- Depolama hesabında SFTP'yi etkinleştirin.
- Uygun izinlere sahip yerel kullanıcı kimlikleri oluşturun.
- Kullanıcıların konteyner içindeki başlangıç konumlarını tanımlamak için ana dizinleri yapılandırın.
- Hierarchical Namespace: Storage account oluşturulurken HNS etkinleştirilmelidir.
- Supported Encryption: Microsoft Security Development Lifecycle (SDL) tarafından onaylanmış kriptografik algoritmalar gereklidir (ör. rsa-sha2-256, ecdsa-sha2-nistp256).
- SFTP Configuration:
- Enable SFTP on the storage account.
- Create local user identities with appropriate permissions.
- Configure home directories for users to define their starting location within the container.
### İzinler
| İzin | Sembol | Açıklama |
| ---------------------- | ------ | ------------------------------------ |
| **Okuma** | `r` | Dosya içeriğini oku. |
| **Yazma** | `w` | Dosyaları yükle ve dizinler oluştur.|
| **Listeleme** | `l` | Dizinlerin içeriğini listele. |
| **Silme** | `d` | Dosyaları veya dizinleri sil. |
| **Oluşturma** | `c` | Dosyaları veya dizinleri oluştur. |
| **Sahipliği Değiştirme** | `o` | Sahip kullanıcıyı veya grubu değiştir.|
| **İzinleri Değiştirme** | `p` | Dosyalar veya dizinler üzerindeki ACL'leri değiştir. |
| **Read** | `r` | Dosya içeriğini okuma. |
| **Write** | `w` | Dosya yükleme ve dizin oluşturma. |
| **List** | `l` | Dizin içeriklerini listeleme. |
| **Delete** | `d` | Dosya veya dizinleri silme. |
| **Create** | `c` | Dosya veya dizin oluşturma. |
| **Modify Ownership** | `o` | Sahip kullanıcı veya grubu değiştirme. |
| **Modify Permissions** | `p` | Dosya veya dizinlerde ACL'leri değiştirme. |
## Sayım
## Keşif
{{#tabs }}
{{#tab name="az cli" }}
<details>
<summary>az cli enumeration</summary>
```bash
# Get storage accounts
az storage account list #Get the account name from here
@@ -327,10 +350,15 @@ az storage account local-user list \
--account-name <storage-account-name> \
--resource-group <resource-group-name>
```
</details>
{{#endtab }}
{{#tab name="Az PowerShell" }}
```bash
<details>
<summary>Az PowerShell enumeration</summary>
```powershell
# Get storage accounts
Get-AzStorageAccount | fl
# Get rules to access the storage account
@@ -387,6 +415,8 @@ New-AzStorageBlobSASToken `
-Permission racwdl `
-ExpiryTime (Get-Date "2024-12-31T23:59:00Z")
```
</details>
{{#endtab }}
{{#endtabs }}
@@ -402,13 +432,13 @@ az-file-shares.md
../az-privilege-escalation/az-storage-privesc.md
{{#endref}}
## Sonrası İstismar
## Sömürme Sonrası
{{#ref}}
../az-post-exploitation/az-blob-storage-post-exploitation.md
{{#endref}}
## Süreklilik
## Kalıcı Erişim
{{#ref}}
../az-persistence/az-storage-persistence.md
@@ -419,5 +449,9 @@ az-file-shares.md
- [https://learn.microsoft.com/en-us/azure/storage/blobs/storage-blobs-introduction](https://learn.microsoft.com/en-us/azure/storage/blobs/storage-blobs-introduction)
- [https://learn.microsoft.com/en-us/azure/storage/common/storage-sas-overview](https://learn.microsoft.com/en-us/azure/storage/common/storage-sas-overview)
- [https://learn.microsoft.com/en-us/azure/storage/blobs/secure-file-transfer-protocol-support](https://learn.microsoft.com/en-us/azure/storage/blobs/secure-file-transfer-protocol-support)
- [Holiday Hack Challenge 2025: Blob Storage (Storage Secrets)](https://0xdf.gitlab.io/holidayhack2025/act1/blob-storage)
- [https://learn.microsoft.com/en-us/cli/azure/storage/account](https://learn.microsoft.com/en-us/cli/azure/storage/account)
- [https://learn.microsoft.com/en-us/cli/azure/storage/container](https://learn.microsoft.com/en-us/cli/azure/storage/container)
- [https://learn.microsoft.com/en-us/cli/azure/storage/blob](https://learn.microsoft.com/en-us/cli/azure/storage/blob)
{{#include ../../../banners/hacktricks-training.md}}