




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、目錄 HYPERLINK l _bookmark0 前言 1 HYPERLINK l _bookmark1 一、數服帶的全挑戰 2 HYPERLINK l _bookmark2 二、b 用管務的據全 HYPERLINK l _bookmark3 三、象儲務問略評機研究 HYPERLINK l _bookmark4 四beet訪問制制與權法究 HYPERLINK l _bookmark5 五、內個象儲防矩陣 HYPERLINK l _bookmark6 六、F漏帶的 HYPERLINK l _bookmark7 七-52漏為 s來安挑戰 HYPERLINK l _bookmark8 八、服器防陣
2、 HYPERLINK l _bookmark9 九d險 HYPERLINK l _bookmark10 十云 IM原理風及最實踐 前言云計算的出現徹底改變了IT產業和傳統企業的IT結構各行各業正加速云步伐。從安全從業者視角來看,云就像一個極具誘惑力的“蜜罐,云上海量的數據和業務正吸引著攻擊者的視線。 近年來云上安全威脅呈現出三大趨勢首先在威脅主體上專業化的高持續性威脅(APT)組織層出不窮,當前全球范圍內具備國家級攻擊力量的黑組織就高達40多個其次在受攻擊目標上國家關鍵基礎設施企業商業數據個人敏感信息等都成為攻擊標的最后數實融合和數字化轉型的潮流致使云全面臨著資源和人力的巨大缺口。 云時代下各
3、種新技術不斷涌現使得云安全在攻擊面以及攻擊路徑上呈現出愈發復雜的狀態。當前,云上安全攻防實力已成為企業價值的重要參數之一騰訊安全依托20余年網絡攻防實戰技術的沉淀從元數據服務對象存儲服務、 Kubelet訪問控制機制安全漏洞等角度出發將實戰經驗匯編云上安全攻防實戰手冊,以期為行業帶來參考。1一、元一、元據服來的安挑戰在針對云上業務的的攻擊事件中很多攻擊者將攻擊脆弱的元數據服務作攻擊流程中重要的一個環節并最終造成了嚴重的危害。 以2019年的美國第一資本投資國際集(CapitalOne信息泄露事件舉例根據ACaseStudyoftheCapitalOneDataBreach報告指出,攻擊者利 C
4、apitalOne部署在AWS云上實例中的SSRF漏洞向元數據服務發送請求并獲取色的臨時憑證,在獲取角色臨時憑據后將該角色權限下的S3存儲桶中的數據制到攻擊者的本地機器上最終導致這一嚴重數據泄露事件的產生這一事件響了北美超過1億人CapitalOne 的股價在宣布數據泄露后收盤下跌 5.9%接下來的兩周內總共下跌了 15%。 Capital One信息泄露事件攻擊原理圖,可參見圖: 圖1- CaitaOne信露事攻原 0元數據服務以及角色介紹在介紹元數據服務帶來的安全挑戰之前,我們先來簡單介紹一下元數據0元數據服務以及角色介紹元數據服務元數據即表示實例的相關數據,可以用來配置或管理正在運行的實
5、例。用 戶可以通過元數據服務在運行中的實例內查看實例的元數據。以AWS舉例,可 以在實例內部訪問如下地址來查看所有類別的實例元數據: HYPERLINK 54/latest/meta-data/ 54/latest/meta-data/ 54屬于鏈路本地地址(Link-localaddress,鏈路本地地址又稱連結本地位址,是計算機網絡中一類特殊的地址,它僅供于在網段,廣播域中的主機相互通信使用。這類主機通常不需要外部互聯網服務,僅有機間相互通訊的需求。IPv4鏈路本地地址定義在/16地址塊。 而在具體的技術實現上,云廠商將元數據服務運行在Hypervisor(虛擬管理程序)上。當實例向元數據
6、服務發起請求時,該請求不會通過網絡傳輸,也永遠不會離開這一臺計算機。基于這個原理,元數據服務只能從實例內部訪問。 可以PING云廠商所提供的元數據服務域名,以查看其IP地址 圖1- 從上圖可見,元數據服務屬于鏈路本地地址。從設計上來看,元數據服看起來很安全,那為什么說元數據服務脆弱呢? 由于元數據服務部署在鏈路本地地址上,云廠商并沒有進一步設置安全施來檢測或阻止由實例內部發出的惡意的對元數據服務的未授權訪問。攻擊可以通過實例上應用的SSRF漏洞對實例的元數據服務進行訪問。 因此,如果實例中應用中存在SSRF漏洞,那么元數據服務將會完全暴露攻擊者面前。 在實例元數據服務提供的眾多數據中,有一項數
7、據特別受到攻擊者的青睞那就是角色的臨時訪問憑據。這將是攻擊者由SSRF漏洞到獲取實例控制權限的橋梁。 訪問管理角色既然攻擊涉及到訪問管理角色的臨時憑據,我們首先看下訪問管理角色是 什么:訪問管理的角色是擁有一組權限的虛擬身份,用于對角色載體授予云中 服務、操作和資源的訪問權限。用戶可以將角色關聯到云服務器實例。為實綁定角色后,將具備以下功能及優勢:可使用 STS 臨時密鑰訪問云上其他服務 可為不同的實例賦予包含不同授權策略的角色使實例對不同的云資源具不同的訪問權限,實現更精細粒度的權限控制 無需自行在實例中保存 SecretKey通過修改角色的授權即可變更權限捷地維護實例所擁有的訪問權限 具體
8、的操作流程如下: 圖-302針對元數據服的攻擊在將角色成功綁定實例后,用戶可以在實例上訪問元數據服務來查詢角色的臨時憑據,并使用獲得的臨時憑據操作該角色權限下的云服務API02針對元數據服的攻擊接下來我們將介紹下針對元數據服務的一些常見的攻擊模式。攻擊者可以首先通過目標實例上的SSRF漏洞獲取與實例綁定的角色名(rolename攻擊者可以構造訪問元數據接口的payload,并通過存在SSRF漏洞的參數傳遞: http:/x.x.x.x HYPERLINK 54/latest/meta-data/ /?url=http:/169.25 HYPERLINK 54/latest/meta-data/
9、 4.169.254/latest/meta HYPERLINK 54/latest/meta-data/ -data/ iam/info在獲取到角色名稱后攻擊者可以繼續通過SSRF漏洞獲取角色的臨時憑證http:/x.x HYPERLINK 54/latest/metadata .x.x/url=http:/169 HYPERLINK 54/latest/metadata .254.169.254/late HYPERLINK 54/latest/metadata st/metadata /iam/security-credentials/ 獲取角色臨時憑據的案例可參見下圖: 圖1- 從上圖
10、可見,攻擊者可以獲取角色的TmpSecretID以及TmpSecretKey 在攻擊者成功獲取角色的臨時憑據后,將會檢查獲取到的角色臨時憑的權限策略。有的時候,可以通過獲取到的角色名稱,來猜測該角色的權策略例如角色名為TKE_XXX則這個角色很大可能是擁有操作TKE容器服務的權限。 此外,如果獲取的臨時密鑰擁有查詢訪問管理接口的權限,攻擊者可通過訪“訪問管理API來準確獲取的角色權限策略可以通過如下幾種方式判斷獲取角色的權限策略: 1、通過使用臨時API憑據訪問“獲取角色綁定的策略列表”API接口,見下圖: 圖1- 從上圖可見,攻擊者獲取到的與實例綁定的角色的臨時憑據權限策略 “Adminis
11、tratorAccess”,這個策略允許管理賬戶內所有用戶及其權限、財務相關的信息、云服務資產。 2、通過使用臨時API憑據訪問“獲取角色詳情”API接口,見下圖: 圖1- 通過查詢的返回結果可以見,角色的權限策略為AssumeRole。 在弄清楚竊取的憑據所擁有的權限后,攻擊者便可以通過憑據的權限制定后續的攻擊流程。但在開始后續的攻擊階段之前,攻擊者會先判斷當前權 限是否可以獲取目標的數據資源。 在所有云資源中,攻擊者們往往對目標的數據更加感興趣。如果攻擊獲取的密鑰擁有云數據庫服務或云存儲服務等服務的操作權限,攻擊者將嘗試竊取目標數據。臨時憑據同樣也可以幫助攻擊者們在目標實例中執行令并控制實
12、例權限。 與通過密鑰構造請求這種方式發起攻擊相比,攻擊者們在實戰中更傾于使用云命令行工具來進行攻擊。 云服務廠商為用戶提供了相應的云命令行工具以管理云服務,例如騰云提供的TCCLI工具、AWS的AWSCLI工具。攻擊者可以通過在云命令行工具中配置竊取到的API密鑰來對云資源進行調用。與構造請求訪問云API接口這種方式相比,使用云命令行工具將會給攻擊者帶來更多便捷。 在使用云命令行工具之前應先配置API密鑰以AWSCLI工具配置舉例,可以將: 圖1- 攻擊者將竊取來的 AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY、 AWS_SESSION_TOKEN 配置完成后
13、,可以使用云命令行工具在目標實例上執行命令。 在配置好密鑰后攻擊者可以嘗試使用如下圖命令通過AWSCLI在實例中運行bash腳本以獲取實例控制權限 圖1- 借助通過元數據服務竊取到的憑據以及AWSCLI所提供的功能,攻擊者可以在實例中執行反彈shell命令,由此進入實例。 除此之外攻擊者還可以選擇修改userdata將反彈shell寫入userdata中后將實例重啟,從而控制實例。 Userdata涉及到云廠商提供的一種功能,這項功能允許用戶自定義配置在實例啟動時執行的腳本的內容。 通過這一功能攻擊者可以嘗試在實例的userdata中寫入惡意代碼這些代碼將會在實例每次啟動時自動執行。 以AWS
14、舉例,攻擊者可以將惡意代碼寫入my_script.txt文件中,然后執行如下指令將my_script.txt文件中內容導入userdata中。 圖1- 、 、 圖1- 當實例重啟時,userdata中的惡意代碼將會被執行。 攻擊者除了可以使用臨時憑據獲取實例的控制權限,通過元數據服務竊 取到的擁有一定權限的角色臨時憑據在持久化階段也發揮著作用。攻擊者嘗 試使用通過元數據服務獲取的臨時憑據進行持久化操作,確保能夠持續擁有訪問權限,以防被發現后強行終止攻擊行為。 使用臨時憑據進行持久化的方式有很多,比如說在上文中所提及的在 userdata中寫入惡意代碼這項攻擊技術,也是可以運用在持久化階段:通過
15、在實例的userdata中寫入惡意代碼這些代碼將會在實例每次啟動時自動執行。這將很好的完成持久化操作而不易被發現。 除此之外攻擊者還可以嘗試在賬戶中創建一個新的用戶以進行持久化,以AWSCLI舉例,攻擊者可以通過awsiam create-user -user-name Bob 為賬戶新建一個名為 圖1- 隨后使用awsiamcreate-access-key-user-nameBob指令為 圖1- 雖然這個方法操作簡單且有效,但是賬戶里突然新增的用戶及其容易察覺,因此并不是一個特別有效的持久化方式。 此外,攻擊者還會使用一種常見的持久化手法,那就是給現有的用戶配額外的密鑰。以針對AWS的攻擊
16、來說,攻擊者可以使用aws_pwn這款工具來完成這項攻擊,aws_pwn地址如下: /dagrz/aws_pwn aws_pwn提供了多項技術以供攻擊者可以完成針對aw的持久化攻擊,關于aws_pwn所提供的持久化功能可見下圖: 通過元數據服務竊取也可以被攻擊者應用于橫向移動操作。攻擊者可通過元數據服務竊取角色的臨時憑據橫向移動到角色對應權限的資源上。此之外,攻擊者會在所控制的實例上尋找配置文件,并通過配置文件中的置項中獲取其他資源的訪問方式以及訪問憑據。 攻擊者在橫向移動的過程中,獲取到可以操作云數據庫或存儲服務必權限的密鑰或是登錄憑據后,攻擊者就可以訪問這些服務并嘗試將其中的戶數據復制到攻
17、擊者的本地機器上。 以AWSCLI為例,攻擊者可以通過如下命令將s3存儲桶中的內容同步到本地 圖1- 元數據安全性改進仍然以上文提及的CapitalOne銀行數據泄露事件舉例攻擊者使用獲取 到的角色臨時憑據多次執“awss3ls命令獲取CapitalOne 賬戶的存 儲桶的完整列表;接著攻擊者使用 sync命令將近30 GB 的Capital One用 戶數據復制到了攻擊者本地。總的來說,元數據服務為云上安全帶來了極大 的安全挑戰攻擊者在通過SSRF等漏洞獲取到實例綁定的角色的臨時憑據后,將會將其應用于云上攻擊的各個階段。通過破壞用戶系統,濫用用戶資源、 加密用戶資源并進行勒索等手段影響用戶環
18、境正常使用元數據安全性改進以AWS為例AWS為了解決元數據服務在SSRF 攻擊面前暴露出的安全性問題,引入IMDSv2來改善其總體安全情況。 在 IMDSv2 中,如果用戶想訪問元數據服務,首先需要在實例內部向 IMDSv2發送一個HTTPPUT請求來啟動會話,示例如下: 圖1- X-aws-ec2-metadata-token-ttl-seconds用于指定生存時(TTL(以秒為單位),上文中生成的token有效期為6小時(21600秒),在IMDSv2中21600秒是允許的最大TTL值。此請求將會返回一個token,后續訪問元數據服務,需要在HTTPheader中攜帶此token,見如下請
19、求: 圖1- 完整流程如下: TOKEN=curl-X PUT HYPERLINK 54/latest/api/token 54/latest/api/token -HX- aws-ec2-metadata-token-ttl-seconds: 21600 HYPERLINK 54/latest/meta-data/profile curlhttp:/169.254. HYPERLINK 54/latest/meta-data/profile 169.254/latest/meta HYPERLINK 54/latest/meta-data/profile -data/profile -H“X
20、-aws-ec2- metadata-token: $TOKEN” 圖1- 可見,在采用IMDSv2時,即使實例中應用存在SSRF漏洞,攻擊者也無法輕易的利用 SSRF漏洞向元數據服務發出PUT請求來獲取 token,在沒有 token的情況下攻擊者并不能訪問元數據服務也就無法獲取角色的臨時憑據進行后續的攻擊行為。 除了使用PUT啟動請求這項安全策略之外,IMDSv2還引入了如下兩個機制保證元數據服務的安全: 不允許X-Forwarded-For標頭:如果攻擊者通過反向代理的方式的確以繞過PUT限制,但是,通過代理傳遞的請求將包含“ X-Forwarded-For”頭。這樣的請求被IMDSv2
21、拒絕,并且不發行令牌。 IP數據包TTL設置為“ 1”:TTL指定數據包被路由器丟棄之前允許通 過的最大網段數量是IP數據包在網絡中可以轉發的最大跳數(躍點數),將其設置為1可確保包含密令牌的HTTP響應會在實例外部傳播。即使攻擊者夠繞過所有其他保護措施這也將確保令牌不會在實例外部傳播并且一旦數包離開實例,數據包將被丟棄。 4元數據服務更多安全隱患值得注意的是,AWS 認為現有的實例元數據服務(IMDSv1)是完全安全的因此將繼續支持它如果不執行任何操作則IMDSv1和IMDSv2都可用于EC2實例。這就是說,在不主動禁用IMDSv14元數據服務更多安全隱患IMDSv2方案的確可以有效的保護存
22、在SSRF漏洞的實例,使其元數據不被攻擊者訪問。但是這項技術可以完美的保護元數據、保護租戶的云業務全嗎?答案是不能。 設想一下:當攻擊者通過其他漏洞(例如RCE漏洞)獲取實例的控制權之后,IMDSv2的安全機制將變得形同虛設。攻擊者可以在實例上發送PUT請求獲取token隨后利用獲得的token獲取角色臨時憑據最后利用角色臨時憑據訪問角色綁定的一切云業務,具 圖1- 總之,當攻擊者通過RCE漏洞獲取實例控制權后,可以通過元數據服務獲取到的臨時憑據進行橫向移動。鑒于云廠商產品API功能的強大性,在獲 取角色臨時憑據后,可能造成及其嚴重的影響。 值得注意的是,如果在云平臺控制臺中執行一些高危行為,
23、平臺默認會需要進行手機驗證。但通過使用臨時憑據調用發送請求調用API接口,并不需要手機驗證碼,可以繞過這項安全檢測。 參考文獻1./cn/blogs/china/talking-about-the-metadata- protection-on-2.the-instance-from-the-data-leakage-of-capital-one/ /shurmajee/aws-enhances-metadata-service-security- with-imdsv2-b5d4b238454b /smadnick/www/wp/2020-07.pdf 5./dagrz/aws_pwn /z
24、h_cn/cli/latest/userguide/cli-services-s3- commands.html#using-s3-commands-managing-objects-sync /zh_cn/IAM/latest/UserGuide/id_users_create.ht ml /cloud-security/aws-security- vulnerabilities-perspective/ 二、二、eb用托服務中元數全隱患Web應用托管服務是一種常見的平臺即服務產(PaaS可以用來運行并管理Web類移動類和API類應用程序Web應用托管服務的出現有效地避免了應用開發過程中繁瑣
25、的服務器搭建及運維,使開發者可以專注于業邏輯的實現。在無需管理底層基礎設施的情況下,即可簡單、有效并且靈地對應用進行部署、伸縮、調整和監控。 Web 應用托管服務作為一種云上服務,其中也會應用到的元數據服務行實例元數據查詢,因此不得不考慮元數據服務安全對Web應用托管服務安全性的影響。 通過“淺談云上攻防”系列文章淺談云上攻防元數據服務帶來的安 0.b 應用托管服務中的元數據安全隱全挑戰一文的介紹,元數據服務為云上業務帶來的安全挑戰想必讀者們經有一個深入的了解。Web 應用托管服務中同樣存在著元數據服務帶來的全挑戰,本文將擴展探討元數據服務與0.b 應用托管服務中的元數據安全隱在 Web 應用
26、托管服務中的元數據安全隱患章節中,我們將以 AWS 下 ElasticBeanstalk服務進行舉例以此介紹一下攻擊者如何攻擊Web應用托管服務并利用元數據服務獲取信息發起后續攻擊,最終對用戶資產造成危害。 AWS Elastic Beanstalk 是 AWS 提供的平臺即服務 (PaaS) 產品,用于部署和擴展為各種環(如 Java.NETPHPNode.jsPythonRuby 和 Go)開發的 Web 應用程。Elastic Beanstalk 會構建選定的受支持的平臺版本,并預置一個或多個AWS資源(如 Amazon EC2 實例)來運行應用程序。Elastic Beanstalk
27、的工作流程如下: 圖2- 在使用ElasticBeanstalk 部署Web 應用程序時用戶可以通過上傳應用程序代碼的zip 或 war 文件來配置新應用程序環境,見下圖: 圖2- 在進行新應用程序環境配置時,Elastic Beanstalk 服務將會進行云服務器實例創建、安全組配置等操作。 與此同時, ElasticBeanstalk也將創建一個名為 elasticbeanstalk- region-account-id 的 AmazonS3 存儲桶這個存儲桶在后續的攻擊環節中比較重要因此先簡單介紹一下ElasticBeanstalk服務使用此存儲桶存儲用戶上傳的zip與war 文件中的源
28、代碼、應用程序正常運行所需的對象、日志、臨時配置文件等。 elasticbeanstalk-region-account-id中存儲的對象列表以及其 圖2- ElasticBeanstalk服務不會為其創建的 AmazonS3 存儲桶啟用默認加密這意味著在默認情況下對象以未加密形式存儲在存儲桶(并且只有授權用戶可以訪問)。 在了解Elastic Beanstalk的使用之后,我們重點來看一下元數據服務與Elastic Beanstalk服務組合下的攻擊模式。 當云服務器實例中存在SSRFXXERCE等漏洞時攻擊者可以利用這些漏洞,訪問云服務器實例上的元數據服務,通過元數據服務查詢與云服務實例綁
29、定的角色以及其臨時憑據獲取,在竊取到角色的臨時憑據后,并根竊取的角色臨時憑據相應的權限策略,危害用戶對應的云上資源。 而在Elastic Beanstalk 服務中也同樣存在著這種攻擊模式,Elastic Beanstalk 服務創建名為aws-elasticbeanstalk-ec2-role的角色,并將其與云服務器實例綁定。 我們關注一下aws-elasticbeanstalk-ec2-role角色的權限策略從AWS官網可知,Elastic Beanstalk服務為aws-elasticbeanstalk-ec2-role角色提供了三種權限策略用于 Web 服務器層的權限策略用于工作程序層
30、的權限策略;擁有多容器 Docker 環境所需的附加權限策略,在使用控制臺或 EB CLI 創建環境時,Elastic Beanstalk 會將所有這些策略分配給 aws- elasticbeanstalk-ec2-role角色,接下來分別看一下這三個權限策略。 AWSElasticBeanstalkWebTier 授予應用程序將日志上傳到 Amazon 圖2- AWSElasticBeanstalkWorkerTier 授予日志上傳、調試、指標發布和工作程序實例任務(包括隊列管理、定期任務)的權限,見下圖: 圖2- AWSElasticBeanstalkMulticontainerDocke
31、r 向 Amazon Elastic 圖2- 從上述策略來看,aws-elasticbeanstalk-ec2-role 角色擁有對“elasticbeanstalk-”開頭的S3 存儲桶的讀取 圖2- 通過權限策略規則可知此權限策略包含上文介紹的elasticbeanstalk- region-account-id存儲桶的操作權限。 elasticbeanstalk-region-account-id 存儲桶命名也是有一定規律的: elasticbeanstalk-region-account-id存儲桶名由“elasticbeanstalk”字符串資源region值以及account-id
32、值組成其中elasticbeanstalk字段是固定的,而region與account-id值分別如下: l region 是資源所在的區域(例如,us-west-2) account-id 是Amazon賬戶 ID不包含連字(例如123456789012 通過存儲桶命名規則的特征,在攻擊中可以通過目標的信息構建出elasticbeanstalk-region-account-id存儲桶的名字。 接下來介紹一下 Elastic Beanstalk 中元數據安全隱患:用戶在使用 Elastic Beanstalk中部署Web應用程序時,如果用戶的Web應用程序源代碼中存在SSRFXXERCE等漏
33、洞攻擊者可以利用這些漏洞訪問元數據服務接口并獲取account-idRegion以及aws-elasticbeanstalk-ec2-role角色的臨時憑據,并通過獲取到的信息對 S3 存儲桶發起攻擊,account-id、Region以及aws-elasticbeanstalk-ec2-role角色的臨時憑據獲取方式如下 以ElasticBeanstalk中部署Web應用程序中存在SSRF漏洞為例攻擊者可以通過發送如下請求以獲取account-id、Region: https:/x.x.x.x/ssr HYPERLINK 54/latest/dyn f.php?url=http:/16 HY
34、PERLINK 54/latest/dyn 54/latest/dynamic/instance-identity/document從響應數據中AccountidRegion字段獲取account-idRegion值攻擊者可以以此構造出目標elasticbeanstalk- region-account-id存儲桶名稱。 攻擊者可以發送如下請求以獲取aws-elasticbeanstalk-ec2-role角色的臨時憑據: https:/x.x.x.x/ssr HYPERLINK 54/latest/met f.php?url=http:/16 HYPERLINK 54/latest/met
35、54/latest/met a-data/iam/security-credentials/ AWS-elasticbeanstalk-EC2-role響應數據中獲取 aws-elasticbeanstalk-ec2-role 角色的臨時憑據:AccessKeyId、SecretAccessKey、Token三個字段值。 隨后,攻擊者使用獲取到的aws-elasticbeanstalk-ec2-role角色的臨時憑據訪問云API接口并操作elasticbeanstalk-region-account-id存儲桶。 上述攻擊模式的攻擊流程圖如下: 圖2- elasticbeanstalk-reg
36、ion-account-id存儲桶對ElasticBeanstalk服務至關重要在攻擊者獲取elasticbeanstalk-region-account-id存儲桶的操作權限之后,可以進行如下的攻擊行為,對用戶資產進行破壞。 獲取用戶源代碼 在獲取elasticbeanstalk-region-account-id存儲桶的控制權后攻擊者可以遞歸下載資源來獲取用戶Web應用源代碼以及日志文件,具體操作如下:aws s3 cp s3:/ elasticbeanstalk-region-account-id/ /攻擊者本地目錄 recursive。 攻擊者可以通過在AWS命令行工具中配置獲取到的臨
37、時憑據,并通過如上指令遞歸下載用戶 elasticbeanstalk-region-account-id 存儲桶中的信息,并將其保存到本地。 獲取實例控制權 除了竊取用戶Web應用源代碼、日志文件以外,攻擊者還可以通過獲取的角色臨時憑據向 elasticbeanstalk-region-account-id 存儲桶寫入Webshell從而獲取實例的控制權。 攻擊者編寫webshell文件并將其打包為zip文件通過在AWS命令行工具中配置獲取到的臨時憑據并執行如下指令將webshell文件上傳到存儲桶中: aws s3 cp webshell.zip s3:/ elasticbeanstalk-
38、region- account-id/ 當用戶使用AWSCodePipeline等持續集成與持續交付服務時由于上傳 webshell操作導致代碼更改,存儲桶中的代碼將會自動在用戶實例上更新部署從而將攻擊者上傳的webshell部署至實例上攻擊者可以訪問webshell路徑進而使用webshell對實例進行權限控制。 002更多安全隱患除了上文章節中介紹的安全隱患,Web應用托管服務中生成的錯誤的角 色權限配置,將為Web應用托管服務帶來更多、更嚴重的元數據安全隱患。 從上文章節來看,Elastic Beanstalk 服務為 aws-elasticbeanstalk-ec2-role角色配置了
39、較為合理的權限策略,使得即使Web應用托管服務中托管的用戶應用中存在漏洞時,攻擊者在訪問實例元數據服務獲取 aws- elasticbeanstalk-ec2-role角色的臨時憑據后也僅僅有權限操作Elastic Beanstalk服務生成的elasticbeanstalk-region-account-id S3存儲桶,并非用戶的所有存儲桶資源。這樣一來,漏洞所帶來的危害并不會直接擴散到用戶的其他資源上。 但是,一旦云廠商所提供的Web應用托管服務中自動生成并綁定在實例上的角色權限過高,當用戶使用的云托管服務中存在漏洞致使云托管服務自動生成的角色憑據泄露后危害將從云托管業務直接擴散到用戶的
40、其他業務,攻擊者將會利用獲取的高權限臨時憑據進行橫向移動。 通過臨時憑據,攻擊者可以從Web應用托管服務中逃逸出來,橫向移動到用戶的其他業務上,對用戶賬戶內眾多其他資產進行破壞 圖2- 由于攻擊者使用Web應用托管服務生成的合法的角色身份,攻擊行為難以被發覺,對用戶安全造成極大的危害。 針對于這種情況,首先可以通過加強元數據服務的安全性進行緩解,止攻擊者通過 SSRF 等漏洞直接訪問實例元數據服務并獲取與之綁定的角的臨時憑據。 此外,可以通過限制Web應用托管服務中綁定到實例上的角色的權限策略進行進一步的安全加強。在授予角色權限策略時,遵循最小權限原則。 最小權限原則是一項標準的安全原則。即僅
41、授予執行任務所需的最小限不要授予更多無關權限例如一個角色僅是存儲桶服務的使用者那么不需要將其他服務的資源訪問權限(如數據庫讀寫權限)授予給該角色。 參考文獻 1./zh_cn/elasticbeanstalk/latest/dg/ia- instanceprofile.html 2./exploiting-ssrf-in-aws-elastic-beanstalk/ 3./zh_cn/elasticbeanstalk/latest/dg/co4.cepts- roles-instance.html /2019/03/10/escalating-ssrf-to-rce/ 6./s/Y9CBYJ_
42、3c2UI54Du6bneZA 三、對三、對存儲訪問策評估研究近些年來越來越多的IT產業正在向云原生的開發和部署模式轉變這些模式的轉變也帶來了一些全新的安全挑戰。 對象存儲作為云原生的一項重要功能,同樣面臨著一些列安全挑戰。在對象存儲所導致的安全問題中,絕大部分是由于用戶使用此功能時錯誤配置導致的。據統計,由于缺乏經驗或人為錯誤導致的存儲桶錯誤配置所成的安全問題占所有云安全漏洞的16%。 以2017美國國防部承包商數據泄露為例此次數據泄露事件是由于Booz AllenHamilton公(提供情報與防御顧問服務在使用亞馬遜S3服務器存儲政府的敏感數據時,使用了錯誤的配置,從而導致了政府保密信息可
43、被公開訪問。經安全研究人員發現,公開訪問的S3存儲桶中包含47個文件和文件夾,其中三個文件可供下載,其中包含了大量“絕密”(TOP SECRET)以及 “外籍禁閱”(NOFORN)文件。 與此相似的案例有很多,例如Verizon數據泄露事件、道瓊斯客戶數據泄露事件。如何正確的使用以及配置存儲桶,成為了云上安全的一個重要節。 存儲桶的訪問控制包含多個級別,而每個級別都有其獨特的錯誤配置風險在本文中我們將深入探討什么是存儲桶什么是存儲桶ACL什么是存儲桶Policy以及平臺是如何處理訪問權限并對錯誤配置存儲桶權限導致的安全問題進行闡述。通過本文的閱讀,可以很好的幫助理解存儲桶的鑒權方式以及鑒權流程
44、避免在開發過程中產生由存儲桶錯誤配置導致的安全問題 首先,我們來看簡單的對對象存儲的概念進行了解。 00.對象存儲對象存儲是一種存儲海量文件的分布式存儲服務用戶可通過網絡隨時存和查看數據對象存儲使所有用戶都能使用具備高擴展性低成本可靠和安的數據存儲服務。 對象存儲可以通過控制臺、API、SDK 和工具等多樣化方式簡單、快速地接入,實現了海量數據存儲和管理。通過對象存儲可以進行任意格式文件的上傳下載和管理。 02存儲桶訪問權(A)在了解對象存儲之后我們來梳理下02存儲桶訪問權(A)訪問控制列表(ACL)使用 XML 語言描述,是與資源關聯的一個指定被授 權者和授予權限的列表每個存儲桶和對象都有與
45、之關聯的 ACL支持向匿名戶或其他主賬號授予基本的讀寫權限。ACL 表3- ACL屬 從控制臺上來看,存儲桶訪問權限分為公共權限與用戶權限,見下圖: 圖3- 儲訪權置 從上圖的選項來看,公共權限和用戶權限配置共同組成了存儲桶訪問限公共權限包括私有讀寫公有讀私有寫和公有讀寫這幾個選項可以選擇,且為單選: 圖3- 共限 用戶權限可以通過添加用戶進行配置,通過填寫賬號ID并為其配置數據讀取、數據寫入、權限讀取、權限寫入以及完全控制五個選項。 圖3- 戶限 存儲桶訪問權 公共 用戶權權限 存儲桶訪問權 公共 用戶權權限 私有讀寫 公有讀私有寫 公有讀寫 數據讀取 數據寫入 權限讀取 權限寫入 完全控制
46、 表3- 儲訪權 但是公共權限與用戶權限有什么區別與關聯呢?二者又是如何作用于訪問控制列(ACL呢?這些問題單從控制臺上功能上來看是并不能完全理解的,我們需要通過修改控制臺中不同的公共權限與用戶權限組合對比ACL中內容的變化來分析控制臺上這些配置項的真實作用。 首先我們通過在控制臺中勾選的選項來測試一下公共權限是如何作用于ACL的。 . 公共權限公共權限包括:私有讀寫、公有讀私有寫和公有讀寫,我們將依次測一下在控制臺中勾選后ACL中實際的配置情況。 私有讀寫只有該存儲桶的創建者及有授權的賬號才對該存儲桶中的對象有讀寫權限,其他任何人對該存儲桶中的對象都沒有讀寫權限。存儲桶訪問權限默認 為私有讀
47、寫。 我們將公共權限設置為私有讀寫,見下圖: 圖 3- 置儲私寫訪權 通過訪問API接口,獲取此時存儲桶AC 圖3- 如上所示ACL 描述了存儲桶擁有者(Owner)(用戶 UIN10001xxx,且此用戶擁有存儲桶的完全控制權限(FULL_CONTROL)。 值得注意的是,此處XML中權限配置,并不是因為我們勾選了公共權限配置中的私有讀寫而來,而是控制臺中用戶權限里默認配置中當前賬號的限策略,見下圖紅框 圖3- 認置當號權策 因此,在公共權限里勾選私有讀寫,相當于在ACL中不額外寫入任何配 置內容。 公有讀私有寫任何人(包括匿名訪問者)都對該存儲桶中的對象有讀權限,但只有儲桶創建者 及有授權
48、的賬號才對該存儲桶中的對象有寫權限。 我們將公共權限設置為公有讀私有寫,見下圖 圖3- 置儲公私有訪權 通過訪問API接口, 圖3- 從XML內容可見通過勾選公有讀私有寫ACL中新增了如下配置條目 圖3- 條配置授予了AllUsers用戶組的READ的權限,按權限分類來說,屬于 “匿名用戶公有讀”權限,示意圖如下 公有讀寫圖3-0 有私寫限配示 任何人(包括匿名訪問者)都對該存儲桶中的對象有讀權限和寫權限 圖3-1 置儲公讀寫問 圖3- 如上所示,通過勾選公有讀寫,ACL中新增 圖3- 與上文的公有讀私有寫權限相比,新增了AllUsers用戶組WRITE權限即“匿名用戶公有讀寫”權限,示意圖如
49、下: 圖3-4 有寫限置示 從上述實驗結果來看:公共權限配置的選項“私有讀寫“”公有讀私有寫 “和公有讀寫”本質上是在ACL中添加AllUsers用戶組的READ與WRITE權限公共權限配置選項的總結如下: 私有讀寫:不在ACL中添加任何額外的權限配置條目 公有讀私有寫:在ACL中添加AllUsers用戶組READ權限項 公有讀寫在ACL中添加AllUsers用戶組READ權限項AllUsers用組WRITE權限項 在分析完公共權限之后,我們來分析一下用戶權限。 . 用戶權限用戶權限和公共權限有什么區別呢?其實都是修改ACL策略,沒有本質的區別只是公共權限在勾選時生成ACL中ALLUSers的
50、三個權限而通過用戶權限配置的在ACL中精準到用戶并且權限策略也擴充為5個可選項。 圖3-5 戶限置選 我們先保持公共權限的默認設置私有讀寫,并在控制臺編輯用戶權限添加一個ID為123456的賬號。 數據讀取數據寫入我們為此賬號設置數據讀取、數據寫入的權限,見下圖: 圖3-6 置戶據取寫權 通過訪問API接口,獲取此時存儲桶ACL。 圖3- 從XML內容可見,在控制臺新增一個擁有數據讀取、數據寫入權限的賬號后, ACL中新增了如下配置: 圖3- ACL中增加了一個uin為123456的用戶的READ與WRITE權限示意圖如下: 權限讀取權限寫入圖3-9 據取入限配示 接下來我們保持公共權限為默認
51、的私有讀寫不變,并在用戶權限處添一個ID為123456的賬號,我們為此賬號設置權限讀取、權限寫入的權限,見下圖: 圖3-0 置戶限取寫權 通過訪問API接口,獲取此時存儲桶 圖3- 如上所示,在控制臺新增一個擁有權限讀取、權限寫入的賬號后, ACL 圖3- ACL中增加了一個uin為123456的用戶的READ_ACP與WRITE_ACP權限,此時123456用戶可以對ACL進行讀取以及更新操作,示意圖如下: 圖3-3 限取入限配示 公有讀寫數據讀取數據寫入 在這環節中,我們將實驗一下公共權限與用戶權限的關系,我們將公權限設置為公有讀寫,并在用戶權限處添加一個ID為123456的賬號,我們為此
52、賬號設置權限讀取、權限寫入的權限 圖3-4 置有據讀權 通過訪問API接口,獲取此時存儲桶ACL 圖3- 通過對比公共權限章節中公有讀寫與用戶權限章節中數據讀取-數據寫入部分的內容可以發現, 在控制臺中配置的公共權限與用戶權限是各自作用于ACL中,在ACL中并不互相影響,配置的公有讀寫將會在ACL中添加一個 AllUsers用戶組的WRITE與READ權限,而用戶權限中添加的123456賬號的數據讀取數據寫入將在 ACL中加入了一個123456賬號的READ與WRITE權限。 但是細心的讀者可能會發現一個有意思的問題在配置用戶權限時ACL中默認的Owner的FULL_CONTROL權限不見了
53、消失的Onr權限 對比一下公共權限章節中私有讀寫部 圖3-6 有限同用戶限時ACL差性 雖然我們僅僅是在用戶權限處增加了一個新用戶,并沒有刪除也沒有法刪除控制臺中默認的主賬號的完全控制權,但是ACL中默認的擁有完全控制權的主賬號條目不見了,見上圖紅框處。 這樣會不會導致主賬號失去了存儲桶的控制權呢?經過測試發現,主號依然擁有存儲桶的完全控制權,這是問什么呢? 通過查閱官方文檔,我們發現了答案: 圖3- 5. 儲策uetP5. 儲策uetPl) 在分析完ACL之后我們來看看Policy存儲桶策(BucketPolicy)使用 JSON 語言描述支持向匿名身份或任何 CAM 賬戶授予對存儲桶存儲桶
54、操作、對象或對象操作的權限,在對象存儲中存儲桶策略可以用于管理存儲桶內的幾乎所有操作。Policy屬性見下圖: 表3- BuketPolcy性 我們可以通過在控制臺中添加策略的方式來設置Policy權限。 圖3-8 過制添加olic 圖3-9 加策 通過訪問API接口,獲取權限策略。 圖3- 可以發現Policy中以共有四個主要的屬性ActionEffectPrincipal Resource分別對應了控制臺中填寫的操作效力用戶資源路徑與ACL僅可以配置的用戶與權限選項相比,控制的顆粒更細。 接下來,我們添加一個允許賬號 ID 為 123456 的賬號對 aclxxx/policy_test路
55、徑的讀操作。 圖3-1 置號定源操權 圖3- 在這個Policy中,我們可以看到更細膩的Action與Resource配置。 . 象問權限在對象存儲中,每一個對象同樣存在著可配置的訪問權限,默認繼承存桶的ACL。 圖3-3 象問限制臺 我們將此對象設置為公有讀私有寫權限,見下圖: 圖3-4 置象有私有權 通過查詢GetObjectAcl API接口,獲取其ACL。 圖3- 從ACL可見與存儲桶的ACL配置項完全一樣只不過這里的ACL作用于標對象而存儲桶ACL作用于存儲桶。 . 訪問策略評估機制但是對象存儲是如何通過ACL與. 訪問策略評估機制在開始介紹對象存儲訪問策略評估流程之前我們先介紹一下
56、幾個流程中及到的重要概念:顯示拒絕、顯示允許、隱式拒絕以及三者之間的聯系: 顯式拒絕:在用戶策略、用戶組策略、存儲桶 Policy 中針對特定用有明確的 Deny 策略。 顯式允許:在用戶策略、用戶組策略、存儲桶 Policy、存儲桶 ACL 通過grant-*明確指定特定用戶針對特定用戶有明確的 Allow 策略。 隱式拒絕在默認情況(未經配置的情況下所有請求都被隱式拒絕(deny。 顯示拒絕、顯式允許、隱式拒絕之間的關系如下: 如果在用戶組策略、用戶策略、存儲桶策略或者存儲桶/對象訪問控制列表中存在顯式允許時,將覆蓋此默認值。任何策略中的顯式拒絕將覆蓋任何允許 在計算訪問策略時應取基于身份
57、的策(用戶組策略用戶策略和基于 資源的策略(存儲桶策略或者存儲桶/對象訪問控制列表)中策略條目的并集根據顯示拒絕、顯式允許、隱式拒絕之間的關系計算出此時的權限策略。 圖3-5 儲鑒流 0808. 訪錯誤配置導致安全問題錯誤使用公有讀寫權限 在所有錯誤配置導致的存儲桶安全問題中最常見的一種便是錯誤的使用公有讀寫權限導致的安全問題。 圖3-6 置儲公讀寫問 通過上文的分析可知公有讀權限可以通過匿名身份直接讀取用戶存儲桶中 的數據,存在著嚴重的安全隱患。 但是有些用戶為了避免使用繁雜且細粒度的權限配置會錯誤的將其存儲設置為公有讀寫這將導致了其存儲桶中的內容被攻擊者竊取與篡改正如本前言中所描述的201
58、7美國國防部承包商數據泄露案例。即便是美國國防部承商,在使用存儲桶進行對象存儲時,也會犯下這樣的常見錯誤。 因此,為了保障存儲桶安全,建議用戶為存儲桶配置私有讀寫權限。 存儲桶、對象訪問權限差異性問題存儲桶權限與對象權限的差異性往往會為對象資源來安全性問題在實際操作中,為了存儲桶的安全起見,存儲桶的公共權限往往會被設置為私有讀寫這也是存儲桶的默認公共權限配置,見下圖: 圖3-7 置儲私讀寫 存儲桶的私有權限表明只有該存儲桶的創建者及有授權的賬號才對該存桶中的對象有讀寫權限,其他任何人對該存儲桶中的對象都沒有讀寫權限。 但是將存儲桶的公共權限設置為私有讀寫可以完全保護存儲桶中的中的對象資源不被讀
59、取嗎? 在我們測試的這個存儲桶中,并未設置Policy策略,并且存在著一個名為p2.png的對象。 圖3-8 p.png對 而從上文可知,存儲桶中的對象也有著其對應的對象權限。 在這里我們將對象p2.png的ACL權限設置為公有讀私有寫,見下圖: 圖3-9 p.png對配公有私 通過訪問p2.png資源url可以發現,此時p2.png對象可以被訪問,見圖: 圖3-0 功問p.pg對 測試表明當存儲桶公共權限設置為私有讀寫時當存儲桶中的對象公共限為公有讀私有寫時,此對象依然是可以被讀取的。 實際原理很簡單,我們為對象p2.png設置公有讀私有寫ACL策,此對象資源p2.png的ACL如下: 圖3
60、- 根據上文訪問策略評估機制一章可知對象p2.png設置了AllUsers用戶組 的顯性允許READ權限因此當匿名用戶訪問p2.png時即使存儲桶設置了私有讀寫權限,依然可以訪問此對象,原理圖見下圖: 圖3-2 問p.pg鑒權 因此單單依靠存儲桶的訪問權限并不能保護其中資源的未授權訪問情00. 錯誤授予的操作 AL權限在Policy權限設置中如果授權用戶操作存儲桶以及對象ACL的權(GET、 圖3-3 予戶作AL權 即使Policy中沒有授權該用戶讀取存儲桶、寫入存儲桶、讀取對象、寫入 對象的權限這個操作依然是及其危險的因為該用戶可以通過修改存儲桶以及對象的ACL進行越權。 我們在coscmd
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 電視設備智能生物藥品電子商務技術考核試卷
- 生活的滋味初一語文作文
- 平凡的愛初三語文作文
- 河南省信陽市潢川縣2023-2024學年七年級下學期期末教學質量監測數學試卷(含答案)
- 礦山環境監測與放射性污染治理考核試卷
- 橋梁工程的綠色施工評價考核試卷
- 浙江省湖州市2025年初中學業水平調研測評語文試題卷(含答案)
- 環境監測新技術與應用考核試卷
- 橡膠制品行業發展趨勢與前沿技術考核試卷
- 毛皮服裝生產過程中的生產數據統計分析與決策考核試卷
- 民法典知識競賽課件
- 絞車工考試題及答案
- 2025年度“基層法治建設年”活動實施方案
- 2025年升降機司機作業證理論考試筆試試題(200題)附答案
- 2025年網絡安全培訓考試題庫(網絡安全專題)實戰試題
- 行政管理本科畢業論文-地方政府智慧政府建設問題與對策研究-以G市為例
- 血液科疾病常見癥狀護理
- 基于AI的網絡安全威脅分析-全面剖析
- (一模)2025年3月濟南市2025屆高三模擬考試英語試卷(含答案)
- 湖南省2025屆高三九校聯盟第二次聯考英語試卷(含答案解析)
- DBJ51T 108-2018 四川省建筑巖土工程測量標準
評論
0/150
提交評論