Az - Blob Storage

Impara l'hacking di AWS da zero a eroe con htARTE (Esperto Red Team di HackTricks AWS)!

Altri modi per supportare HackTricks:

Informazioni di Base

Dalla documentazione: Azure Blob storage è la soluzione di archiviazione di oggetti di Microsoft per il cloud. Blob storage è ottimizzato per archiviare grandi quantità di dati non strutturati. I dati non strutturati sono dati che non seguono un particolare modello o definizione di dati, come testo o dati binari.

Blob storage offre tre tipi di risorse:

  • Il account di archiviazione (nome univoco)

  • Un contenitore nell'account di archiviazione (cartella)

  • Un blob in un contenitore

Diversi tipi di archiviazione

Archiviazione Blob

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

File Azure

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

Archiviazione Code

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

Archiviazione Tabelle

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

Accesso all'Archiviazione

  • Utilizzare i principali di Azure AD tramite ruoli RBAC supportati.

  • Chiavi di Accesso: Utilizzare le chiavi di accesso dell'account di archiviazione. Questo fornisce accesso completo all'account di archiviazione.

  • Firma di Accesso Condiviso (SAS): Limitata nel tempo e con permessi specifici.

  • È possibile generare un URL SAS con una chiave di accesso (più complicato da rilevare).

  • Poiché il SAS è generato dalla chiave di accesso, se viene rinnovato il SAS smette di funzionare.

Esposizione Pubblica

Se "Consenti accesso pubblico al blob" è abilitato (disabilitato per impostazione predefinita), è possibile:

  • Dare accesso pubblico per leggere i blob (è necessario conoscere il nome).

  • Elenca i blob del contenitore e leggili.

Connessione all'Archiviazione

Se trovi qualsiasi archiviazione a cui puoi connetterti, potresti utilizzare lo strumento Microsoft Azure Storage Explorer per farlo.

URL SAS

Dalla documentazione: Una firma di accesso condiviso (SAS) fornisce un accesso delegato sicuro alle risorse nel tuo account di archiviazione. Con un SAS, hai un controllo dettagliato su come un client può accedere ai tuoi dati. Ad esempio:

  • A quali risorse il client può accedere.

  • Quali autorizzazioni hanno su tali risorse.

  • Per quanto tempo il SAS è valido.

Un URL SAS appare così: 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

Utilizza Storage Explorer per accedere ai dati o 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())

SAS di delega utente

È possibile proteggere un token di firma di accesso condiviso (SAS) per l'accesso a un contenitore, una directory o un blob utilizzando le credenziali di Azure Active Directory (Azure AD) o una chiave dell'account. Per creare una SAS di delega utente, è necessario prima richiedere una chiave di delega utente, che verrà poi utilizzata per firmare la SAS.

Il supporto è fornito per una Firma di Accesso Condiviso (SAS) con Delega Utente sia in Azure Blob Storage che in Azure Data Lake Storage Gen2. Tuttavia, è importante notare che le Stored Access Policies non sono compatibili con una SAS di delega utente.

Si noti che la SAS di delega utente è protetta con le credenziali di Azure AD anziché con le chiavi dell'account di archiviazione. Ciò impedisce ai clienti/applicazioni di memorizzare/recuperare le chiavi di archiviazione per creare SAS.

SAS di servizio

Una SAS di servizio è protetta con la chiave dell'account di archiviazione. Una SAS di servizio delega l'accesso a una risorsa in uno dei servizi di archiviazione di Azure: archiviazione di blob, archiviazione di code, archiviazione di tabelle o file di Azure. L'URI per una SAS a livello di servizio consiste dell'URI alla risorsa per la quale la SAS delega l'accesso, seguito dal token SAS.

Per utilizzare le credenziali di Azure Active Directory (Azure AD) per proteggere una SAS per un contenitore o un blob, utilizzare una SAS di delega utente.

SAS di account

Una SAS di account è protetta con una delle chiavi dell'account di archiviazione (ce ne sono 2). Una SAS di account delega l'accesso alle risorse in uno o più dei servizi di archiviazione. Tutte le operazioni disponibili tramite una SAS di servizio o di delega utente sono disponibili anche tramite una SAS di account.

dalla documentazione: Creando una SAS di account, è possibile:

  • Delegare l'accesso a operazioni a livello di servizio attualmente non disponibili con una SAS specifica del servizio, come le operazioni Get/Set Service Properties e Get Service Stats.

  • Delegare l'accesso a più di un servizio in un account di archiviazione contemporaneamente. Ad esempio, è possibile delegare l'accesso alle risorse sia in Azure Blob Storage che in Azure Files utilizzando una SAS di account.

  • Delegare l'accesso alle operazioni di scrittura ed eliminazione per contenitori, code, tabelle e condivisioni di file, che non sono disponibili con una SAS specifica dell'oggetto.

  • Specificare un indirizzo IP o un intervallo di indirizzi IP da cui accettare le richieste.

  • Specificare il protocollo HTTP da cui accettare le richieste (HTTPS o HTTP/HTTPS).

Enumerazione

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

Riferimenti

Impara l'hacking su AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)!

Altri modi per supportare HackTricks:

Last updated