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

    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容器逃逸

    原文首发在:奇安信攻防社区 https://forum.butian.net/share/2638 作者:凝 前言: 我认为docker容器逃逸也算是提权的一种手法,要更好的理解容器逃逸的手法,应该知道从本质上看容器内的进程只是一个受限的普通 前言: 我认为docker容器逃逸也算是提权的一种手法,要更好的理解容器逃逸的手法,应该知道从本质上看容器内的进程只是一个受限的普通 Linux 进程,而容器逃逸的过程我们完全可以将其理解为在一个受限进程中进行一些操作来获取未受限的完整权限 容器的环境,我们便要尝试容器逃逸 Docker配置不当导致的容器逃逸 这里我们再次提到NameSpace和cgroups Linux 命名空间(NameSpace):实现文件系统、网络、进程、主机名等方面的隔离 /ning 成功反弹shell 挂载 Docker Socket 逃逸 什么是Docker Socket? 简而言之:当容器启动时以挂载Docker Socket的方式启动时,我们就可以尝试逃逸 环境复现: docker run -itd --name docker_sock -v /var/run/docker.sock

    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 ?

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

    Docker容器逃逸

    容器逃逸也算是提权的一种手法,要更好的理解容器逃逸的手法,应该知道从本质上看容器内的进程只是一个受限的普通 Linux 进程,而容器逃逸的过程我们完全可以将其理解...前言:我认为docker容器逃逸也算是提权的一种手法 容器的环境,我们便要尝试容器逃逸Docker配置不当导致的容器逃逸这里我们再次提到NameSpace和cgroupsLinux 命名空间(NameSpace):实现文件系统、网络、进程、主机名等方面的隔离 /ning成功反弹shell挂载 Docker Socket 逃逸什么是Docker Socket? 简而言之:当容器启动时以挂载Docker Socket的方式启动时,我们就可以尝试逃逸环境复现:docker run -itd --name docker_sock -v /var/run/docker.sock 如何逃逸?

    1.3K21编辑于 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公钥,就可以完成逃逸

    2.9K20发布于 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 /engine/reference/run/#runtime-privilege-and-linux-capabilities 当操作员执行时docker run –privileged,Docker将启用对主机上所有设备的访问

    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版本故而失败,整个利用流程依旧不变~) 安全建议 升级到最新版本

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

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

    ---- Docker 容器逃逸案例: 1、判断是否处于docker容器里 2、配置不当引起的逃逸 Docker Remote API 未授权访问 docker.sock 挂载到容器内部 docker 高危启动参数 privileged 特权模式 挂载敏感目录 相关启动参数存在的安全问题 3、Docker 软件设计引起的逃逸 Shocker攻击 runC容器逃逸漏洞(CVE-2019-5736) Docker cp 命令(CVE-2019-14271) 4、内核漏洞引起的逃逸 脏牛漏洞(dirtycow-docker-vdso) ---- 一、判断是否在docker容器里 首先,我们需要先判断是否在docker 二、配置不当引发的docker逃逸 2.1 docker remote api未授权访问 漏洞简述:docker remote api可以执行docker命令,docker守护进程监听在0.0.0.0 ---- 四、内核漏洞引起的逃逸 4.1 利用DirtyCow漏洞实现Docker逃逸 漏洞简述: Dirty Cow(CVE-2016-5195)是Linux内核中的权限提升漏洞,通过它可实现Docker

    3.3K10发布于 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 并运行自定义负载 .

    69121编辑于 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: //docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities 当操作员执行时docker run –privileged

    2.8K20发布于 2021-08-13
  • 来自专栏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
  • 危险的 runC 漏洞可能允许黑客逃逸 Docker 容器

    作者:比尔·图拉斯(Bill Toulas)日期:2025 年 11 月 9 日 上午 10:11Docker 和 Kubernetes 中使用的 runC 容器运行时曝出三个新漏洞,攻击者可利用这些漏洞绕过隔离限制 它负责执行创建容器进程、配置命名空间、挂载点和控制组等底层操作,供 Docker、Kubernetes 等上层工具调用。 若攻击者在容器初始化期间将 /dev/null 替换为符号链接,runC 可能会将攻击者控制的目标以可读写模式绑定挂载到容器内,进而允许写入 /proc 目录,实现容器逃逸。 这同样会暴露关键 procfs 目录项的可写权限,为逃逸提供可能。CVE-2025-52881攻击者可诱骗 runC 向 /proc 目录写入数据,且该写入操作会被重定向到攻击者控制的目标。 立即下载相关文章Docker 降低加固镜像目录(Hardened Images Catalog)使用门槛,中小企业可轻松获取QNAP 修复七个 NAS 零日漏洞,这些漏洞曾在 Pwn2Own 赛事中被利用近

    49320编辑于 2025-11-10
  • 来自专栏java系列

    Java基础】This逃逸( This引用逃逸详解)

    【Java基础】This逃逸( This引用逃逸详解)1、This逃逸中的关键词This引用逃逸对象在还没有构造完成时,This引用已经发布出。发布对象发布是指一个对象在作用域范围之外被使用。 2、This逃逸示例分析public class ThisEscape { final int a; int b=0; static ThisEscape obj; public ,但是不一定发生,而线程B发生this逃逸这是因为:由于JVM的指令重排序存在,实例变量i的初始化被安排到构造器外(final可见性保证是final变量规定在构造器中完成的)类似于this逃逸,线程A中构造器构造还未完全完成 3、什么情况下会This逃逸发生This逃逸一般会有两种情况:在构造器中启动线程:启动的线程任务是内部类,在内部类中 xxx.this 访问了外部类实例,就会发生访问到还未初始化完成的变量在构造器中注册事件 ,引起This逃逸的问题是在多线程滥用引用。

    63430编辑于 2023-06-09
  • 肿瘤免疫逃逸

    了解一些免疫逃逸方面的内容,对我们分析单细胞空间外显子数据很有帮助。顺便问一句,免疫细胞如果被老板优化了,降本增效算成功了吗?? “肿瘤免疫编辑”假说是当前被认可的肿瘤免疫逃逸理论。 肿瘤免疫逃逸由多个因素共同介导,其机制包括:肿瘤细胞通过低表达、遮盖抗原或抗原变异等方式直接逃逸免疫监控;肿瘤组织微环境募集或扩增多种抑制性免疫细胞来诱导肿瘤免疫抑制等。 (四)肿瘤细胞低表达MHC分子MHCI类分子提呈功能的缺乏常常是导致肿瘤免疫逃逸的主要原因之一。 这些抑制分子与间质细胞共同形成稳定的免疫微环境,帮助肿瘤细胞逃逸机体的免疫监视并促进肿瘤进展。

    51410编辑于 2024-02-28
  • 来自专栏Golang语言社区

    Golang逃逸分析

    Golang逃逸分析 介绍逃逸分析的概念,go怎么开启逃逸分析的log。 以下资料来自互联网,有错误之处,请一定告之。 如果指针存储在全局变量或者其它数据结构中,它们也可能发生逃逸,这种情况是当前程序中的指针逃逸逃逸分析需要确定指针所有可以存储的地方,保证指针的生命周期只在当前进程或线程中。 逃逸分析的用处(为了性能) 最大的好处应该是减少gc的压力,不逃逸的对象分配在栈上,当函数返回时就回收了资源,不需要gc标记清除。 go消除了堆和栈的区别 go在一定程度消除了堆和栈的区别,因为go在编译的时候进行逃逸分析,来决定一个对象放栈上还是放堆上,不逃逸的对象放栈上,可能逃逸的放堆上。 ,而i却逃逸了,这是因为go的逃逸分析不知道z和i的关系,逃逸分析不知道参数y是z的一个成员,所以只能把它分配给堆。

    1.9K51发布于 2018-07-26
  • 来自专栏冰河技术

    逃逸分析,yyds!!

    大家好,我是冰河~~ 在JVM的实现中,为了提高JVM的性能和节省内存空间,JVM提供了一种叫做 “逃逸分析” 的特性,而且对于“逃逸分析” 这种特性,也是近年来大厂面试常问的知识点。 今天,我们就一起来聊聊什么是逃逸分析 逃逸分析的概念 先以官方的形式来说下什么是逃逸分析。逃逸分析就是:一种确定指针动态范围的静态分析,它可以分析在程序的哪些地方可以访问到指针。 在JVM的即时编译语境下,逃逸分析将判断新建的对象是否逃逸。即时编译判断对象是否逃逸的依据:一种是对象是否被存入堆中(静态字段或者堆中对象的实例字段),另一种就是对象是否被传入未知代码。 对象逃逸示例 一种典型的对象逃逸就是:对象被复制给成员变量或者静态变量,可能被外部使用,此时变量就发生了逃逸。 我们可以用下面的代码来表示这个现象。 还没完,我们继续看下逃逸分析的优点,以便于小伙伴们能够更好的理解逃逸分析。 逃逸分析的优点 逃逸分析的优点总体上来说可以分为三个:对象可能分配在栈上、分离对象或标量替换、消除同步锁。

    43610编辑于 2022-06-15
领券