什么是OSS?
對象存儲服務(Object Storage Service,OSS)是一種海量、安全、低成本、高可靠的雲存儲服務,適合存放任意類型的文件。容量和處理能力彈性擴展,多種存儲類型供選擇,全面優化存儲成本。
什么是AccessKey?
AccessKey包括AccessKeyID和AcessKeySecret兩部分,AccessKeyID用於標識用戶,AcessKeySecret用於驗證用戶的密鑰,主要用於程序方式調用雲服務API。
我們來看一個簡單的測試案例,當測試某個上傳點時,獲取到一個HTML表單:
請求的主機名xxxx.aliyuncs.com和表單的OSSAccessKeyId參數,基本可以確認系統使用 OSS 作為上傳文件存儲,即使上傳惡意腳本文件也無法成功解析,面對這種情況如何破局?別着急放棄,還有一次機會的。
通過查閱相關文件,我們可以知道使用表單上傳文件到 OSS的技術方案里,有三種實現方式:
OSS產品文檔:https://help.aliyun.com/document_detail/31923.html
- 在客戶端通過JavaScript代碼完成簽名,然后通過表單直傳數據到OSS。
- 在服務端完成簽名,然后通過表單直傳數據到OSS。
- 在服務端完成簽名,並且服務端設置了上傳后回調,然后通過表單直傳數據到OSS。OSS回調完成后,再將應用服務器響應結果返回給客戶端。
泄露方式
前端泄露
當采用JavaScript客戶端直接簽名時,AccessKeyID和AcessKeySecret會暴露在前端頁面,存在嚴重的安全隱患。
通過翻找js文件,可發現AccessKey就寫在js文件里面。
后台直接泄露
開發平台/開源平台泄露
github
配置文件泄露
AccessKey泄露,如何進行漏洞利用呢?
AccessKey是訪問阿里雲API的密鑰,將會造成什么樣的風險呢。
通過API接口
AccessKey ID和AccessKey Secret 就是打開這扇門的鑰匙,通過調用API完成對服務器ECS實例的管理和運維操作。
阿里API參考:https://helpcdn.aliyun.com/document_detail/117934.html
阿里API提供了執行命令的功能,即如果泄露的OSS AccessKey是阿里雲的,那就可以直接利用阿里API反彈shell
具體實例參考:https://mp.weixin.qq.com/s/EgvbSpK5Gn3u1N1Q0G9rdw
其他OSS服務提供商也可參考此處利用方法
通過第三方管理工具
OSSBrowser
ossbrowser 是 OSS 官方提供的圖形化管理工具,提供類似 Windows 資源管理器的功能,使用 ossbrowser,您可以方便地瀏覽、上傳、下載和管理文件。
下載地址:http://gosspublic.alicdn.com/oss-browser/1.9.4/oss-browser-win32-x64.zip
護衛神.雲備份
一鍵備份數據到阿里雲OSS,支持Bucket管理,支持鼠標拖放,支持剪貼板,支持斷點續傳,支持統計目錄大小,支持文件搜索。
下載地址:https://d.hws.com/free/HwsOSS.zip
行雲管家
多雲管理平台,導入AccessKey,可重置服務器密碼,接管服務器。
官方地址:https://yun.cloudbility.com/login.html
常見問題解答
OSS的AccessKey 在什么情況下會出現泄露?
采用JavaScript客戶端直接簽名時,AccessKeyID和AcessKeySecret會暴露在前端頁面,存在嚴重的安全隱患。
Github等平台泄露,通過關鍵字可搜索到。
通過其他漏洞讀取配置文件獲取AccessKey。
前端OSS的AccessKey 泄露,代碼如何修復?
采用JavaScript客戶端簽名直傳存在嚴重安全風險,建議采用服務端簽名后直傳。
訪問OSS的AccessKey泄露了,該如何補救?
最安全的辦法就是更換AccessKey,畢竟它只能創建或刪除,啟用或禁用,是沒有給你修改密碼的機會的。
測試時,如何簡單地來判斷OSS的AccessKey是否儲存在前端?
可以通過上傳操作時,抓取的HTTP請求數量來做簡單的判斷。
當采用JavaScript客戶端直接簽名,用戶直接上傳數據到OSS,一次請求即可完成。
當采用服務端簽名后直傳的方式,需要用戶向應用服務器請求上傳Policy,再將數據上傳到OSS,至少需要兩次請求。
企業上雲已成趨勢,面對雲平台的部署架構,不管是開發、安全或是運維,都將面臨新的風險和挑戰。雲上豐富的產品矩陣,為用戶提供了各種實例的選項,但技術方案的實現,雲上的安全策略及服務,RAM精准的權限控制,每一步都與安全有關。