Az - Blob Storage

Sıfırdan kahraman olmak için AWS hackleme öğrenin htARTE (HackTricks AWS Kırmızı Takım Uzmanı)!

HackTricks'ı desteklemenin diğer yolları:

Temel Bilgiler

Belgelerden: Azure Blob depolama, Microsoft'un bulut için nesne depolama çözümüdür. Blob depolama, yapılandırılmamış verilerin büyük miktarlarda depolanması için optimize edilmiştir. Yapılandırılmamış veriler, metin veya ikili veriler gibi belirli bir veri modeline veya tanımına uymayan verilerdir.

Blob depolama üç tür kaynak sunar:

  • Depolama hesabı (benzersiz ad)

  • Depolama hesabındaki bir konteyner (klasör)

  • Bir konteynerdeki bir blob

Farklı depolama türleri

Blob depolama

https://<depolama-hesabı>.blob.core.windows.net https://<stg-acc>.blob.core.windows.net/<container-adı>?restype=container&comp=list

Azure Data Lake Depolama Gen2

https://<depolama-hesabı>.dfs.core.windows.net

Azure Dosyaları

https://<depolama-hesabı>.file.core.windows.net

Kuyruk depolama

https://<depolama-hesabı>.queue.core.windows.net

Tablo depolama

https://<depolama-hesabı>.table.core.windows.net

Depolamaya Erişim

  • RBAC rolleri ile Azure AD prensiplerini kullanın.

  • Erişim Anahtarları: Depolama hesabının erişim anahtarlarını kullanın. Bu, depolama hesabına tam erişim sağlar.

  • Paylaşılan Erişim İmzası (SAS): Zaman sınırlı ve belirli izinler.

  • Bir erişim anahtarı ile SAS URL'si oluşturabilirsiniz (tespit etmesi daha karmaşıktır).

  • SAS, erişim anahtarından oluşturulduğundan, yenilendiğinde SAS çalışmayı durdurur.

Kamu Maruziyeti

"Erişime İzin Ver Blob genel erişim" etkinleştirilmişse (varsayılan olarak devre dışı bırakılmış), şunları yapabilirsiniz:

  • Blobları okumak için genel erişim sağlayın (adlarını bilmelisiniz).

  • Konteyner bloblarını listeleyin ve okuyun.

Depolamaya Bağlanma

Herhangi bir depolama bulursanız, bağlanmak için Microsoft Azure Storage Explorer aracını kullanabilirsiniz.

SAS URL'leri

Belgelerden: Paylaşılan erişim imzası (SAS), depolama hesabınızdaki kaynaklara güvenli yetkilendirilmiş erişim sağlar. Bir SAS ile bir istemcinin verilerinize nasıl erişebileceği konusunda ayrıntılı kontrolünüz olur. Örneğin:

  • İstemcinin hangi kaynaklara erişebileceği.

  • Bu kaynaklara hangi izinlere sahip oldukları.

  • SAS'nin ne kadar süre geçerli olduğu.

Bir SAS URL'si şu şekilde görünür: https://<konteyner_adı>.blob.core.windows.net/yenikonteyner?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 veya python kullanın:

#pip3 install azure-storage-blob
from azure.storage.blob import BlobServiceClient

# List containers
conn_str="<SAS URL>"
svc = BlobServiceClient.from_connection_string(conn_str=conn_str)
for c in svc.list_containers():
print(c['name'])

# List blobs inside the containers
container = svc.get_container_client(container=c['name'])

for b in container.list_blobs():
print(b['name'])


# Download all the blobs
blob_name = b['name'].split("/")[::-1][0]
blob = svc.get_blob_client(container=c['name'],blob=b['name'])
with open(blob_name,"wb") as f:
f.write(blob.download_blob().readall())

Kullanıcı vekilliği SAS

Bir paylaşılan erişim imzası (SAS) belirli bir Azure Depolama hizmeti olan bir konteyner, dizin veya blob'a erişim için ya Azure Active Directory (Azure AD) kimlik bilgileri ya da bir hesap anahtarı kullanarak güvenli hale getirebilirsiniz. Bir kullanıcı vekilliği SAS oluşturmak için önce bir kullanıcı vekilliği anahtarı talep etmeniz ve ardından SAS'ı imzalamak için bu anahtarı kullanmanız gerekir.

Azure Blob Storage ve Azure Data Lake Storage Gen2 hem Kullanıcı Vekilliği Paylaşılan Erişim İmzası (SAS) için destek sağlar. Ancak, Saklanan Erişim İlke'lerinin Kullanıcı Vekilliği SAS ile uyumlu olmadığını unutmamak önemlidir.

Kullanıcı vekilliği SAS'ın Azure AD kimlik bilgileri ile güvence altına alındığını ve depolama hesabı anahtarları yerine kullanıldığını unutmayın. Bu, istemcilerin/uygulamaların SAS oluşturmak için depolama anahtarlarını saklamasını/geri almasını engeller.

Hizmet SAS

Bir hizmet SAS'ı depolama hesabı anahtarı ile güvence altına alınır. Bir hizmet SAS'ı yalnızca bir Azure Depolama hizmetindeki bir kaynağa erişimi vekil eder: Blob depolama, Kuyruk depolama, Tablo depolama veya Azure Dosyaları. Bir hizmet düzeyinde SAS için URI, SAS'ın erişimi vekil edeceği kaynağın URI'sini ve ardından SAS belirtecinin bulunduğu bir yapıya sahiptir.

Bir konteyner veya blob için SAS'ı güvence altına almak için Azure Active Directory (Azure AD) kimlik bilgilerini kullanmak için bir kullanıcı vekilliği SAS'ı kullanın.

Hesap SAS

Bir hesap SAS'ı biri depolama hesabı anahtarlarından (ikisi var) biri ile güvence altına alınır. Bir hesap SAS'ı bir veya daha fazla depolama hizmetindeki kaynaklara erişimi vekil eder. Bir hizmet veya kullanıcı vekilliği SAS ile mevcut olan tüm işlemler, bir hesap SAS'ı ile de mevcuttur.

dokümandan: Bir hesap SAS'ı oluşturarak şunları yapabilirsiniz:

  • Get/Set Service Properties ve Get Service Stats gibi şu anda hizmete özgü bir SAS ile mevcut olmayan hizmet düzeyi işlemlere erişimi vekil edin.

  • Bir hesap SAS'ı kullanarak aynı anda bir depolama hesabındaki birden fazla hizmete erişimi vekil edin. Örneğin, Azure Blob Storage ve Azure Dosyaları'ndaki kaynaklara erişimi bir hesap SAS'ı kullanarak vekil edebilirsiniz.

  • Bir nesneye özgü SAS ile mevcut olmayan konteynerler, kuyruklar, tablolar ve dosya paylaşımları için yazma ve silme işlemlerine erişimi vekil edin.

  • Kabul edilecek istekler için bir IP adresi veya IP adreslerinin bir aralığını belirtin.

  • Kabul edilecek HTTP protokolünü belirtin (yalnızca HTTPS veya HTTP/HTTPS).

Numaralandırma

# Get storage accounts
az storage account list #Get the account name from here

# Get keys to authenticate
az storage account keys list --account-name <name>

# Get shares
az storage share list --account-name <name> --account-key <key>

# Get dirs/files inside the share
az storage file list --account-name <name> --share-name <share-name> --account-key <key>
## If type is "dir", you can continue enumerationg files inside of it
az storage file list --account-name <name> --share-name <prev_dir/share-name> --account-key <key>

# Download a complete share (with directories and files inside of them)
az storage file download-batch -d . --source <share-name> --account-name <name> --account-key <key>

```powershell # Get storage accounts Get-AzStorageAccount | fl # Get rules to access the storage account Get-AzStorageAccount | select -ExpandProperty NetworkRuleSet # Get IPs (Get-AzStorageAccount | select -ExpandProperty NetworkRuleSet).IPRules # Get containers of a storage account Get-AzStorageContainer -Context (Get-AzStorageAccount -name -ResourceGroupName ).context # Get blobs inside container Get-AzStorageBlob -Container epbackup-planetary -Context (Get-AzStorageAccount -name -ResourceGroupName ).context # Get a blob from a container Get-AzStorageBlobContent -Container -Context (Get-AzStorageAccount -name -ResourceGroupName ).context -Blob -Destination .\Desktop\filename.txt ``` ## Referanslar

Sıfırdan kahraman olmaya kadar AWS hackleme öğrenin htARTE (HackTricks AWS Red Team Expert)!

HackTricks'ı desteklemenin diğer yolları:

Last updated