【笔记】利用路径穿越漏洞为iKuai的Docker提权

前言

iKuai的Docker插件默认无法使用特权模式(--privileged),因为iKuai没有给用户root权限
利用路径穿越漏洞为iKuai的Docker插件提权,使其可以使用特权模式,可以使用docker命令部署任意容器

准备工作

  • iKuai已安装Docker插件

下载Ubuntu镜像

  • 高级应用->插件管理->Docker->镜像管理->添加->选择镜像库下载->通过ubuntu关键字搜索->进入下载页

  • 向下翻页,找到20.04,选择下载

部署Ubuntu容器

  • 挂载目录通过路径穿透漏洞挂载iKuai的宿主机目录
源路径 目标路径 备注
/../../var/run/docker.sock /var/run/docker.sock 挂载Docker运行时文件,使操作Ubuntu直接操作iKuai的Docker运行时
/../../ /host 挂载iKuai宿主机的根目录(也可以挂载到其他目录,只要是Ubuntu默认镜像中存在的无用的目录即可)

在Ubuntu安装docker命令

1
apt update && apt install docker.io -y

完成

  • 在Ubuntu中直接通过docker命令愉快的部署任意容器

后记

绝对路径的注意事项

  • 当在Ubuntu系统中操作iKuai系统中的Docker时(通过Ubuntu挂载iKuai根目录的情况下),如果在docker启动命令上指定-v /aa/bb:/xx路径映射时,实际上是iKuai根目录下的/aa/bb,而不是Ubuntu根目录下的/aa/bb

映射外置存储器的注意事项

  • 当在Ubuntu系统中操作iKuai系统中的Docker时(通过Ubuntu挂载iKuai根目录的情况下),如果在Docker启动命令上指定外置存储器空间(外置硬盘或U盘)作为路径映射时,不能通过mount命令手动挂载iKuai上的外置存储器空间,因为Ubuntu的root环境只能操作Ubuntu上的挂载而不能操作iKuai的挂载,不过由于iKuai可以在Web页面进行外置存储器的挂载,所以实际上可以直接在iKuai的绝对路径下寻找到外置存储器的挂载点目录
  1. 查看挂载点目录名(iKuai在挂载外置存储器时会使用UUID生成随机的目录名)

/host:在Ubuntu上的iKuai根目录的挂载点
ssd:在iKuai的Web管理页面指定的外置存储器备注名

1
2
3
ls /host/etc/disk_user/

lrwxrwxrwx 1 root root 46 Apr 14 23:29 ssd -> /etc/disk/57786b76-38f0-4773-b351-2ec17d86aaa4
  1. 通过挂载点找到外置存储器根目录作为Docker的路径映射参数

因为在绝对路径的注意事项有提到,在Docker命令指定路径映射时实际上是从iKuai的根目录开始的,所以这里无需指定Ubuntu上的iKuai根目录挂载点/host

1
docker -v /etc/disk/57786b76-38f0-4773-b351-2ec17d86aaa4:/xxx

参考文献

恩山无线论坛——great轻狂