前言
iKuai的Docker插件默认无法使用特权模式(--privileged
),因为iKuai没有给用户root权限
利用路径穿越漏洞为iKuai的Docker插件提权,使其可以使用特权模式,可以使用docker命令部署任意容器
准备工作
下载Ubuntu镜像
高级应用
->插件管理
->Docker
->镜像管理
->添加
->选择镜像库下载
->通过ubuntu
关键字搜索->进入下载页


部署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的绝对路径下寻找到外置存储器的挂载点目录
- 查看挂载点目录名(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
|
- 通过挂载点找到外置存储器根目录作为Docker的路径映射参数
因为在绝对路径的注意事项
有提到,在Docker命令指定路径映射时实际上是从iKuai的根目录开始的,所以这里无需指定Ubuntu上的iKuai根目录挂载点/host
1
| docker -v /etc/disk/57786b76-38f0-4773-b351-2ec17d86aaa4:/xxx
|
参考文献
恩山无线论坛——great轻狂