Az - Storage Privesc

Tip

Aprende y practica AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Apoya a HackTricks

Storage Privesc

Para más información sobre almacenamiento, consulta:

Az - Storage Accounts & Blobs

Microsoft.Storage/storageAccounts/listkeys/action

Un principal con este permiso podrá listar (y los valores secretos) de las claves de acceso de las cuentas de almacenamiento. Permitiendo al principal escalar sus privilegios sobre las cuentas de almacenamiento.

az storage account keys list --account-name <acc-name>

Microsoft.Storage/storageAccounts/regenerateKey/action

Un principal con este permiso podrá renovar y obtener el nuevo valor secreto de las access keys de las cuentas de almacenamiento. Permitiendo al principal escalar sus privilegios sobre las cuentas de almacenamiento.

Además, en la respuesta, el usuario obtendrá el valor de la clave renovada y también de la no renovada:

az storage account keys renew --account-name <acc-name> --key key2

Microsoft.Storage/storageAccounts/write

Un principal con este permiso podrá crear o actualizar una cuenta de almacenamiento existente, actualizando cualquier configuración como reglas de red o políticas.

# 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

El primer permiso permite modificar políticas de inmutabilidad en contenedores y el segundo eliminarlas.

Note

Tenga en cuenta que si una política de inmutabilidad está en estado de bloqueo, no puede hacer ninguna de las dos.

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 específico de comparticiones de archivos

Microsoft.Storage/storageAccounts/fileServices/takeOwnership/action

Esto debería permitir a un usuario que tenga este permiso tomar la propiedad de archivos dentro del sistema de archivos compartido.

Microsoft.Storage/storageAccounts/fileServices/fileshares/files/modifypermissions/action

Esto debería permitir a un usuario que tenga este permiso modificar los permisos de los archivos dentro del sistema de archivos compartido.

Microsoft.Storage/storageAccounts/fileServices/fileshares/files/actassuperuser/action

Esto debería permitir a un usuario que tenga este permiso realizar acciones dentro de un sistema de archivos como superusuario.

Microsoft.Storage/storageAccounts/localusers/write (Microsoft.Storage/storageAccounts/localusers/read)

Con este permiso, un atacante puede crear y actualizar (si tiene el permiso Microsoft.Storage/storageAccounts/localusers/read) un nuevo usuario local para una cuenta de Azure Storage (configurada con un espacio de nombres jerárquico), incluyendo especificar los permisos y el directorio de inicio del usuario. Este permiso es significativo porque permite al atacante otorgarse acceso a una cuenta de almacenamiento con permisos específicos como lectura (r), escritura (w), eliminación (d) y listado (l) y más. Adicionalmente, los métodos de autenticación que utiliza pueden ser contraseñas generadas por Azure y pares de claves SSH. No hay verificación de si un usuario ya existe, por lo que se puede sobrescribir a otros usuarios que ya están allí. El atacante podría escalar sus privilegios y obtener acceso SSH a la cuenta de almacenamiento, exponiendo o comprometiendo potencialmente datos 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

Con este permiso, un atacante puede regenerar la contraseña de un usuario local en una cuenta de Azure Storage. Esto otorga al atacante la capacidad de obtener nuevas credenciales de autenticación (como una contraseña SSH o SFTP) para el usuario. Al aprovechar estas credenciales, el atacante podría obtener acceso no autorizado a la cuenta de almacenamiento, realizar transferencias de archivos o manipular datos dentro de los contenedores de almacenamiento. Esto podría resultar en filtraciones de datos, corrupción o modificación maliciosa del contenido de la cuenta de almacenamiento.

az storage account local-user regenerate-password \
--account-name <STORAGE_ACCOUNT_NAME> \
--resource-group <RESOURCE_GROUP_NAME> \
--name <LOCAL_USER_NAME>

Para acceder a Azure Blob Storage a través de SFTP (is_hns_enabled debe ser verdadero) utilizando un usuario local a través de SFTP, puedes (también puedes usar una clave ssh para conectarte):

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

Con estos permisos, un atacante puede restaurar un contenedor eliminado especificando su ID de versión eliminada o deseleccionar blobs específicos dentro de un contenedor, si fueron eliminados suavemente anteriormente. Esta escalada de privilegios podría permitir a un atacante recuperar datos sensibles que debían ser eliminados permanentemente, lo que podría llevar a un acceso no autorizado.

#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

Con estos permisos, un atacante puede restaurar un recurso compartido de archivos de Azure eliminado especificando su ID de versión eliminada. Esta escalada de privilegios podría permitir a un atacante recuperar datos sensibles que se suponía debían ser eliminados permanentemente, lo que podría llevar a un acceso no autorizado.

az storage share-rm restore \
--storage-account <STORAGE_ACCOUNT_NAME> \
--name <FILE_SHARE_NAME> \
--deleted-version <VERSION>

Otros permisos interesantes (TODO)

  • Microsoft.Storage/storageAccounts/blobServices/containers/blobs/manageOwnership/action: Cambia la propiedad del blob
  • Microsoft.Storage/storageAccounts/blobServices/containers/blobs/modifyPermissions/action: Modifica los permisos del blob
  • Microsoft.Storage/storageAccounts/blobServices/containers/blobs/runAsSuperUser/action: Devuelve el resultado del comando del blob
  • Microsoft.Storage/storageAccounts/blobServices/containers/blobs/immutableStorage/runAsSuperUser/action

Referencias

Tip

Aprende y practica AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Apoya a HackTricks