Az - Blob Storage

Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)!

Autres façons de soutenir HackTricks :

Informations de base

À partir de la documentation : Le stockage Blob Azure est la solution de stockage d'objets de Microsoft pour le cloud. Le stockage Blob 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 ou une définition 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

Différents types de stockage

Stockage 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

Fichiers Azure

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

Stockage de files d'attente

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

Stockage de table

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

Accès au stockage

  • Utilisez des 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) : Limitée dans le temps et permissions spécifiques.

  • Vous pouvez générer une URL SAS avec une clé d'accès (plus difficile à 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.

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

À partir de 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 une SAS, vous avez un contrôle granulaire sur la manière dont un client peut accéder à vos données. Par exemple :

  • Quelles ressources le client peut accéder.

  • Quelles autorisations ils ont sur ces ressources.

  • Pendant 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 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())

Signature d'accès partagé délégué de l'utilisateur

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 informations d'identification Azure Active Directory (Azure AD), soit une clé de compte. Pour créer une 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 la SAS.

Le support est fourni pour une Signature d'Accès Partagé Déléguée de l'Utilisateur (SAS) à la fois dans Azure Blob Storage et Azure Data Lake Storage Gen2. Cependant, il est important de noter que les Stratégies d'Accès Stockées ne sont pas compatibles avec une SAS de délégation d'utilisateur.

Notez que la SAS de délégation d'utilisateur est sécurisée avec les informations d'identification 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 des SAS.

SAS de service

Une SAS de service est sécurisée avec la clé de compte de stockage. Une SAS de service délègue l'accès à une ressource dans un seul des services de stockage Azure : stockage de blobs, stockage de files d'attente, stockage de tables ou fichiers Azure. L'URI pour une SAS au niveau du service se compose de l'URI de la ressource pour laquelle la SAS déléguera l'accès, suivi du jeton SAS.

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

SAS de compte

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

à partir de la documentation : En créant une SAS de compte, vous pouvez :

  • Déléguer l'accès à des opérations au niveau du service qui ne sont pas actuellement disponibles avec une 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 à des ressources à la fois dans Azure Blob Storage et Azure Files en utilisant une SAS de compte.

  • 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 une 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 (HTTPS ou 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

Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)!

Autres façons de soutenir HackTricks:

Dernière mise à jour