Az - Blob Storage

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Podstawowe informacje

Z dokumentacji: Azure Blob storage to rozwiązanie przechowywania obiektów Microsoftu dla chmury. Blob storage jest zoptymalizowany do przechowywania ogromnych ilości danych niestrukturyzowanych. Dane niestrukturyzowane to dane, które nie podlegają określonemu modelowi danych ani definicji, takie jak dane tekstowe lub binarne.

Blob storage oferuje trzy rodzaje zasobów:

  • Konto przechowywania (unikalna nazwa)

  • Kontener w koncie przechowywania (folder)

  • Blob w kontenerze

Różne rodzaje przechowywania

Blob storage

https://<storage-account>.blob.core.windows.net https://<stg-acc>.blob.core.windows.net/<container-name>?restype=container&comp=list

Azure Data Lake Storage Gen2

https://<storage-account>.dfs.core.windows.net

Azure Files

https://<storage-account>.file.core.windows.net

Queue storage

https://<storage-account>.queue.core.windows.net

Table storage

https://<storage-account>.table.core.windows.net

Dostęp do przechowywania

  • Użyj podmiotów Azure AD za pomocą ról RBAC.

  • Klucze dostępu: Użyj kluczy dostępu do konta przechowywania. Zapewnia to pełny dostęp do konta przechowywania.

  • Wspólny podpis dostępu (SAS): Ograniczony czasowo i określone uprawnienia.

  • Możesz wygenerować adres URL SAS z kluczem dostępu (trudniejszy do wykrycia).

  • Ponieważ SAS jest generowany z klucza dostępu, jeśli zostanie odnowiony, SAS przestaje działać.

Publiczne wystawienie

Jeśli opcja "Zezwalaj na publiczny dostęp do blobów" jest włączona (domyślnie wyłączona), można:

  • Udzielić publicznego dostępu do odczytu blobów (musisz znać nazwę).

  • Wyświetlić bloby kontenera i odczytać je.

Połączenie z przechowywaniem

Jeśli znajdziesz jakieś przechowywanie, do którego możesz się podłączyć, możesz użyć narzędzia Microsoft Azure Storage Explorer do tego celu.

Adresy URL SAS

Z dokumentacji: Wspólny podpis dostępu (SAS) zapewnia bezpieczny udzielony dostęp do zasobów w twoim koncie przechowywania. Dzięki SAS masz szczegółową kontrolę nad tym, w jaki sposób klient może uzyskać dostęp do twoich danych. Na przykład:

  • Do jakich zasobów klient może uzyskać dostęp.

  • Jakie uprawnienia mają do tych zasobów.

  • Jak długo jest ważny SAS.

Adres URL SAS wygląda tak: 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

Użyj Storage Explorer do dostępu do danych lub python:

#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 conteiner
container = svc.get_container_client(container="<container_name>")
for b in container.list_blobs():
print(b['name']

# Download file
blob = svc.get_blob_client(container="<container_name>",blob="<blob_name>")
with open("download.out","wb") as f:
f.write(blob.download_blob().readall())

Delegacja użytkownika SAS

Możesz zabezpieczyć token udostępnionego dostępu (SAS) do kontenera, katalogu lub blobu, korzystając zarówno z poświadczeń Azure Active Directory (Azure AD), jak i klucza konta. Aby utworzyć użytkownika delegującego SAS, musisz najpierw poprosić o klucz delegującego użytkownika, który następnie używasz do podpisania SAS.

Obsługa Użytkownika Delegującego Udostępnionego Dostępu (SAS) jest dostępna zarówno w Azure Blob Storage, jak i Azure Data Lake Storage Gen2. Jednak ważne jest zauważenie, że Zachowane Polityki Dostępu nie są kompatybilne z Użytkownikiem Delegującym SAS.

Należy zauważyć, że użytkownik delegujący SAS jest zabezpieczony za pomocą poświadczeń Azure AD zamiast kluczy konta magazynowego. Zapobiega to klientom/aplikacjom przechowywania/pobierania kluczy magazynu w celu utworzenia SAS.

Usługa SAS

Usługa SAS jest zabezpieczona za pomocą klucza konta magazynowego. Usługa SAS deleguje dostęp do zasobu tylko w jednej z usług Azure Storage: Blob storage, Queue storage, Table storage lub Azure Files. URI dla SAS na poziomie usługi składa się z adresu URI do zasobu, dla którego SAS będzie delegował dostęp, a następnie z tokena SAS.

Aby użyć poświadczeń Azure Active Directory (Azure AD) do zabezpieczenia SAS dla kontenera lub blobo, użyj użytkownika delegującego SAS.

Konto SAS

Konto SAS jest zabezpieczone jednym z kluczy konta magazynowego (są 2). Konto SAS deleguje dostęp do zasobów w jednej lub kilku usługach magazynowych. Wszystkie operacje dostępne za pomocą SAS na poziomie usługi lub delegującego użytkownika są również dostępne za pomocą konta SAS.

z dokumentacji: Tworząc konto SAS, możesz:

  • Delegować dostęp do operacji na poziomie usługi, które obecnie nie są dostępne za pomocą SAS specyficznego dla usługi, takich jak operacje Get/Set Service Properties i Get Service Stats.

  • Delegować dostęp do więcej niż jednej usługi w koncie magazynowym jednocześnie. Na przykład możesz delegować dostęp do zasobów zarówno w Azure Blob Storage, jak i Azure Files, korzystając z konta SAS.

  • Delegować dostęp do operacji zapisu i usuwania dla kontenerów, kolejek, tabel i udziałów plików, które nie są dostępne za pomocą SAS specyficznego dla obiektu.

  • Określić adres IP lub zakres adresów IP, z których będą akceptowane żądania.

  • Określić protokół HTTP, z którego będą akceptowane żądania (HTTPS lub HTTP/HTTPS).

Wyliczanie

# 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>

Odnośniki

Zacznij od zera i zostań mistrzem hakowania AWS dzięki htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Last updated