用途:这是一份面向授权的红队/渗透测试场景的容器逃逸操作指引。前提是攻击者已在容器内取得 shell,目标是突破 Linux 命名空间、cgroups、seccomp、AppArmor/SELinux 与 capability 限制,访问宿主机。
主要内容按阶段组织: 一、容器识别与枚举。通过 /.dockerenv、/proc/1/cgroup、/proc/1/cmdline、环境变量、mountinfo 判断是否处于容器,并用 deepce、cdk evaluate、amicontained、capsh --print 检查 capability、挂载、命名空间和 socket。 二、特权容器突破。使用 fdisk -l/lsblk 找宿主机磁盘,mount /dev/sda1 /mnt/host 挂载根文件系统;或用 nsenter --target 1 --mount --uts --ipc --net --pid -- /bin/bash 进入宿主机命名空间。 三、运行时 socket 滥用。检测 /var/run/docker.sock、/run/containerd/containerd.sock,通过 Docker API 或 ctr 启动挂载宿主机的特权容器。 四、基于 capability 的逃逸。分别讨论 CAP_SYS_ADMIN、CAP_SYS_PTRACE、CAP_NET_ADMIN、CAP_DAC_READ_SEARCH 的利用方向,如挂载、ptrace 注入、/proc/1/root 访问、open_by_handle_at。 五、cgroup v1 notify_on_release 逃逸,通过 release_agent 在宿主机执行命令,并说明 cgroup v2 不支持同样机制。 六、运行时 CVE:runc 覆盖(CVE-2019-5736)、Leaky Vessels(CVE-2024-21626)、containerd 主机网络(CVE-2020-15257)。 七、容器内内核漏洞利用,如 DirtyPipe(CVE-2022-0847)、DirtyCow(CVE-2016-5195)、OverlayFS(CVE-2021-3493)、nftables(CVE-2023-32233)。
使用方式:逐阶段执行资料中给出的命令与 API 调用,先枚举确认可用逃逸向量,再执行匹配技术;最后通过读取 /etc/hostname、检查 PID 命名空间或写入宿主机文件系统验证是否成功。
适用场景:已获得容器 shell 的授权安全测试、红队演练、容器加固前的风险验证。
限制与注意事项:所有技术具有攻击性与破坏性,仅在明确授权的环境中使用。需要具体前提条件,如特权模式、hostPID/hostNetwork、暴露且可写的 socket、特定 capability 或未修复的运行时/内核版本;部分 PoC 需自行编译,资料未提供完整可用代码。cgroup release_agent 仅适用于 cgroup v1。资料未提供具体的授权范围、收费或价格信息。