一、概述
Minio是一款針對對象存儲的開源軟件,可在Amazon S3環境中運行,同時也支持私有雲存儲等環境。而Minio Browser是Minio的一個Web管理界面。在Minio Browser中,用戶可以直接在界面上管理、上傳、下載、刪除等操作Minio中的文件。
二、漏洞描述
在Minio Browser中存在一種漏洞,容易導致不適當訪問Minio存儲桶中的文件。具體可通過如下步驟進行:
1、在Minio Browser中上傳文件,並將文件命名為“../filename.txt”(其中“../”表示返回上一級)。此時,將在Minio中創建一個名為“filename.txt”的文件,但該文件的實際路徑實際上是當前存儲桶的上一級路徑。
示例代碼: from io import BytesIO import requests files = {'file': ('../filename.txt', BytesIO(b'1234'))} response = requests.post('http://127.0.0.1:9000/minio/mybucket/', files=files)
2、之後,用戶通過Minio Browser進行訪問,Minio Browser會對“../”進行編碼,導致返回上一級路徑變成了“%2E%2E/”,從而實際上訪問的是存儲桶中其他文件的內容。
三、漏洞影響
當攻擊者利用該漏洞時,可以獲得存儲桶中的所有文件,並將需要的文件下載到本地進行進一步攻擊。同時,攻擊者可以將文件上傳到存儲桶的上一級目錄中,以達到入侵的目的。
四、漏洞修復
為了防止該漏洞的產生,建議採取如下修復方法:
1、限制文件名中包含“../”字樣;
2、對輸入進行合法性驗證。
示例代碼: def check_filename(name): if ".." in name: return False return True upload_filename = "../filename.txt" if not check_filename(upload_filename): print("invalid file name") else: files = {'file': (upload_filename, BytesIO(b'1234'))} response = requests.post('http://127.0.0.1:9000/minio/mybucket/', files=files)
五、結語
針對Minio Browser漏洞,在文件上傳時應當限制文件名中的“../”字樣,或者在上傳前對輸入進行合法性驗證;此外,在存儲桶的訪問權限設置上,也需要嚴格控制,以防止未授權訪問。
原創文章,作者:QUHAX,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/363913.html