type
status
date
slug
summary
tags
category
icon
password
概览:错误配置公共 Azure Blob 存储(相当于 S3 存储桶)而导致数据泄露
Azure Blob Storage 是 Microsoft Azure 提供的一种可扩展的安全对象存储服务。它允许企业存储和管理文件、图像、视频和备份等数据。Blob 存储服务具有很高的可用性,是一种具有成本效益的选择。
用提供的 URL 中的 index.html 替换上面的 CSS 文件 -
https://mbtwebsite.blob.core.windows.net/$web/index.html
,我们可以看到这样就加载了原网站,并证实了我们的假设,即网站是托管在 Azure Blob Storage 服务上的。我们还可以通过检查网络服务器响应头来验证这一点。
我们可以看到请求中的rawcontent字段没显示完全 因为被截断了
使用
Select-Object
扩展RawContent可以看到服务器为:
Windows-Azure-Blo
让我们来看看 URL 的组成部分。
所以我们可以探索一下
$web
容器,看看是否还能找到其他东西。
https://mbtwebsite.blob.core.windows.net/$web?restype=container&comp=list这将返回 XML 文档中的所有 Blob!我们还可以通过指定
/
分隔符,只返回容器中的目录。
https://mbtwebsite.blob.core.windows.net/$web?restype=container&comp=list&delimiter=%2F
只看到了网站源代码中的
static
目录。让我们检查一下容器是否启用了版本控制,以及是否能看到任何以前版本的文件。启用 Blob 存储版本控制后,它会自动维护对象的先前版本,并用时间戳来识别它们。
https://mbtwebsite.blob.core.windows.net/$web?restype=container&comp=list&include=versions
然而并没有这个parameter(指version)
通过查看微软文档,我们发现只有 2019-12-12 及以后的版本才支持
versions
参数。
我们可以通过设置 curl 的 x-ms-version
标头来指定操作的版本。
curl -H "x-ms-version: 2019-12-12" 'https://mbtwebsite.blob.core.windows.net/$web?restype=container&comp=list&include=versions'
美化一下发现存在script-transfer.zip和他的版本id
curl -H "x-ms-version: 2019-12-12" 'https://mbtwebsite.blob.core.windows.net/$web/scripts-transfer.zip?versionId=2024-03-29T20:55:40.8265593Z' --output scripts-transfer.zip
curl -H "x-ms-version: 2019-12-12" 'https://mbtwebsite.blob.core.windows.net/$web/scripts-transfer.zip?versionId=2024-03-29T20:55:40.8265593Z' --output scripts-transfer.zip
解压缩后,我们可以看到两个脚本。下面是
stale_computer_accounts.ps1
的内容。它可识别、禁用过时的计算机账户并将其移至 "review "OU(域内容器对象)。我们看到它包含 Active Directory 管理帐户 marcus_adm
的凭据!
还可以看到下面的
entra_users.ps1
脚本,它可以对所有 Entra AD 用户进行审计,而且也有硬编码的凭据
让我们运行
entra_users.ps1
脚本成功使Entra AD用户在Mega Big Tech Azure账户中获得访问权限,并能够枚举所有用户。
接下来枚举用户 里面存在flag
Get-AzADUser -SignedIn | fl
Defense
- 删除blob历史版本
- 脚本中别存硬编码数据(虽然很多人会这样做)