近年來,我們看到Microsoft Azure服務(wù)在云服務(wù)市場(chǎng)中占據(jù)了更大的市場(chǎng)份額。雖然并沒有看到AWS的應(yīng)用,但我們遇到了更多使用Microsoft Azure服務(wù)進(jìn)行運(yùn)維的客戶端。如果一切都正確的配置,這將是極好的事情,但是完全安全的環(huán)境是非常罕見的(這就是我們進(jìn)行安全測(cè)試的原因)。鑒于Azure使用量的增加,我們希望能夠深入了解如何將標(biāo)準(zhǔn)的Azure測(cè)試任務(wù)自動(dòng)化,包括公開的可用文件的枚舉。在本博文中,我們將介紹不同類型的Azure文件存儲(chǔ)以及我們?cè)撊绾蚊杜e和訪問公開可用的“Blob”文件。
存儲(chǔ)帳戶
我們?cè)贏zure環(huán)境中發(fā)現(xiàn)一個(gè)用戶可以通過存儲(chǔ)帳戶公開的暴露文件。這些問題非常類似于公共S3存儲(chǔ)桶的問題(這里有一篇很好的入門文章)。“存儲(chǔ)帳戶” 是Microsoft在Azure中處理數(shù)據(jù)存儲(chǔ)的方式。在core.windows.net域中為每個(gè)存儲(chǔ)帳戶分配了唯一的子域。
例如,如果我創(chuàng)建了netspiazure存儲(chǔ)帳戶,系統(tǒng)將分配netspiazure.core.windows.net這個(gè)域名給該帳戶。

該子域名結(jié)構(gòu)還可以擴(kuò)展到存儲(chǔ)帳戶中的不同文件類型:
· Blob – netspiazure.blob.core.windows.net
· 文件服務(wù) – netspiazure.file.core.windows.net
· 數(shù)據(jù)表 – netspiazure.table.core.windows.net
· 隊(duì)列 – netspiazure.queue.core.windows.net
Blob文件
在本文中,我們將專注于“Blob”這種文件類型的枚舉,當(dāng)然其他的數(shù)據(jù)類型也很有趣。Blob是微軟的一種非結(jié)構(gòu)化的數(shù)據(jù)存儲(chǔ)對(duì)象。最常見的是,我們會(huì)看到這種數(shù)據(jù)對(duì)象用于提供靜態(tài)公共數(shù)據(jù),但我們發(fā)現(xiàn)blob會(huì)用于存儲(chǔ)敏感信息(配置文件,數(shù)據(jù)庫備份,憑據(jù))。我們可以利用Google搜索Azure中的“blob.core.windows.net”子域,搜索到大約120萬個(gè)PDF,我認(rèn)為這里有相當(dāng)不錯(cuò)的攻擊面。

權(quán)限
blob本身存儲(chǔ)在“Containers”中,基本上是一些文件夾。容器會(huì)分配給它們相應(yīng)的訪問策略,這些策略決定了文件的公共訪問級(jí)別。

如果容器具有“容器”公開訪問策略,則匿名用戶可以列出并讀取容器中的任何文件。“Blob”公共訪問策略仍允許匿名用戶讀取文件,但無法列出容器文件列表。“Blob”權(quán)限還會(huì)阻止攻擊者通過 Azure Blob Service Rest API 對(duì)容器名稱進(jìn)行基本的確認(rèn)。
自動(dòng)化
考慮到我們遇到的Azure環(huán)境的數(shù)量,我想將我們的枚舉公開blob文件的過程自動(dòng)化。我比較偏愛PowerShell,但我寫的這個(gè)腳本可能可以被移植到其他語言中。可以在NetSPI的GitHub上找到我寫的腳本代碼 – https://github.com/NetSPI/MicroBurst腳本的核心內(nèi)容是對(duì)blob.core.windows.net子域進(jìn)行DNS查找,來枚舉有效的存儲(chǔ)帳戶,然后使用 Azure Blob Service REST API 暴力猜解容器名稱。此外,可以在該工具中使用 Bing Search API 來查找已公開的編入索引的其他存儲(chǔ)帳戶和容器。識(shí)別出有效的容器名稱后,我們?cè)俅问褂肁zure Blob API查看容器是否允許我們通過“Container”公共訪問策略列出文件列表。為了得到有效的存儲(chǔ)帳戶名,我們可以在基本的名稱(netspi)前面或后面拼接常見的排列詞(dev,test,qa等)來進(jìn)行暴力猜解,這些排列詞保存在一個(gè)字典文件中。這個(gè)腳本的編寫思路以及部分排列詞的列表來自于AWS S3存儲(chǔ)桶的類似工具 – inSp3ctor
Invoke-EnumerateAzureBlobs 的用法
該腳本有五個(gè)參數(shù):
· Base – 要在(netspi)上運(yùn)行排列的基本名稱
· Permutations – 包含與Base參數(shù)一起使用的字典文件,用于查找存儲(chǔ)帳戶(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.pdfFound Container - secureimages.blob.core.windows.net/NETSPItest123
Empty Public Container Available: https://secureimages.blob.core.windows.net/NETSPItest123?restype=container&comp=list
默認(rèn)情況下,“Permutations”和“Folders”參數(shù)都設(shè)置為腳本附帶的permutations.txt文件。你可以通過向該文件添加任何客戶端或環(huán)境特定術(shù)語來增加查找到文件的機(jī)會(huì)。添加Bing API密鑰還有助于查找包含基本單詞的其他存儲(chǔ)帳戶。如果你尚未設(shè)置Bing API密鑰,請(qǐng)導(dǎo)航至 Azure門戶 的“認(rèn)知服務(wù)”部分,并為你的帳戶創(chuàng)建新的“Bing Search v7”實(shí)例。有一個(gè)免費(fèi)的定價(jià)等級(jí),每月最多可以撥打3,000個(gè)電話,這足夠用了。如果你使用Bing API密鑰,系統(tǒng)將提示你使用out-gridview選擇窗口來選擇你要查看的任何存儲(chǔ)帳戶。有一些公開索引的Azure存儲(chǔ)帳戶似乎在大多數(shù)公司名稱上都出現(xiàn)過。這些帳戶似乎是為多家公司編制索引文檔或數(shù)據(jù),因此它們往往會(huì)出現(xiàn)在Bing的搜索結(jié)果中。其中一些帳戶也有公開的文件列表,因此可能會(huì)為你提供一個(gè)你并不關(guān)心的大量公開文件。到目前為止我在用我編寫的腳本時(shí)運(yùn)氣都不錯(cuò),希望你也是這樣。如果你對(duì)腳本有任何問題,請(qǐng)隨時(shí)在GitHub頁面上發(fā)表評(píng)論或提交請(qǐng)求。
|