s3創建對象存儲空間
『壹』 AWS S3 對象存儲攻防
對象存儲,一種面向對象的存儲方式,也被業界稱為雲存儲。Amazon 的 S3(Simple Storage Service)是其公開雲存儲服務的代表,S3 協議因其廣泛認可性,成為了主流對象存儲廠商的首選標准協議。對象存儲中,數據以桶(Bucket)為單位組織,每個桶內存儲對象,對象包含 Key、Data 和 Metadata 三部分。操作 Amazon S3 的方法多樣,本文將簡要介紹對象存儲的基本概念,然後探討在對象存儲環境下的攻防手法。
在 Bucket 的 ACL(訪問控制列表)設置中,用戶可選擇允許特定人群訪問。如果設置為「所有人可列出對象」,只需知道鏈接,即可訪問對象。當許可權設為「私有」時,需通過簽名信息訪問,如:teamssix.s3.ap-northeast-2.amazonaws.com。對於敏感文件,建議設置為「私有」許可權,並強化對簽名信息的安全意識。理論上,即使對象名稱復雜,私有許可權的安全性也更高。
當 Bucket 名稱未知時,可通過爆破方式獲取。與目錄爆破類似,但通過頁面內容而非狀態碼判斷。存在兩種情況:Bucket 不存在時返回「InvalidBucketName」或「NoSuchBucket」,存在時則列出 Object 或返回「AccessDenied」。通過返回內容不同,可進行 Bucket 名稱的爆破。知道 Bucket 名稱後,Key 的爆破變得相對容易。
在 S3 中,如果 Bucket 策略允許「s3:ListBucket」,則可能導致 Bucket Object 遍歷。MinIO 等工具配置為公開時,打開目標站點會列出 Bucket 中的所有 Key。將 Key 值拼接到目標站點後,可訪問相應對象。因此,對象存儲配置不當,如公共讀寫,可能造成任意文件上傳與覆蓋,甚至利用 HTML 解析進行 XSS 釣魚、掛鏈等操作。
若 AccessKeyId 和 SecretAccessKey 泄露,可能導致對對象存儲的所有許可權獲取。收集泄露信息的方法包括多種途徑。通過 Bucket 接管,若頁面顯示「NoSuchBucket」,說明 Bucket 可接管,並提供 Bucket 名稱。在 AWS 控制台創建同名 Bucket 後,通過頁面特徵判斷,即可實現接管,最終設置為公開並上傳文件,驗證許可權。
Bucket ACL 設置為可寫時,策略允許任何人訪問和寫入 ACL,但不能讀取和寫入對象。修改策略為 FULL_CONTROL 後,可控制 Bucket。類似地,修改 Object ACL 為 FULL_CONTROL,可實現讀取許可權。特定的 Bucket 策略配置只允許某些特定條件下的訪問,了解策略後,可訪問相關對象。例如,通過添加 User-Agent,可繞過限制直接訪問。在實際操作中,留意對方可能使用的策略,嘗試訪問原本的「AccessDenied」對象。
利用可讀寫的 Bucket 策略,可將原本不可訪問的數據設置為可訪問,獲取敏感信息。修改網站引用的 S3 資源,通過策略控制許可權,導致網站癱瘓。例如,修改策略為 Deny,阻止業務正常運行。通過這些攻防手法,對象存儲的安全性和策略配置至關重要,需加強安全管理,防止潛在威脅。