標題:對象存儲攻防案例

taibeihacker

Moderator

对象存储攻防案例​

雲上存儲己經是企業中常見的一款雲上產品,伴隨著雲上業務的發展,對象存儲作為雲原生一項重要的能力,暴露出一系列的安全問題,其中的權限配置是管理人員不可忽視的,從攻擊者的視角來看幾大雲存儲的攻擊方法與利用。

1 对象存储​

對象存儲中可以有多個桶(Bucket),然後把對象(Object)放在桶裡,對象又包含了三個部分:Key、Data 和Metadata。
202203171716980.png-water_print

1.1 Bucket​

存儲空間(Bucket)是用戶用於存儲對象(Object)的容器,所有的對像都必須隸屬於某個存儲空間。存儲空間具有各種配置屬性,包括地域、訪問權限、存儲類型等。用戶可以根據實際需求,創建不同類型的存儲空間來存儲不同的數據。
同一個存儲空間的內部是扁平的,沒有文件系統的目錄等概念,所有的對像都直接隸屬於其對應的存儲空間。
每個用戶可以擁有多個存儲空間。
存儲空間的名稱在OSS 範圍內必須是全局唯一的,一旦創建之後無法修改名稱。
存儲空間內部的對像數目沒有限制。

1.2 Object​

對象(Object)是OSS 存儲數據的基本單元,也被稱為OSS 的文件。和傳統的文件系統不同,對像沒有文件目錄層級結構的關係。對象由元信息(Object Meta),用戶數據(Data)和文件名(Key)組成,並且由存儲空間內部唯一的Key 來標識。
Key 是指存儲桶中的唯一標識符,例如一個URL 為:https://geekby.oss-cn-beijing.aliyuncs.com/MarkDown/202203171716980.png,這裡的geekby 是存儲桶Bucket 的名稱,/MarkDown/202203171716980.png 就是Key。
對像元信息是一組鍵值對,表示了對象的一些屬性,比如最後修改時間、大小等信息,同時用戶也可以在元信息中存儲一些自定義的信息。可以簡單的理解成數據的標籤、描述之類的信息,這點不同於傳統的文件存儲,在傳統的文件存儲中這類信息是直接封裝在文件裡的,有了元數據的存在,可以大大的加快對象的排序、分類和查找。
Data 就是存儲的數據本體。

2 对象存储的利用方式​

2.1 Object 遍历​

在創建Bucket 時,可以選擇是否公開,默認是private 的權限,如果在錯誤的配置下,給了Listobject 權限,就會導致可遍歷存儲桶。

2.1.1 阿里云​

202203171739847.png-water_print

在此時如果選擇公有讀的話,會出現兩種情況:
在只配置讀寫權限設置為公有讀或公共讀寫的情況下,無法列出對象,但能夠直接讀取對應的文件(正常情況)
如果想列出Object 對象,需要在Bucket 授權策略中設置ListObject 即可
202203171742467.png-water_print

202203171743563.png-water_print

2.2 Bucket 桶爆破​

當不知道Bucket 名稱的時候,可以通過爆破獲得Bucket 名稱,這有些類似於目錄爆破,只不過目錄爆破一般通過狀態碼判斷,而這個通過頁面的內容判斷。

2.2.1 阿里云​

AccessDenied:存在存儲桶,但無權限訪問
202203172044379.png-water_print

InvalidBucketName:表示存儲桶的名稱不符合規範,屬於無效的存儲桶名稱
202203172045958.png-water_print

NoSuchBucket:表示不存在這個存儲桶
202203172046165.png-water_print

2.3 特定的 Bucket 策略配置​

特定的策略配置的指的是,如果管理員設置了某些IP,UA 才可以請求該存儲桶的話,此時如果錯誤的配置了GetBucketPolicy,可導致攻擊者獲取策略配置

2.3.1 阿里云​

通過直接訪問:http(s)://url/?policy 來確定是否對Bucket 具有讀取權限
202203181613228.png-water_print

可以看到,管理員配置了對於任意認證主主體開放了所有Action 的權限。

2.4 任意文件上传与覆盖​

如果在配置存儲桶時,管理員錯誤的將存儲桶權限,配置為可寫,這將會導致攻擊者可上傳任意文件到存儲桶中,或覆蓋已經存在的文件

2.4.1 阿里云​

202203181622847.png-water_print

202203181622397.png-water_print

如果目標的對象存儲支持html 解析,那就可以利用任意文件上傳進行XSS 釣魚、掛暗鏈、掛黑頁、供應鏈投毒等操作。

2.6 Bucket 接管​

假設管理員通過域名解析並綁定了一個存儲桶,但是管理員將存儲桶刪除後,沒有將域名解析的CNAME 刪除,這時會訪問域名就會出現NoSuchBucket。因此可以登錄自己的阿里雲賬號,創建同樣的Bucket 即可。

2.6.1 阿里云​

在阿里雲下,當Bucket 顯示NoSuchBucket 說明是可以接管的,如果顯示AccessDenied 則不行。
202203181625733.png-water_print

2.7 Bucket 可修改​

如果擁有Bucket Policy 的編輯權限,可以通過上傳或修改一個新的配置,進而實現攻擊(拒絕服務或者修改訪問策略)

2.7.1 阿里云​

可以通過直接PUT 一個配置,達到攻擊的目的。
1
aliyun oss bucket-policy oss://securitytest-geekby --method put ./oss.json

参考​

火線沙龍——淺析雲存儲的攻擊利用方式
 
返回
上方