Az - Blob Storage

Support HackTricks

Basic Information

From the docs: Azure Blob storage est la solution de stockage d'objets de Microsoft pour le cloud. Le stockage Blob est optimisé pour stocker d'énormes quantités de données non structurées. Les données non structurées sont des données qui ne respectent pas un modèle ou une définition de données particulière, telles que des données textuelles ou binaires.

Le stockage Blob offre trois types de ressources :

  • Le compte de stockage (nom unique)

  • Un conteneur dans le compte de stockage (dossier)

  • Un blob dans un conteneur

Different types of storage

Access to Storage

  • Utilisez les principes 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 autorisations spécifiques.

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

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

Public Exposure

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.

Connect to Storage

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

SAS URLs

From the docs: Une signature d'accès partagé (SAS) fournit un accès délégué sécurisé aux ressources de votre compte de stockage. Avec une 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 autorisations il a sur ces ressources.

  • Combien de temps la 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 des identifiants Azure Active Directory (Azure AD), soit une clé de compte. Pour créer un SAS de délégation utilisateur, vous devez d'abord demander une clé de délégation utilisateur, que vous utilisez ensuite pour signer le SAS.

Un support est fourni pour un SAS de Délégation Utilisateur 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 Utilisateur.

Notez que le SAS de délégation utilisateur est sécurisé avec des 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 consiste en l'URI de la ressource pour laquelle le SAS déléguera l'accès, suivi du jeton SAS.

Pour utiliser des identifiants Azure Active Directory (Azure AD) pour sécuriser un SAS pour un conteneur ou un blob, utilisez un SAS de délégation 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 SAS de service ou de délégation 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 à des opérations de niveau service qui ne sont pas actuellement disponibles avec un SAS spécifique au 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 à la fois 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 ou 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>

Références

Soutenir HackTricks

Last updated