Az - Blob Storage

Support HackTricks

Podstawowe informacje

Z dokumentacji: Azure Blob storage to rozwiązanie Microsoftu do przechowywania obiektów w chmurze. Blob storage jest zoptymalizowane do przechowywania ogromnych ilości danych niestrukturalnych. Dane niestrukturalne to dane, które nie przestrzegają określonego modelu danych lub definicji, takie jak dane tekstowe lub binarne.

Blob storage oferuje trzy rodzaje zasobów:

  • konto magazynu (unikalna nazwa)

  • kontener w koncie magazynu (folder)

  • blob w kontenerze

Różne typy 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 magazynu

  • Użyj zasad Azure AD za pośrednictwem ról RBAC.

  • Klucze dostępu: Użyj kluczy dostępu do konta magazynu. To zapewnia pełny dostęp do konta magazynu.

  • Podpis dostępu współdzielonego (SAS): Czas ograniczony 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ć.

Publiczna ekspozycja

Jeśli "Zezwól na publiczny dostęp do blobów" jest włączone (domyślnie wyłączone), możliwe jest:

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

  • Wylistowanie blobów kontenera i odczytanie ich.

Połączenie z magazynem

Jeśli znajdziesz jakikolwiek magazyn, do którego możesz się połączyć, możesz użyć narzędzia Microsoft Azure Storage Explorer, aby to zrobić.

Adresy URL SAS

Z dokumentacji: Podpis dostępu współdzielonego (SAS) zapewnia bezpieczny delegowany dostęp do zasobów w Twoim koncie magazynu. Dzięki SAS masz szczegółową kontrolę nad tym, jak klient może uzyskać dostęp do Twoich danych. Na przykład:

  • Jakie zasoby klient może uzyskać dostęp.

  • Jakie uprawnienia ma do tych zasobów.

  • Jak długo SAS jest ważny.

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, aby uzyskać dostęp do danych lub Pythona:

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

User delegation SAS

Możesz zabezpieczyć token dostępu z podpisem (SAS) do kontenera, katalogu lub obiektu, używając poświadczeń Azure Active Directory (Azure AD) lub klucza konta. Aby utworzyć SAS delegacji użytkownika, musisz najpierw zażądać klucza delegacji użytkownika, który następnie wykorzystasz do podpisania SAS.

Wsparcie dla User Delegation Shared Access Signature (SAS) jest dostępne zarówno w Azure Blob Storage, jak i Azure Data Lake Storage Gen2. Ważne jest jednak, aby zauważyć, że Stored Access Policies nie są kompatybilne z SAS delegacji użytkownika.

Zauważ, że SAS delegacji użytkownika jest zabezpieczony poświadczeniami Azure AD zamiast kluczy konta magazynu. Zapobiega to klientom/aplikacjom przechowywaniu/pobieraniu kluczy magazynu w celu utworzenia SAS.

Service SAS

SAS usługi jest zabezpieczony kluczem konta magazynu. SAS usługi deleguje dostęp do zasobu tylko w jednym 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 URI do zasobu, do którego SAS będzie delegować dostęp, a następnie tokenu SAS.

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

Account SAS

SAS konta jest zabezpieczony jednym z kluczy konta magazynu (są 2). SAS konta deleguje dostęp do zasobów w jednej lub więcej usługach magazynowych. Wszystkie operacje dostępne za pośrednictwem SAS usługi lub SAS delegacji użytkownika są również dostępne za pośrednictwem SAS konta.

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

  • Delegować dostęp do operacji na poziomie usługi, które nie są obecnie dostępne z 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 magazynu jednocześnie. Na przykład, możesz delegować dostęp do zasobów zarówno w Azure Blob Storage, jak i Azure Files, używając SAS konta.

  • Delegować dostęp do operacji zapisu i usuwania dla kontenerów, kolejek, tabel i udziałów plików, które nie są dostępne z 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 (zarówno HTTPS, jak i HTTP/HTTPS).

Enumeration

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

Odniesienia

Wsparcie dla HackTricks

Last updated