Az - Storage Privesc
Reading time: 7 minutes
tip
Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)
Apprenez et pratiquez le hacking Azure :
HackTricks Training Azure Red Team Expert (AzRTE)
Soutenir HackTricks
- Vérifiez les plans d'abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez-nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépôts github.
Storage Privesc
Pour plus d'informations sur le stockage, consultez :
Microsoft.Storage/storageAccounts/listkeys/action
Un principal avec cette permission pourra lister (et les valeurs secrètes) des clés d'accès des comptes de stockage. Cela permet au principal d'escalader ses privilèges sur les comptes de stockage.
az storage account keys list --account-name <acc-name>
Microsoft.Storage/storageAccounts/regenerateKey/action
Un principal avec cette permission pourra renouveler et obtenir la nouvelle valeur secrète des clés d'accès des comptes de stockage. Cela permet au principal d'escalader ses privilèges sur les comptes de stockage.
De plus, dans la réponse, l'utilisateur obtiendra la valeur de la clé renouvelée ainsi que celle de la clé non renouvelée :
az storage account keys renew --account-name <acc-name> --key key2
Microsoft.Storage/storageAccounts/write
Un principal avec cette autorisation pourra créer ou mettre à jour un compte de stockage existant en mettant à jour n'importe quel paramètre comme les règles réseau ou les politiques.
# e.g. set default action to allow so network restrictions are avoided
az storage account update --name <acc-name> --default-action Allow
# e.g. allow an IP address
az storage account update --name <acc-name> --add networkRuleSet.ipRules value=<ip-address>
Blobs Specific privesc
Microsoft.Storage/storageAccounts/blobServices/containers/immutabilityPolicies/write
| Microsoft.Storage/storageAccounts/blobServices/containers/immutabilityPolicies/delete
La première permission permet de modifier les politiques d'immuabilité dans les conteneurs et la seconde de les supprimer.
note
Notez que si une politique d'immuabilité est en état de verrouillage, vous ne pouvez pas faire l'un ou l'autre.
az storage container immutability-policy delete \
--account-name <STORAGE_ACCOUNT_NAME> \
--container-name <CONTAINER_NAME> \
--resource-group <RESOURCE_GROUP>
az storage container immutability-policy update \
--account-name <STORAGE_ACCOUNT_NAME> \
--container-name <CONTAINER_NAME> \
--resource-group <RESOURCE_GROUP> \
--period <NEW_RETENTION_PERIOD_IN_DAYS>
Privesc spécifique aux partages de fichiers
Microsoft.Storage/storageAccounts/fileServices/takeOwnership/action
Cela devrait permettre à un utilisateur ayant cette permission de prendre possession des fichiers à l'intérieur du système de fichiers partagé.
Microsoft.Storage/storageAccounts/fileServices/fileshares/files/modifypermissions/action
Cela devrait permettre à un utilisateur ayant cette permission de modifier les permissions des fichiers à l'intérieur du système de fichiers partagé.
Microsoft.Storage/storageAccounts/fileServices/fileshares/files/actassuperuser/action
Cela devrait permettre à un utilisateur ayant cette permission d'effectuer des actions à l'intérieur d'un système de fichiers en tant que superutilisateur.
Microsoft.Storage/storageAccounts/localusers/write (Microsoft.Storage/storageAccounts/localusers/read)
Avec cette permission, un attaquant peut créer et mettre à jour (s'il a la permission Microsoft.Storage/storageAccounts/localusers/read
) un nouvel utilisateur local pour un compte de stockage Azure (configuré avec un espace de noms hiérarchique), y compris la spécification des permissions et du répertoire personnel de l'utilisateur. Cette permission est significative car elle permet à l'attaquant de se donner accès à un compte de stockage avec des permissions spécifiques telles que lecture (r), écriture (w), suppression (d) et liste (l) et plus encore. De plus, les méthodes d'authentification utilisées peuvent être des mots de passe générés par Azure et des paires de clés SSH. Il n'y a pas de vérification si un utilisateur existe déjà, donc vous pouvez écraser d'autres utilisateurs qui sont déjà présents. L'attaquant pourrait élever ses privilèges et obtenir un accès SSH au compte de stockage, exposant potentiellement ou compromettant des données sensibles.
az storage account local-user create \
--account-name <STORAGE_ACCOUNT_NAME> \
--resource-group <RESOURCE_GROUP_NAME> \
--name <LOCAL_USER_NAME> \
--permission-scope permissions=rwdl service=blob resource-name=<CONTAINER_NAME> \
--home-directory <HOME_DIRECTORY> \
--has-ssh-key false/true # Depends on the auth method to use
Microsoft.Storage/storageAccounts/localusers/regeneratePassword/action
Avec cette autorisation, un attaquant peut régénérer le mot de passe d'un utilisateur local dans un compte de stockage Azure. Cela accorde à l'attaquant la capacité d'obtenir de nouvelles informations d'identification d'authentification (comme un mot de passe SSH ou SFTP) pour l'utilisateur. En utilisant ces informations d'identification, l'attaquant pourrait obtenir un accès non autorisé au compte de stockage, effectuer des transferts de fichiers ou manipuler des données dans les conteneurs de stockage. Cela pourrait entraîner une fuite de données, une corruption ou une modification malveillante du contenu du compte de stockage.
az storage account local-user regenerate-password \
--account-name <STORAGE_ACCOUNT_NAME> \
--resource-group <RESOURCE_GROUP_NAME> \
--name <LOCAL_USER_NAME>
Pour accéder à Azure Blob Storage via SFTP (is_hns_enabled doit être vrai) en utilisant un utilisateur local via SFTP, vous pouvez (vous pouvez également utiliser une clé ssh pour vous connecter) :
sftp <storage-account-name>.<local-user-name>@<storage-account-name>.blob.core.windows.net
#regenerated-password
Microsoft.Storage/storageAccounts/restoreBlobRanges/action
, Microsoft.Storage/storageAccounts/blobServices/containers/read
, Microsoft.Storage/storageAccounts/read
&& Microsoft.Storage/storageAccounts/listKeys/action
Avec ces autorisations, un attaquant peut restaurer un conteneur supprimé en spécifiant son ID de version supprimée ou annuler la suppression de blobs spécifiques dans un conteneur, s'ils ont été précédemment supprimés de manière douce. Cette élévation de privilèges pourrait permettre à un attaquant de récupérer des données sensibles qui étaient censées être définitivement supprimées, ce qui pourrait entraîner un accès non autorisé.
#Restore the soft deleted container
az storage container restore \
--account-name <STORAGE_ACCOUNT_NAME> \
--name <CONTAINER_NAME> \
--deleted-version <VERSION>
#Restore the soft deleted blob
az storage blob undelete \
--account-name <STORAGE_ACCOUNT_NAME> \
--container-name <CONTAINER_NAME> \
--name "fileName.txt"
Microsoft.Storage/storageAccounts/fileServices/shares/restore/action
&& Microsoft.Storage/storageAccounts/read
Avec ces autorisations, un attaquant peut restaurer un partage de fichiers Azure supprimé en spécifiant son ID de version supprimée. Cette élévation de privilèges pourrait permettre à un attaquant de récupérer des données sensibles qui étaient censées être définitivement supprimées, ce qui pourrait entraîner un accès non autorisé.
az storage share-rm restore \
--storage-account <STORAGE_ACCOUNT_NAME> \
--name <FILE_SHARE_NAME> \
--deleted-version <VERSION>
Autres autorisations intéressantes (TODO)
- Microsoft.Storage/storageAccounts/blobServices/containers/blobs/manageOwnership/action: Change la propriété du blob
- Microsoft.Storage/storageAccounts/blobServices/containers/blobs/modifyPermissions/action: Modifie les autorisations du blob
- Microsoft.Storage/storageAccounts/blobServices/containers/blobs/runAsSuperUser/action: Renvoie le résultat de la commande blob
- Microsoft.Storage/storageAccounts/blobServices/containers/blobs/immutableStorage/runAsSuperUser/action
Références
- https://learn.microsoft.com/en-us/azure/role-based-access-control/permissions/storage#microsoftstorage
- https://learn.microsoft.com/en-us/azure/storage/blobs/secure-file-transfer-protocol-support
tip
Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)
Apprenez et pratiquez le hacking Azure :
HackTricks Training Azure Red Team Expert (AzRTE)
Soutenir HackTricks
- Vérifiez les plans d'abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez-nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépôts github.