标题 | 简介 | 类型 | 公开时间 | ||||||||||
|
|||||||||||||
|
|||||||||||||
详情 | |||||||||||||
[SAFE-ID: JIWO-2025-2195] 作者: 对不起 发表于: [2018-11-15]
本文共 [802] 位读者顶过
近年来,我们看到Microsoft Azure服务在云服务市场中占据了更大的市场份额。虽然并没有看到AWS的应用,但我们遇到了更多使用Microsoft Azure服务进行运维的客户端。如果一切都正确的配置,这将是极好的事情,但是完全安全的环境是非常罕见的(这就是我们进行安全测试的原因)。鉴于Azure使用量的增加,我们希望能够深入了解如何将标准的Azure测试任务自动化,包括公开的可用文件的枚举。在本博文中,我们将介绍不同类型的Azure文件存储以及我们该如何枚举和访问公开可用的“Blob”文件。 存储帐户 我们在Azure环境中发现一个用户可以通过存储帐户公开的暴露文件。这些问题非常类似于公共S3存储桶的问题(这里有一篇很好的入门文章)。“存储帐户” 是Microsoft在Azure中处理数据存储的方式。在core.windows.net域中为每个存储帐户分配了唯一的子域。 例如,如果我创建了netspiazure存储帐户,系统将分配netspiazure.core.windows.net这个域名给该帐户。
该子域名结构还可以扩展到存储帐户中的不同文件类型: · Blob – netspiazure.blob.core.windows.net · 文件服务 – netspiazure.file.core.windows.net · 数据表 – netspiazure.table.core.windows.net · 队列 – netspiazure.queue.core.windows.net Blob文件 在本文中,我们将专注于“Blob”这种文件类型的枚举,当然其他的数据类型也很有趣。Blob是微软的一种非结构化的数据存储对象。最常见的是,我们会看到这种数据对象用于提供静态公共数据,但我们发现blob会用于存储敏感信息(配置文件,数据库备份,凭据)。我们可以利用Google搜索Azure中的“blob.core.windows.net”子域,搜索到大约120万个PDF,我认为这里有相当不错的攻击面。
权限 blob本身存储在“Containers”中,基本上是一些文件夹。容器会分配给它们相应的访问策略,这些策略决定了文件的公共访问级别。
如果容器具有“容器”公开访问策略,则匿名用户可以列出并读取容器中的任何文件。“Blob”公共访问策略仍允许匿名用户读取文件,但无法列出容器文件列表。“Blob”权限还会阻止攻击者通过 Azure Blob Service Rest API 对容器名称进行基本的确认。 自动化
考虑到我们遇到的Azure环境的数量,我想将我们的枚举公开blob文件的过程自动化。我比较偏爱PowerShell,但我写的这个脚本可能可以被移植到其他语言中。[出自:jiwo.org] Invoke-EnumerateAzureBlobs 的用法
该脚本有五个参数: · Base – 要在(netspi)上运行排列的基本名称
· Permutations – 包含与Base参数一起使用的字典文件,用于查找存储帐户(netspidev,testnetspi等)
· Folders – 指定包含你想要暴力猜解所使用的潜在文件夹名称的文件(文件,文档等)
· BingAPIKey – Bing API用于查找其他公开文件的密钥 · OutputFile – 指定将输出写入的文件 示例输出: PS C:\> Invoke-EnumerateAzureBlobs -Base secure -BingAPIKey 12345678901234567899876543210123 Found Storage Account - secure.blob.core.windows.net Found Storage Account - testsecure.blob.core.windows.net Found Storage Account - securetest.blob.core.windows.net Found Storage Account - securedata.blob.core.windows.net Found Storage Account - securefiles.blob.core.windows.net Found Storage Account - securefilestorage.blob.core.windows.net Found Storage Account - securestorageaccount.blob.core.windows.net Found Storage Account - securesql.blob.core.windows.net Found Storage Account - hrsecure.blob.core.windows.net Found Storage Account - secureit.blob.core.windows.net Found Storage Account - secureimages.blob.core.windows.net Found Storage Account - securestorage.blob.core.windows.net Bing Found Storage Account - notrealstorage.blob.core.windows.net Found Container - hrsecure.blob.core.windows.net/NETSPItest Public File Available: https://hrsecure.blob.core.windows.net/NETSPItest/SuperSecretFile.txt Public File Available: https://hrsecure.blob.core.windows.net/NETSPItest/TaxReturn.pdf Found Container - secureimages.blob.core.windows.net/NETSPItest123 Empty Public Container Available: https://secureimages.blob.core.windows.net/NETSPItest123?restype=container&comp=list
默认情况下,“Permutations”和“Folders”参数都设置为脚本附带的permutations.txt文件。你可以通过向该文件添加任何客户端或环境特定术语来增加查找到文件的机会。 |