Az - Blob Storage

Soutenez HackTricks

Informations de base

Depuis la documentation: Azure Blob storage est la solution de stockage d'objets de Microsoft pour le cloud. Blob storage est optimisé pour stocker des quantités massives de données non structurées. Les données non structurées sont des données qui ne suivent pas un modèle de données ou une définition particulière, comme des données textuelles ou binaires.

Blob storage offre trois types de ressources :

  • Le compte de stockage (nom unique)

  • Un conteneur dans le compte de stockage (dossier)

  • Un blob dans un conteneur

Différents types de stockage

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

Accès au stockage

  • Utilisez les principaux Azure AD via les rôles RBAC pris en charge.

  • Clés d'accès : Utilisez les clés d'accès du compte de stockage. Cela fournit un accès complet au compte de stockage.

  • Signature d'accès partagé (SAS) : Temps limité et permissions spécifiques.

  • Vous pouvez générer une URL SAS avec une clé d'accès (plus compliqué à détecter).

  • Comme le SAS est généré à partir de la clé d'accès, s'il est renouvelé, le SAS cesse de fonctionner.

Exposition publique

Si "Autoriser l'accès public aux blobs" est activé (désactivé par défaut), il est possible de :

  • Donner un accès public pour lire les blobs (vous devez connaître le nom).

  • Lister les blobs du conteneur et les lire.

Connexion au stockage

Si vous trouvez un stockage auquel vous pouvez vous connecter, vous pouvez utiliser l'outil Microsoft Azure Storage Explorer pour le faire.

URLs SAS

Depuis la documentation: Une signature d'accès partagé (SAS) fournit un accès délégué sécurisé aux ressources de votre compte de stockage. Avec un SAS, vous avez un contrôle granulaire sur la façon dont un client peut accéder à vos données. Par exemple :

  • Quelles ressources le client peut accéder.

  • Quelles permissions ils ont sur ces ressources.

  • Combien de temps le SAS est valide.

Une URL SAS ressemble à ceci : 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

Utilisez Storage Explorer pour accéder aux données ou 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 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

Vous pouvez sécuriser un jeton de signature d'accès partagé (SAS) pour accéder à un conteneur, un répertoire ou un blob en utilisant soit les identifiants Azure Active Directory (Azure AD) soit une clé de compte. Pour créer un SAS de délégation d'utilisateur, vous devez d'abord demander une clé de délégation d'utilisateur, que vous utilisez ensuite pour signer le SAS.

Le support est fourni pour une Signature d'Accès Partagé de Délégation d'Utilisateur (SAS) dans Azure Blob Storage et Azure Data Lake Storage Gen2. Cependant, il est important de noter que les politiques d'accès stockées ne sont pas compatibles avec un SAS de délégation d'utilisateur.

Notez que le SAS de délégation d'utilisateur est sécurisé avec les identifiants Azure AD au lieu des clés de compte de stockage. Cela empêche les clients/applications de stocker/récupérer des clés de stockage pour créer un SAS.

Service SAS

Un service SAS est sécurisé avec la clé de compte de stockage. Un service SAS délègue l'accès à une ressource dans un seul des services de stockage Azure : Blob storage, Queue storage, Table storage, ou Azure Files. L'URI pour un SAS de niveau service se compose de l'URI de la ressource pour laquelle le SAS délèguera l'accès, suivi du jeton SAS.

Pour utiliser les identifiants Azure Active Directory (Azure AD) pour sécuriser un SAS pour un conteneur ou un blob, utilisez un SAS de délégation d'utilisateur.

Account SAS

Un account SAS est sécurisé avec l'une des clés de compte de stockage (il y en a 2). Un account SAS délègue l'accès aux ressources dans un ou plusieurs des services de stockage. Toutes les opérations disponibles via un service ou un SAS de délégation d'utilisateur sont également disponibles via un account SAS.

d'après la documentation : En créant un account SAS, vous pouvez :

  • Déléguer l'accès aux opérations de niveau service qui ne sont pas actuellement disponibles avec un SAS spécifique à un service, telles que les opérations Get/Set Service Properties et Get Service Stats.

  • Déléguer l'accès à plus d'un service dans un compte de stockage à la fois. Par exemple, vous pouvez déléguer l'accès aux ressources dans Azure Blob Storage et Azure Files en utilisant un account SAS.

  • Déléguer l'accès aux opérations d'écriture et de suppression pour les conteneurs, les files d'attente, les tables et les partages de fichiers, qui ne sont pas disponibles avec un SAS spécifique à un objet.

  • Spécifier une adresse IP ou une plage d'adresses IP à partir desquelles accepter les demandes.

  • Spécifier le protocole HTTP à partir duquel accepter les demandes (soit HTTPS, soit HTTP/HTTPS).

Énumération

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

Références

Soutenez HackTricks

Last updated