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

    容器逃逸方法檢測指北

    VSole2022-03-24 15:34:19

    0x00 前言

    最近發現有關容器逃逸的文章大多覆蓋的方法不全,而且有些缺少相應的檢測方法,導致 RT 在拿到一個容器權限時,比較難以判斷這個容器存在哪些逃逸方法。

    本文盡可能覆蓋全容器逃逸檢測的方法,并盡可能的給出在容器內部就能檢測的方法,這樣 RT 在容器內運行一下命令,根據返回的結果就能判斷有沒有這個漏洞了。

    針對這些檢測方法,我這邊也寫了相應的腳本,方便在容器內部一鍵檢測,腳本放到文章底部了。

    對于一些無法直接在容器內部檢測到的逃逸方法,這里是不列舉的,如果讀者知道其他逃逸漏洞的檢測方法,歡迎留言或者給腳本提 PR。

    判斷是否為容器環境

    首先對于 RT 而言,需要先判斷當前環境是不是容器環境,可以直接使用下面的命令去判斷。

    cat /proc/1/cgroup | grep -qi docker && echo "Is Docker" || echo "Not Docker"
    

    如果返回 Is Docker,說明當前是 Docker 容器環境,反之亦然。

    容器逃逸介紹

    在開始之前對于容器逃逸主要有以下三種方法:

    • 不安全的配置
    • 相關程序漏洞
    • 內核漏洞

    這里分別列舉一下每種逃逸的檢測方法,這樣在拿到一個容器權限的時候,本文可以起到一個手冊的作用。

    RT 可以通過本文中所提到的檢測方法,判斷出當前容器可能存在哪種逃逸漏洞,從而采取對應的逃逸方法。

    注意:

    以下檢測方法大多是基于筆者自己的經驗,可能會存在誤檢或者漏檢的情況,如果讀者發現,歡迎留言或者給腳本提 Issue

    由于「相關程序漏洞」這種逃逸方法需要根據目標 Docker 的版本去判斷,這里暫時沒想到從容器內部獲取 Docker 版本的方法,因此腳本暫時還不支持這塊的檢測。

    0x01 不安全的配置

    1、特權模式

    執行以下命令,如果返回 Is privileged mode 則說明當前是特權模式。

    cat /proc/self/status | grep -qi "0000003fffffffff" && echo "Is privileged mode" || echo "Not privileged mode"
    

    如果返回 Not privileged mode 則說明當前不是特權模式。

    2、掛載 Docker Socket

    執行以下命令,如果返回 Docker Socket is mounted. 說明當前掛載了 Docker Socket。

    ls /var/run/ | grep -qi docker.sock && echo "Docker Socket is mounted." || echo "Docker Socket is not mounted."
    

    如果返回 Docker Socket is not mounted. 則說明沒有掛載。

    3、掛載 procfs

    執行以下命令,如果返回 Procfs is mounted. 說明當前掛載了 procfs。

    find / -name core_pattern 2>/dev/null | wc -l | grep -q 2 && echo "Procfs is mounted." || echo "Procfs is not mounted."
    

    如果返回 Procfs is not mounted. 則說明沒有掛載。

    4、掛載宿主機根目錄

    執行以下命令,如果返回 Root directory is mounted. 則說明宿主機目錄被掛載。

    find / -name passwd 2>/dev/null | grep /etc/passwd | wc -l | grep -q 7 && echo "Root directory is mounted." || echo "Root directory is not mounted."
    

    如果返回 Root directory is not mounted. 則說明沒有掛載。

    5、Docker remote api 未授權訪問

    執行以下命令,如果返回 Docker Remote API Is Enabled. 說明目標存在 Docker remote api 未授權訪問。

    IP=`hostname -i | awk -F. '{print $1 "." $2 "." $3 ".1"}' ` && timeout 3 bash -c "echo >/dev/tcp/$IP/2375" > /dev/null 2>&1 && echo "Docker Remote API Is Enabled." || echo "Docker Remote API is Closed."
    

    如果返回 Docker Remote API is Closed. 則表示目標不存在 Docker remote api 未授權訪問。

    0x02 內核漏洞

    1、CVE-2016-5195 DirtyCow 逃逸

    執行 uname -r 命令,如果在 2.6.22 <= 版本 <= 4.8.3 之間說明可能存在 CVE-2016-5195 DirtyCow 漏洞。

    2、CVE-2020-14386

    執行 uname -r 命令,如果在 4.6 <= 版本 < 5.9 之間說明可能存在 CVE-2020-14386 漏洞。

    3、CVE-2022-0847 DirtyPipe 逃逸

    執行 uname -r 命令,如果在 5.8 <= 版本 < 5.10.102 < 版本 < 5.15.25 < 版本 < 5.16.11 之間說明可能存在 CVE-2022-0847 DirtyPipe 漏洞。

    0x03 容器逃逸檢測腳本

    項目地址:

    https://github.com/teamssix/container-escape-check

    直接在容器中執行以下命令即可

    wget https://raw.githubusercontent.com/teamssix/container-escape-check/main/container-escape-check.sh -O - | bash
    

    不過大多容器可能沒有 wget 命令,因此可以將腳本先克隆到本地,然后上傳到容器再執行。

    git clone https://github.com/teamssix/container-escape-check.gitcd container-escape-checkchmod +x container-escape-check.sh./container-escape-check.sh
    

    參考資料:

    《云原生安全-攻防實踐與體系構建》

    https://github.com/brant-ruan/awesome-container-escape

    dockerdocker命令
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    此漏洞/攻擊取決于 Kubernetes 集群的配置方式。
    Docker容器入門指北
    2022-05-11 06:43:31
    Docker 是一種基于 Linux 的容器化技術,類似于輕量的虛擬機。它采用 C/S 架構,使用Go語言開發。Docker 分為 2 個版本:社區版和企業版,社區版免費,企業版是收費的
    1Docker 遷移存儲目錄默認情況系統會將 Docker 容器存放在 /var/lib/docker 目錄下[問題起因]?今天通過監控系統,發現公司其中一臺服務器的磁盤快慢,隨即上去看了下,發現?由上述原因,我們都知道,在?中存儲的都是相關于容器的存儲,所以也不能隨便的將其刪除掉。設備進行擴容來達到相同的目的。的詳細參數,請點擊查看?但是需要注意的一點就是,盡量不要用軟鏈, 因為一些?容器編排系統不支持這樣做,比如我們所熟知的?發現容器啟動不了了
    如果您希望啟動并運行一個強大的 ERP 解決方案,Jack Wallen 可以通過 Odoo 和 Docker 提供解決方案。
    七個殺手級Docker命令
    2023-12-22 15:19:58
    Docker是一個容器化平臺,通過操作系統級別的虛擬化技術,實現軟件的打包和容器化運行。借助Docker,開發人員能夠將應用程序以容器的形式進行部署,但在此之前需要構建Docker鏡像。只要熟悉相關Docker命令,開發人員就能輕松完成所有這些步驟,從而實現應用程序的容器化部署。本文將根據使用場景對 Docker 命令進行分類介紹。1 構建 Docker 鏡像構建 Docker 鏡像需要使用 Do
    首先,對Docker架構以及基本安全特性進行介紹,分析了Docker面臨的安全威脅。由于Docker擁有輕量化、高效率和易部署的特點,目前已被廣泛應用于云計算和微服務架構中。本文對Docker安全相關的研究思路、方法和工具進行比較和分析,并指出未來可能的研究方向。此外,Iptables的限制范圍有限,容器網絡仍然容易受到數據鏈路層攻擊,如ARP欺騙等。
    獨立的Docker Swarm1.2.3以上版本。舊版本的Portainer支持獨立Docker Swarm,而Portainer 1.17.0和更新版本不支持它。但是,對于一般需求,Portainer可能并不適合。此外,DockStation在Docker Hub上十分的受歡迎。未來,會重構成 Spring Cloud Alibaba 。
    你是否還在大量控制臺窗口中監控容器,還是對使用終端命令充滿熱情?而使用Docker的圖形用戶界面(GUI)工具,則可以更簡單的對容器進行管理,并提高效率。而且它們都是免費的。
    事先準備一臺linux主機,并且已安裝好docker環境。centos安裝docker環境如下:查詢可安裝版本:
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类