Docker 利用特权模式逃逸并拿下主机

在溯源反制过程中,会经常遇到一些有趣的玩法,这里给大家分享一种Docker在特权模式下逃逸,并拿下主机权限的玩法。

前言

在一次溯源反制过程中,发现了一个主机,经过资产收集之后,发现有如下几个资产。

Docker特权模式逃逸-RadeBit瑞安全

其中9000是一个Web服务,于是我访问查看了一下。

发现其为Portainer后台,且存在弱口令登录。

Docker特权模式逃逸-RadeBit瑞安全

一般看到这种登录页面,习惯性的输入admin/admin,admin/password,admin/123456。 然后就试出来一个进去了。

Portainer

Portainer是Docker的图形化管理工具,提供状态显示面板、应用模板快速部署、容器镜像网络数据卷的基本操作(包括上传下载镜像,创建容器等操作)、事件日志显示、容器控制台操作、Swarm集群和服务等集中管理和操作、登录用户管理和控制等功能。功能十分全面,基本能满足中小型单位对容器管理的全部需求。

这是我在溯源过程中第一次碰到这个后台,我简单浏览了一下

打开后台就是这样

Docker特权模式逃逸-RadeBit瑞安全

这里有很多创建好的docker容器。还可以自定义下载镜像,并构建容器

利用

我想到如果在docker容器启动中加上--privileged参数即特权模式,就可以磁盘挂载利用了。进行挂载后,可以进行对本地宿主机的文件替换比如写入公钥getshell, 想到这一点,我点击新建容器。选择了nignx:latest 镜像

Docker特权模式逃逸-RadeBit瑞安全

注意, 开启特权模式一定要勾选下面的选项

Docker特权模式逃逸-RadeBit瑞安全

将此选项勾选之后,就会开启特权模式了。

Docker特权模式逃逸-RadeBit瑞安全

创建好容器之后,点击这里,进入容器控制台。

现在我们需要挂载磁盘到容器的目录上。这一点和容器数据卷设置不同,这一步是真实的挂载磁盘。

通过df -h 命令查看磁盘,新建文件夹/abcd,然后将宿主机的文件系统挂载到docker容器中的/abcd 目录。

Docker特权模式逃逸-RadeBit瑞安全

然后/abcd目录就是宿主机的真实主机文件了,我们正常在root下写入公钥文件。

Docker特权模式逃逸-RadeBit瑞安全

最后可以直接用ssh登录链接了

总结

如果是自己部署docker环境的话,切记尽量避免使用特权模式!