用途:在已获得 Docker 容器 shell 的场景下,评估容器逃逸面并尝试提权至宿主机 root,同时可对宿主机做提权取证。
主要能力:
- 逃逸面评估:检查 docker 组成员、/var/run/docker.sock 挂载与权限、--privileged 特权模式、CapEff 能力掩码、挂载卷与可见宿主机进程。
- Docker 组提权(5 种技术):挂载 /etc 写入 UID 0 用户、读取 /etc/shadow、chroot 到宿主机根、注入 SSH 公钥、在宿主机创建 SUID shell。
- Docker socket 提权:创建特权容器并挂载宿主机根,或直接 exec 进已有容器;无 docker 客户端时可通过 --unix-socket 调用 REST API。
- 提权取证:检查 NOPASSWD sudoers、UID 0 异常用户、新增 authorized_keys、近期 SUID 二进制。
必要用法: 检查 docker 组:id | grep docker 检查 socket:ls -la /var/run/docker.sock 检查特权模式:ip link add dummy0 type dummy 挂载宿主机根:docker run --rm -v /:/host -it alpine chroot /host 通过 socket 调用 API:curl --max-time 30 --connect-timeout 10 -sk --unix-socket /var/run/docker.sock http://localhost/containers/json
适用场景:已通过 webshell、SSH 或 API 漏洞获得容器 shell,且容器具备 docker 组、socket 挂载或特权标志时。
限制:多数容器默认不挂载 docker socket;容器内可能无 docker 客户端;--privileged 较少见;AppArmor/SELinux 与 no-new-privileges 可能阻止逃逸。验证要求:Docker 组须能经挂载读取宿主机 /etc/shadow;socket 须能创建特权容器并在宿主机执行命令;特权模式须能挂载宿主机文件系统并 chroot;取证须至少识别一项提权指标。具体平台与收费信息暂未提供。