Az - Storage Privesc

Tip

学习并练习 AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
学习并练习 GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
学习并练习 Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

支持 HackTricks

Storage Privesc

有关存储的更多信息,请查看:

Az - Storage Accounts & Blobs

Microsoft.Storage/storageAccounts/listkeys/action

具有此权限的主体将能够列出(以及访问密钥的秘密值)存储帐户的访问密钥。 这允许主体提升其在存储帐户上的权限。

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

Microsoft.Storage/storageAccounts/regenerateKey/action

具有此权限的主体将能够更新并获取存储帐户的访问密钥的新密钥值。这允许主体提升其在存储帐户上的权限。

此外,在响应中,用户将获得更新密钥的值以及未更新密钥的值:

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

Microsoft.Storage/storageAccounts/write

具有此权限的主体将能够创建或更新现有的存储帐户,更新任何设置,例如网络规则或策略。

# 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 特定的权限提升

Microsoft.Storage/storageAccounts/blobServices/containers/immutabilityPolicies/write | Microsoft.Storage/storageAccounts/blobServices/containers/immutabilityPolicies/delete

第一个权限允许修改容器中的不可变性策略,第二个权限允许删除它们。

Note

请注意,如果不可变性策略处于锁定状态,您无法执行这两项操作。

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>

文件共享特定权限提升

Microsoft.Storage/storageAccounts/fileServices/takeOwnership/action

这应该允许拥有此权限的用户能够获取共享文件系统内文件的所有权。

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

这应该允许拥有此权限的用户能够修改共享文件系统内文件的权限。

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

这应该允许拥有此权限的用户能够以超级用户身份在文件系统内执行操作。

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

拥有此权限的攻击者可以为 Azure 存储帐户(配置了分层命名空间)创建和更新(如果拥有 Microsoft.Storage/storageAccounts/localusers/read 权限)新的本地用户,包括指定用户的权限和主目录。此权限非常重要,因为它允许攻击者授予自己特定权限的存储帐户,例如读取(r)、写入(w)、删除(d)和列出(l)等。此外,使用的身份验证方法可以是 Azure 生成的密码和 SSH 密钥对。没有检查用户是否已存在,因此您可以覆盖已经存在的其他用户。攻击者可以提升他们的权限并获得对存储帐户的 SSH 访问权限,可能会暴露或危害敏感数据。

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

通过此权限,攻击者可以为 Azure 存储帐户中的本地用户重新生成密码。这使攻击者能够获取该用户的新身份验证凭据(例如 SSH 或 SFTP 密码)。通过利用这些凭据,攻击者可能会获得对存储帐户的未经授权访问,执行文件传输或操纵存储容器中的数据。这可能导致数据泄露、损坏或恶意修改存储帐户内容。

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

要通过 SFTP 访问 Azure Blob Storage(is_hns_enabled 应为 true),您可以使用本地用户通过 SFTP 进行连接(您也可以使用 ssh 密钥进行连接):

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

通过这些权限,攻击者可以通过指定已删除版本 ID 来恢复已删除的容器,或者在容器内恢复特定的 blob(如果它们之前被软删除)。这种权限提升可能允许攻击者恢复本应永久删除的敏感数据,从而可能导致未经授权的访问。

#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

通过这些权限,攻击者可以通过指定已删除版本 ID 来恢复已删除的 Azure 文件共享。这种权限提升可能允许攻击者恢复本应永久删除的敏感数据,从而可能导致未经授权的访问。

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

其他有趣的权限 (TODO)

  • Microsoft.Storage/storageAccounts/blobServices/containers/blobs/manageOwnership/action: 更改 blob 的所有权
  • Microsoft.Storage/storageAccounts/blobServices/containers/blobs/modifyPermissions/action: 修改 blob 的权限
  • Microsoft.Storage/storageAccounts/blobServices/containers/blobs/runAsSuperUser/action: 返回 blob 命令的结果
  • Microsoft.Storage/storageAccounts/blobServices/containers/blobs/immutableStorage/runAsSuperUser/action

参考

Tip

学习并练习 AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
学习并练习 GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
学习并练习 Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

支持 HackTricks