首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏腾讯云安全专家服务

    Docker逃逸原理

    逃逸思路1.因配置特权模式逃逸(--privileged,--cap-add与SYS_ADMIN结合)2.docker.sock通信传输逃逸(容器A新建一个容器B,再使用容器B进行逃逸)3.结合linux 内核提权漏洞逃逸(脏牛dirty cow)4.docker中的/proc传输,/fd传输逃逸(CVE-2019-5736)Docker是当今使用范围最广的开源容器技术之一,具有高效易用的优点。 图片.png一.配置特权模式时的逃逸情况(一)--privileged(特权模式)特权模式于版本0.6时被引入Docker,允许容器内的root拥有外部物理机root权限,而此前容器内root用户仅拥有外部物理机普通用户权限 二、挂载配置不当时的逃逸情况(一)危险的Docker.sock众所周知,Docker采用C/S架构,我们平常使用的Docker命令中,docker即为client,Server端的角色由docker daemon 因此,当容器访问docker socket时,我们可通过与docker daemon的通信对其进行恶意操纵完成逃逸

    3.8K61编辑于 2023-03-01
  • 来自专栏红蓝对抗

    Docker容器逃逸

    前言: 我认为docker容器逃逸也算是提权的一种手法,要更好的理解容器逃逸的手法,应该知道从本质上看容器内的进程只是一个受限的普通 Linux 进程,而容器逃逸的过程我们完全可以将其理解为在一个受限进程中进行一些操作来获取未受限的完整权限 5:hugetlb:/docker/f904ce4cc3834023f7e074ed582957859450e85c083f1c9922390d39126058e9 而 Kubernetes 默认的 /a96c15fc172fbec0b7251a44e21408746afa9e9571202132618ed251db3a84a4/merged 接下来我们需要准备一个反弹shell的脚本以及一个可以制造崩溃 /overlay2/ a96c15fc172fbec0b7251a44e21408746afa9e9571202132618ed251db3a84a4/merged/tmp/.ning.py \rcore /ning 成功反弹shell 挂载 Docker Socket 逃逸 什么是Docker Socket?

    1.1K30编辑于 2023-12-28
  • 来自专栏Khan安全团队

    Docker逃逸漏洞

    Docker逃逸漏洞复现(CVE-2019-5736) ? 因为Docker所使用的是隔离技术,就导致了容器内的进程无法看到外面的进程,但外面的进程可以看到里面,所以如果一个容器可以访问到外面的资源,甚至是获得了宿主主机的权限,这就叫做“Docker逃逸”。 ' for 'docker-ce'was not found ? /linux/ubuntu xenial stable" 查看可用的docker版本: apt-cache madison docker-ce 输出结果: ? sudo apt-get install docker-ce=18.06.1~ce~3-0~ubuntu ? 随便起个服务 dockersearch redis ?

    81040发布于 2021-03-24
  • 来自专栏红蓝对抗

    Docker容器逃逸

    容器逃逸也算是提权的一种手法,要更好的理解容器逃逸的手法,应该知道从本质上看容器内的进程只是一个受限的普通 Linux 进程,而容器逃逸的过程我们完全可以将其理解...前言:我认为docker容器逃逸也算是提权的一种手法 5:hugetlb:/docker/f904ce4cc3834023f7e074ed582957859450e85c083f1c9922390d39126058e9而 Kubernetes 默认的,长这样 a96c15fc172fbec0b7251a44e21408746afa9e9571202132618ed251db3a84a4/merged接下来我们需要准备一个反弹shell的脚本以及一个可以制造崩溃 /overlay2/a96c15fc172fbec0b7251a44e21408746afa9e9571202132618ed251db3a84a4/merged/tmp/.ning.py\rcore /ning成功反弹shell挂载 Docker Socket 逃逸什么是Docker Socket?

    1.4K21编辑于 2023-12-25
  • 来自专栏网络安全攻防

    Docker Privileged特权逃逸

    文章前言 在Docker中Privileged是一种特殊的权限模式,它允许Docker容器在启动时获取到与宿主机相同的权限级别。 漏洞概述 操作者使用特权模式启动的容器时,Docker管理员可以通过mount命令将外部宿主机磁盘设备挂载进容器内部,获取对整个宿主机的文件读写权限,此外还可以通过写入计划任务等方式在宿主机执行命令 环境搭建 docker run -v /home/ubuntu/cdk:/cdk --rm -it --privileged ubuntu bash 特权检测 在容器中时可以通过如下参数检测当前容器是否是以特权模式启动

    3.9K20编辑于 2023-05-12
  • 来自专栏Khan安全团队

    带你玩转docker容器逃逸

    Part01 简述docker容器逃逸什么是docker? 什么是Docker容器逃逸? 因为Docker所使用的是隔离技术,就导致了容器内的进程无法看到外面的进程,但外面的进程可以看到里面,所以如果一个容器可以访问到外面的资源,甚至是获得了宿主主机的权限,这就叫做“Docker逃逸”。 Part02 常见的逃逸方法1、配置不当,例如:开启特权模式(privileged)、挂载Docker Socket逃逸、挂载宿主机procfs逃逸Docker Remote API未授权访问逃逸;2 在特定网络条件下,攻击者可通过访问containerd-shimAPI,从而实现Docker容器逃逸

    3.4K10编辑于 2023-11-28
  • 来自专栏湛卢工作室

    云原生安全 | docker容器逃逸

    docker是目前主流的容器技术,今天我们来探讨一下docker逃逸的3种常见方式:内核漏洞引起的逃逸、相关程序漏洞引起的逃逸docker配置不当引起的逃逸。 可以看到,我们成功利用脏牛内核漏洞,从docker容器中逃逸,并获得了宿主机的shell: ? 将该payload拷贝到docker容器中(此时可以模拟攻击者获取了docker容器权限,在容器中上传payload进行docker逃逸) ? 进一步利用上述信息进行docker逃逸docker可以挂载宿主机的文件夹,同时docker默认使用root运行,这样就可以造成任意文件的读取和写入。 我们可以挂载宿主机的/root到docker,然后写入我们自己生成的ssh公钥,就可以完成逃逸

    3K20发布于 2020-08-13
  • 来自专栏红队蓝军

    记一次docker逃逸学习

    /tmp/sess_990aadb371d8e582cb000c716aed9720 内网渗透 docker逃逸 这里理论上三种方法都能够拿到shell,这里我使用tomcat上线到msf的shell 那么我们无论使用3个环境的哪个环境拿shell都只是一个docker容器里面的shell,并不是真正ubuntu的shell,所以这里我们还需要进行docker逃逸到ubuntu 这里我尝试脏牛失败, 这里就需要使用到privileged特权模式逃逸 privileged特权模式逃逸 docker中提供了一个--privileged参数,这个参数本身最初的目的是为了提供在docker中运行docker 的能力 https://www.docker.com/blog/docker-can-now-run-within-docker/ docker文档中对这个参数的解释如下 https://docs.docker.com /OUIiQnQynmBnnxfeG54HpVPvVPeF9YfSJblQCkr3DiN9HiI/i6wIK7nZH33O3wEV7PxWjQ/qOhuhL1HFwLXh3FqWW/uqcE/C6UT4KSYcaoKkEe2iFrdjZ53LUsBXpEzxy4Om27SIl2Od

    1.2K20编辑于 2022-05-17
  • 来自专栏网络安全攻防

    CVE-2019-14271:Docker CP逃逸

    影响范围 Docker before 19.03.1 漏洞类型 容器逃逸漏洞 利用条件 影响范围应用 漏洞概述 正常情况下用户通过使用docker cp命令可以将文件从host主机拷贝至容器,或者从容器拷贝至 host主机,对应具体操作指令如下: docker cp {container_id}:/path /path 在将文件从host主机拷贝至容器的过程中Docker使用了一个辅助进程——docker-tar 进程chroot到容器中时,造成了一个dokcer cp命令导致的容器逃逸漏洞 漏洞环境 这里使用Metarget来构建环境 . Step 2:将漏洞利用文件拷贝至容器内 #拷贝文件 sudo docker cp exp/ 14271:/ #进入容器 sudo docker exec -it 14271 bash ls cp 14271:/logs ./ 进入容器内部可发现根目录下存在host_fs目录挂载了宿主机的文件系统,成功逃逸(笔者未找到对应的Docker版本故而失败,整个利用流程依旧不变~) 安全建议 升级到最新版本

    85210编辑于 2022-09-07
  • 来自专栏Bypass

    技术干货 | Docker 容器逃逸案例汇集

    ---- Docker 容器逃逸案例: 1、判断是否处于docker容器里 2、配置不当引起的逃逸 Docker Remote API 未授权访问 docker.sock 挂载到容器内部 docker 高危启动参数 privileged 特权模式 挂载敏感目录 相关启动参数存在的安全问题 3、Docker 软件设计引起的逃逸 Shocker攻击 runC容器逃逸漏洞(CVE-2019-5736) Docker 二、配置不当引发的docker逃逸 2.1 docker remote api未授权访问 漏洞简述:docker remote api可以执行docker命令,docker守护进程监听在0.0.0.0 sudo docker exec -it cafa20cfb0f9 /bin/sh 5、在192.168.172.136上监听本地端口,成功获取宿主机反弹回来的shell。 ? ---- 四、内核漏洞引起的逃逸 4.1 利用DirtyCow漏洞实现Docker逃逸 漏洞简述: Dirty Cow(CVE-2016-5195)是Linux内核中的权限提升漏洞,通过它可实现Docker

    3.4K10发布于 2020-08-09
  • 来自专栏Khan安全团队

    Docker 枚举、特权升级和容器逃逸 (DEEPCE)

    Docker 枚举、特权升级和容器逃逸 (DEEPCE) 为了使其与最大数量的容器兼容,DEEPCE 是纯编写的sh,没有依赖性。 DNS) 容器 IP / DNS 服务器 码头工人版本 有趣的坐骑 普通文件中的密码 环境变量 密码哈希 容器中存储的常见敏感文件 同一网络上的其他容器 端口扫描其他容器,以及宿主机本身 漏洞利用 Docker 组提权 特权模式主机命令执行 裸露的 Docker 有效载荷 对于上述每个漏洞利用,都可以定义有效负载以利用主机系统。 /deepce.sh --no-enumeration --exploit PRIVILEGED --username deepce --password deepce 利用可写的 docker sock /deepce.sh --no-enumeration --exploit SOCK --shadow 通过主机上 docker 组的成员身份升级到 root 并运行自定义负载 .

    69821编辑于 2023-02-23
  • 来自专栏字节脉搏实验室

    Docker逃逸漏洞复现(CVE-2019-5736)

    后拉取镜像会异常缓慢,可【Ctrl】+【C】终止后添加Docker加速源 ? systemctl daemon-reload service docker restart 配置完加速源后,再重新运行bash install.sh拉取镜像时就快了,完成后就进入了开启的docker 再看下此时的漏洞环境,dockerdocker-runc版本如下: ? ? docker容器权限,在容器中上传payload进行docker逃逸) 并执行 docker cp main c37c910028ae:/home docker exec -it c37c910028ae 此时查看IP也会发现该IP是运行Docker的ubuntu16.04的IP,所以成功实现了Docker容器的逃逸

    2.8K30发布于 2020-07-24
  • 来自专栏HACK学习

    实战|记一次逃逸Docker渗透测试

    内网渗透 docker逃逸 这里理论上三种方法都能够拿到shell,这里我使用tomcat上线到msf的shell进行信息搜集 可以看到有eth0、eth1分别处于1.0/24和183.0/24两个网段 那么我们无论使用3个环境的哪个环境拿shell都只是一个docker容器里面的shell,并不是真正ubuntu的shell,所以这里我们还需要进行docker逃逸到ubuntu ? 这里我尝试脏牛失败,这里就需要使用到privileged特权模式逃逸 privileged特权模式逃逸 docker中提供了一个--privileged参数,这个参数本身最初的目的是为了提供在docker 中运行docker的能力 https://www.docker.com/blog/docker-can-now-run-within-docker/ docker文档中对这个参数的解释如下 https: /OUIiQnQynmBnnxfeG54HpVPvVPeF9YfSJblQCkr3DiN9HiI/i6wIK7nZH33O3wEV7PxWjQ/qOhuhL1HFwLXh3FqWW/uqcE/C6UT4KSYcaoKkEe2iFrdjZ53LUsBXpEzxy4Om27SIl2Od

    2.8K20发布于 2021-08-13
  • 来自专栏技术杂记

    Docker 基础9

    可见 docker.service 是依赖于 docker.socket 的,但是并不必要开启 Tip: 其实上面的步骤完成,就已经能保证docker会开机启动,原因是它依赖的 docker.socket 虽然本身设定为不要开机启动,但开机时会被systemctl检查然后触发启动以支持 docker.service 的运行 可以用上面方法也将 docker.socket 设为开机启动(但这一步不是非常必要 ) [root@h103 ~]# systemctl list-unit-files| grep docker docker.service enabled docker.socket disabled [root@h103 ~]# systemctl enable docker.socket /docker.socket.

    33320编辑于 2022-02-09
  • 来自专栏HACK学习

    记一次逃逸Docker的渗透测试

    检测与逃逸 然后查看一些信息的时候发现命令找不到: 执行命令验证是否为docker环境: 确实为docker环境,那么就看看宿主机有没有什么漏洞可以利用,使用 cat /etc/hosts,看到了主机 成功爆破后,这里就登录Portainer进行Docker逃逸了: 注:Portainer是一个可视化的容器镜像的图形管理工具,利用Portainer可以轻松构建,管理和维护Docker环境。 Portainer通过Docker.sock与宿主机进行通信,这是它的正常功能: 在freebuf看到是这么介绍的: 接下来开始逃逸,但是这里,我们进行链接的时候发现: 啊这,那就只能使用这个方法了: 好了,真的开始了逃逸了,先创建个容器: 这里给他选择个特权模式: 1.然后链接这个容器的shell:fdisk -l 2.此时查看/dev/路径会发现很多设备文件:ls /dev 3.新建目录以备挂载 上线了: 总结 本文记录一次通过公网拿到docker容器权限,通过扫描发现宿主机地址,并对宿主机进行攻击,最后利用Portainer进行docker逃逸获得宿主机Ubuntu权限。

    1.8K20发布于 2020-11-03
  • 来自专栏信安之路

    渗透某大学从弱口令到 docker 逃逸

    为了验证我的想法,查询系统进程的 cgroup 信息 是 Docker 没错了,猜想为蜜罐的可能性不大,部署了某大学的一个办公系统。 0x04 Docker 逃逸 由于在 Docker 容器中,想到 "Docker 逃逸" 这个漏洞,也不知道能不能逃逸出来,于是想尝试一下。 之前从没实战碰到过 Docker,也没有复现过 Docker 逃逸这个洞,查阅了大量文章。这个点就折腾的比较久。参考文章: https://www。freebuf。 html CVE-2019-5376 这个漏洞是需要重新进入 Docker 才能触反弹 shell。 而我们上面正好是可以直接进入 Docker 终端,是尝试利用,Poc: https://github。com/Frichetten/CVE-2019-5736-PoC 修改 main。

    1.7K30发布于 2020-12-28
  • 来自专栏技术杂记

    Docker Registry9

    原因是证书中指定的主机名为 docker-registry 而不是 h104 [root@h103 ~]# vim /etc/hosts [root@h103 ~]# grep docker-registry /etc/hosts 192.168.100.104 h104 docker-registry [root@h103 ~]# docker push docker-registry:5000/ubuntu systemctl start docker [root@h103 ~]# docker push docker-registry:5000/ubuntu The push refers to a repository f15ce52fc004: Pushed latest: digest: sha256:45d78ef16a9e6199ffbbc78f71c2c6ef6647f3be6b9721fe3f1b08d6e3fcf6b3 Pulling from ubuntu Digest: sha256:45d78ef16a9e6199ffbbc78f71c2c6ef6647f3be6b9721fe3f1b08d6e3fcf6b3

    35920编辑于 2022-01-21
  • 来自专栏老司机的技术博客

    docker实战(9)docker快速安装hbase

    下载镜像 docker pull harisekhon/hbase 运行容器 docker run -ti harisekhon/hbase当你执行成功之后直接进入hbase shell,慢慢享用吧 使用hbase 退出容器后,下次再进入可以使用 docker exec -ti hbase1 /hbase/bin/hbase shell 创建表,第一个参数是表名,第二个参数是列簇名 create '

    1.3K70发布于 2018-04-16
  • 来自专栏技术杂记

    Docker Swarm 基础9

    ~]# docker -H :4000 ps Cannot connect to the Docker daemon. Is the docker daemon running on this host? [root@docker ~]# [root@docker ~]# docker -H :4000 info Cannot connect to the Docker daemon. Is the docker daemon running on this host? [root@docker ~]# docker -H 192.168.100.104:4000 info Containers: 11 Images: 17 Server Version: swarm

    23710编辑于 2021-11-29
  • 来自专栏云同步

    Docker 安装 Elasticsearch 9

    参考链接 Run Elasticsearch locally | Elastic Docs 环境 操作系统:Ubuntu 24.04 LTS 容器:Docker 28.2.2 ES 版本:最新版(9.0.3 ) 安装 1)安装 docker【已安装可跳过】 参考:Ubuntu 安装 docker-CSDN博客 2)启动 elasticsearch 若是出现报错请往 Q&A 看 # 通过 curl 下载启动脚本 并进行执行 curl -fsSL https://elastic.co/start-local | sh 3)查看是否启动成功 docker ps 开启远程访问【可选】 默认是只能本地访问 1)切换到 elastic-start-local 目录 这个目录就在你执行 curl -fsSL https://elastic.co/start-local | sh 的目录中, cd elastic-start-local 2)修改 docker-compose.yml vim docker-compose.yml 删除(有两处需要删除) 127.0.0.1: 删除后: 3)执行停止脚本 .

    61110编辑于 2025-08-01
领券