逃逸思路1.因配置特权模式逃逸(--privileged,--cap-add与SYS_ADMIN结合)2.docker.sock通信传输逃逸(容器A新建一个容器B,再使用容器B进行逃逸)3.结合linux 内核提权漏洞逃逸(脏牛dirty cow)4.docker中的/proc传输,/fd传输逃逸(CVE-2019-5736)Docker是当今使用范围最广的开源容器技术之一,具有高效易用的优点。 /dev/路径会发现很多设备文件:ls /devimage.png4.新建目录以备挂载:mkdir /abc5.将/dev/sda1挂载至/abc:mount /dev/sda1 /abc6.最终我们可以通过访问容器内部的 因此,当容器访问docker socket时,我们可通过与docker daemon的通信对其进行恶意操纵完成逃逸。 /bin/bash可以看见@符号后的Docker ID已经发生变化:image.png5.在新容器/aa路径下完成对宿主机资源的访问:ls /aaimage.png三、存在Dirty Cow漏洞时的逃逸情况
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 ?
原文首发在:奇安信攻防社区 https://forum.butian.net/share/2638 作者:凝 前言: 我认为docker容器逃逸也算是提权的一种手法,要更好的理解容器逃逸的手法,应该知道从本质上看容器内的进程只是一个受限的普通 前言: 我认为docker容器逃逸也算是提权的一种手法,要更好的理解容器逃逸的手法,应该知道从本质上看容器内的进程只是一个受限的普通 Linux 进程,而容器逃逸的过程我们完全可以将其理解为在一个受限进程中进行一些操作来获取未受限的完整权限 5:hugetlb:/docker/f904ce4cc3834023f7e074ed582957859450e85c083f1c9922390d39126058e9 而 Kubernetes 默认的 容器的环境,我们便要尝试容器逃逸 Docker配置不当导致的容器逃逸 这里我们再次提到NameSpace和cgroups Linux 命名空间(NameSpace):实现文件系统、网络、进程、主机名等方面的隔离 /ning 成功反弹shell 挂载 Docker Socket 逃逸 什么是Docker Socket?
容器逃逸也算是提权的一种手法,要更好的理解容器逃逸的手法,应该知道从本质上看容器内的进程只是一个受限的普通 Linux 进程,而容器逃逸的过程我们完全可以将其理解...前言:我认为docker容器逃逸也算是提权的一种手法 5:hugetlb:/docker/f904ce4cc3834023f7e074ed582957859450e85c083f1c9922390d39126058e9而 Kubernetes 默认的,长这样 容器的环境,我们便要尝试容器逃逸Docker配置不当导致的容器逃逸这里我们再次提到NameSpace和cgroupsLinux 命名空间(NameSpace):实现文件系统、网络、进程、主机名等方面的隔离 /ning成功反弹shell挂载 Docker Socket 逃逸什么是Docker Socket? 简而言之:当容器启动时以挂载Docker Socket的方式启动时,我们就可以尝试逃逸环境复现:docker run -itd --name docker_sock -v /var/run/docker.sock
文章前言 在Docker中Privileged是一种特殊的权限模式,它允许Docker容器在启动时获取到与宿主机相同的权限级别。 漏洞概述 操作者使用特权模式启动的容器时,Docker管理员可以通过mount命令将外部宿主机磁盘设备挂载进容器内部,获取对整个宿主机的文件读写权限,此外还可以通过写入计划任务等方式在宿主机执行命令 环境搭建 docker run -v /home/ubuntu/cdk:/cdk --rm -it --privileged ubuntu bash 特权检测 在容器中时可以通过如下参数检测当前容器是否是以特权模式启动
Part01 简述docker容器逃逸什么是docker? 什么是Docker容器逃逸? Part02 常见的逃逸方法1、配置不当,例如:开启特权模式(privileged)、挂载Docker Socket逃逸、挂载宿主机procfs逃逸、Docker Remote API未授权访问逃逸;2 在特定网络条件下,攻击者可通过访问containerd-shimAPI,从而实现Docker容器逃逸。 Socket文件挂载到容器内部,或者使用TLS加密通信;4、及时更新Docker和相关组件的版本,修复已知的漏洞;5、使用安全扫描工具检测和分析容器镜像和运行时环境;6、使用安全策略和监控工具管理和保护容器生命周期
docker是目前主流的容器技术,今天我们来探讨一下docker逃逸的3种常见方式:内核漏洞引起的逃逸、相关程序漏洞引起的逃逸和docker配置不当引起的逃逸。 可以看到,我们成功利用脏牛内核漏洞,从docker容器中逃逸,并获得了宿主机的shell: ? 将该payload拷贝到docker容器中(此时可以模拟攻击者获取了docker容器权限,在容器中上传payload进行docker逃逸) ? 进一步利用上述信息进行docker逃逸。docker可以挂载宿主机的文件夹,同时docker默认使用root运行,这样就可以造成任意文件的读取和写入。 我们可以挂载宿主机的/root到docker,然后写入我们自己生成的ssh公钥,就可以完成逃逸。
影响范围 Docker before 19.03.1 漏洞类型 容器逃逸漏洞 利用条件 影响范围应用 漏洞概述 正常情况下用户通过使用docker cp命令可以将文件从host主机拷贝至容器,或者从容器拷贝至 host主机,对应具体操作指令如下: docker cp {container_id}:/path /path 在将文件从host主机拷贝至容器的过程中Docker使用了一个辅助进程——docker-tar 进程chroot到容器中时,造成了一个dokcer cp命令导致的容器逃逸漏洞 漏洞环境 这里使用Metarget来构建环境 . linux-gnu/libnss_files.so.2 Step 4:使用恶意so文件替换原先的so文件 mv /libnss_files.so.2 /lib/x86_64-linux-gnu/ Step 5: 替换后退出容器,在宿主机上执行cp命令: sudo docker cp 14271:/logs ./ 进入容器内部可发现根目录下存在host_fs目录挂载了宿主机的文件系统,成功逃逸(笔者未找到对应的
/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 /28O2n5CSqxCgLx0rZBLsTHSadYD32iOCtY7r5fQdXkJU4C0tzGYJbs3SNJG3yqJ3yG5cMmnKTz8sblW+B3JdDaWUw8artLteb5Bw2b8yVvRRtgZcBWQPLe0
systemctl daemon-reload service docker restart 配置完加速源后,再重新运行bash install.sh拉取镜像时就快了,完成后就进入了开启的docker 再看下此时的漏洞环境,docker和docker-runc版本如下: ? ? docker容器权限,在容器中上传payload进行docker逃逸) 并执行 docker cp main c37c910028ae:/home docker exec -it c37c910028ae 5.【Ctrl】+【Shift】+【T】新建一个终端,进入Docker容器中,触发Payload ? ? 6.运行后可以看到之前的终端中有回显同时服务器处收到反弹Shell ? ? ? 此时查看IP也会发现该IP是运行Docker的ubuntu16.04的IP,所以成功实现了Docker容器的逃逸。
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 并运行自定义负载 .
---- Docker 容器逃逸案例: 1、判断是否处于docker容器里 2、配置不当引起的逃逸 Docker Remote API 未授权访问 docker.sock 挂载到容器内部 docker 高危启动参数 privileged 特权模式 挂载敏感目录 相关启动参数存在的安全问题 3、Docker 软件设计引起的逃逸 Shocker攻击 runC容器逃逸漏洞(CVE-2019-5736) Docker /bin/docker:/usr/bin/docker \ ubuntu \ /bin/bash 漏洞测试: 1、在容器中找到docker.sock root@95a280bc5a19:/# find sudo docker exec -it cafa20cfb0f9 /bin/sh 5、在192.168.172.136上监听本地端口,成功获取宿主机反弹回来的shell。 ? ---- 四、内核漏洞引起的逃逸 4.1 利用DirtyCow漏洞实现Docker逃逸 漏洞简述: Dirty Cow(CVE-2016-5195)是Linux内核中的权限提升漏洞,通过它可实现Docker
检测与逃逸 然后查看一些信息的时候发现命令找不到: 执行命令验证是否为docker环境: 确实为docker环境,那么就看看宿主机有没有什么漏洞可以利用,使用 cat /etc/hosts,看到了主机 成功爆破后,这里就登录Portainer进行Docker逃逸了: 注:Portainer是一个可视化的容器镜像的图形管理工具,利用Portainer可以轻松构建,管理和维护Docker环境。 Portainer通过Docker.sock与宿主机进行通信,这是它的正常功能: 在freebuf看到是这么介绍的: 接下来开始逃逸,但是这里,我们进行链接的时候发现: 啊这,那就只能使用这个方法了: :mkdir /abcd 4.将/dev/sda1挂载至 /abcd: mount /dev/sda1 /abcd 5.最终我们可以通过访问容器内部的/abcd路径来达到访问整个宿主机的目的:ls /abcd 上线了: 总结 本文记录一次通过公网拿到docker容器权限,通过扫描发现宿主机地址,并对宿主机进行攻击,最后利用Portainer进行docker逃逸获得宿主机Ubuntu权限。
内网渗透 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: /28O2n5CSqxCgLx0rZBLsTHSadYD32iOCtY7r5fQdXkJU4C0tzGYJbs3SNJG3yqJ3yG5cMmnKTz8sblW+B3JdDaWUw8artLteb5Bw2b8yVvRRtgZcBWQPLe0
为了验证我的想法,查询系统进程的 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。
作者:比尔·图拉斯(Bill Toulas)日期:2025 年 11 月 9 日 上午 10:11Docker 和 Kubernetes 中使用的 runC 容器运行时曝出三个新漏洞,攻击者可利用这些漏洞绕过隔离限制 它负责执行创建容器进程、配置命名空间、挂载点和控制组等底层操作,供 Docker、Kubernetes 等上层工具调用。 若攻击者在容器初始化期间将 /dev/null 替换为符号链接,runC 可能会将攻击者控制的目标以可读写模式绑定挂载到容器内,进而允许写入 /proc 目录,实现容器逃逸。 这同样会暴露关键 procfs 目录项的可写权限,为逃逸提供可能。CVE-2025-52881攻击者可诱骗 runC 向 /proc 目录写入数据,且该写入操作会被重定向到攻击者控制的目标。 5 万台思科防火墙存在高危漏洞,且已被主动利用黑客利用 JobMonster WordPress 主题中的严重身份验证绕过漏洞发起攻击澳大利亚警告:未打补丁的思科设备面临 BadCandy 恶意软件感染风险
【Java基础】This逃逸( This引用逃逸详解)1、This逃逸中的关键词This引用逃逸对象在还没有构造完成时,This引用已经发布出。发布对象发布是指一个对象在作用域范围之外被使用。 ,但是不一定发生,而线程B发生this逃逸这是因为:由于JVM的指令重排序存在,实例变量i的初始化被安排到构造器外(final可见性保证是final变量规定在构造器中完成的)类似于this逃逸,线程A中构造器构造还未完全完成 3、什么情况下会This逃逸发生This逃逸一般会有两种情况:在构造器中启动线程:启动的线程任务是内部类,在内部类中 xxx.this 访问了外部类实例,就会发生访问到还未初始化完成的变量在构造器中注册事件 onEvent(Event e) { doSomething(e); } } ); var = 10; }5、 总结This逃逸一般发生在多线程中,引起This逃逸的问题是在多线程滥用引用。
Golang逃逸分析 介绍逃逸分析的概念,go怎么开启逃逸分析的log。 以下资料来自互联网,有错误之处,请一定告之。 如果指针存储在全局变量或者其它数据结构中,它们也可能发生逃逸,这种情况是当前程序中的指针逃逸。 逃逸分析需要确定指针所有可以存储的地方,保证指针的生命周期只在当前进程或线程中。 go消除了堆和栈的区别 go在一定程度消除了堆和栈的区别,因为go在编译的时候进行逃逸分析,来决定一个对象放栈上还是放堆上,不逃逸的对象放栈上,可能逃逸的放堆上。 Example5: package main type S struct { M *int } func main() { var x S var i int ref ,而i却逃逸了,这是因为go的逃逸分析不知道z和i的关系,逃逸分析不知道参数y是z的一个成员,所以只能把它分配给堆。
大家好,我是冰河~~ 在JVM的实现中,为了提高JVM的性能和节省内存空间,JVM提供了一种叫做 “逃逸分析” 的特性,而且对于“逃逸分析” 这种特性,也是近年来大厂面试常问的知识点。 今天,我们就一起来聊聊什么是逃逸分析 逃逸分析的概念 先以官方的形式来说下什么是逃逸分析。逃逸分析就是:一种确定指针动态范围的静态分析,它可以分析在程序的哪些地方可以访问到指针。 在JVM的即时编译语境下,逃逸分析将判断新建的对象是否逃逸。即时编译判断对象是否逃逸的依据:一种是对象是否被存入堆中(静态字段或者堆中对象的实例字段),另一种就是对象是否被传入未知代码。 对象逃逸示例 一种典型的对象逃逸就是:对象被复制给成员变量或者静态变量,可能被外部使用,此时变量就发生了逃逸。 我们可以用下面的代码来表示这个现象。 还没完,我们继续看下逃逸分析的优点,以便于小伙伴们能够更好的理解逃逸分析。 逃逸分析的优点 逃逸分析的优点总体上来说可以分为三个:对象可能分配在栈上、分离对象或标量替换、消除同步锁。
“肿瘤免疫编辑”假说是当前被认可的肿瘤免疫逃逸理论。 肿瘤免疫逃逸由多个因素共同介导,其机制包括:肿瘤细胞通过低表达、遮盖抗原或抗原变异等方式直接逃逸免疫监控;肿瘤组织微环境募集或扩增多种抑制性免疫细胞来诱导肿瘤免疫抑制等。 (四)肿瘤细胞低表达MHC分子MHCI类分子提呈功能的缺乏常常是导致肿瘤免疫逃逸的主要原因之一。 这些抑制分子与间质细胞共同形成稳定的免疫微环境,帮助肿瘤细胞逃逸机体的免疫监视并促进肿瘤进展。 3.趋化因子 趋化因子及其受体家族在肿瘤免疫中的作用主要有以下几点:①募集免疫细胞进入肿瘤组织调控机体免疫功能,如C2、 CCL5能募集髓系细胞,CXCL9、CXCL10能够趋化T细胞,CCL19、CCL20