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

    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是当今使用范围最广的开源容器技术之一,具有高效易用的优点。 扮演,二者之间通信方式有以下3种:image.png其中使用docker.sock进行通信为默认方式,当容器中进程需在生产过程中与Docker守护进程通信时,容器本身需要挂载/var/run/docker.sock 因此,当容器访问docker socket时,我们可通过与docker daemon的通信对其进行恶意操纵完成逃逸Docker作为client(此步骤可能需要更换源):apt-get install docker.io3.查看宿主机Docker信息:docker -H unix:///host/var/run/docker.sock

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

    Docker容器逃逸

    前言: 我认为docker容器逃逸也算是提权的一种手法,要更好的理解容器逃逸的手法,应该知道从本质上看容器内的进程只是一个受限的普通 Linux 进程,而容器逃逸的过程我们完全可以将其理解为在一个受限进程中进行一些操作来获取未受限的完整权限 /bin/docker-compose docker-compose --version //判断是否有版本信息 #3Docker 设置国内镜像源 vi /etc/docker/daemon.json /ning 成功反弹shell 挂载 Docker Socket 逃逸 什么是Docker Socket? '{print $1 "." $2 "." $3 ".1"}' ` && wget http://$IP:2375 我们主要来分析一下第二种 IP=`hostname -i | awk -F. ." $3 ".1"}' ` && wget http://180.184.196.45:2375 hostname -i:这是一个用于获取本地主机IP地址的命令。它将返回主机的IP地址。

    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 ?

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

    Docker容器逃逸

    容器逃逸也算是提权的一种手法,要更好的理解容器逃逸的手法,应该知道从本质上看容器内的进程只是一个受限的普通 Linux 进程,而容器逃逸的过程我们完全可以将其理解...前言:我认为docker容器逃逸也算是提权的一种手法 docker-composedocker-compose --version //判断是否有版本信息#3Docker 设置国内镜像源vi /etc/docker/daemon.json{ " 容器的环境,我们便要尝试容器逃逸Docker配置不当导致的容器逃逸这里我们再次提到NameSpace和cgroupsLinux 命名空间(NameSpace):实现文件系统、网络、进程、主机名等方面的隔离 /ning成功反弹shell挂载 Docker Socket 逃逸什么是Docker Socket? '{print $1 "." $2 "." $3 ".1"}' :这个命令将获取到的IP地址存储在一个名为IP`的变量中。

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

    Docker Privileged特权逃逸

    文章前言 在Docker中Privileged是一种特殊的权限模式,它允许Docker容器在启动时获取到与宿主机相同的权限级别。 具体来说,Privileged权限可以让容器拥有以下能力: 1、访问宿主机的所有设备文件 2、在容器内部运行与宿主机上相同的内核模块 3、能够修改容器内部的网络配置 4、可以使用mount命令挂载宿主机上任意文件系统 漏洞概述 操作者使用特权模式启动的容器时,Docker管理员可以通过mount命令将外部宿主机磁盘设备挂载进容器内部,获取对整个宿主机的文件读写权限,此外还可以通过写入计划任务等方式在宿主机执行命令 环境搭建 docker run -v /home/ubuntu/cdk:/cdk --rm -it --privileged ubuntu bash 特权检测 在容器中时可以通过如下参数检测当前容器是否是以特权模式启动 /cdk run mount-disk Step 2:在容器内部进入挂载目录,直接管理宿主机磁盘文件 cd /tmp/cdk_dyyop ls -al Step 3:之后写入计划任务或者通过写入SSH

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

    带你玩转docker容器逃逸

    Part01 简述docker容器逃逸什么是docker? 什么是Docker容器逃逸? Part02 常见的逃逸方法1、配置不当,例如:开启特权模式(privileged)、挂载Docker Socket逃逸、挂载宿主机procfs逃逸Docker Remote API未授权访问逃逸;2 3Docker软件设计不当,例如:CVE-2019-5736(runc逃逸)、CVE-2020-15257(DockerContainerd)、CVE-2019-14271(CP缺陷);Part03  成功接受到shellPart04 如何防止docker逃逸1、避免使用特权模式启动容器,或者限制容器所需的最小权限;2、避免将宿主机上的敏感文件或目录挂载到容器内部,或者使用只读模式挂载;3、避免将Docker

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

    云原生安全 | docker容器逃逸

    docker是目前主流的容器技术,今天我们来探讨一下docker逃逸3种常见方式:内核漏洞引起的逃逸、相关程序漏洞引起的逃逸docker配置不当引起的逃逸。 可以看到,我们成功利用脏牛内核漏洞,从docker容器中逃逸,并获得了宿主机的shell: ? 将该payload拷贝到docker容器中(此时可以模拟攻击者获取了docker容器权限,在容器中上传payload进行docker逃逸) ? 进一步利用上述信息进行docker逃逸docker可以挂载宿主机的文件夹,同时docker默认使用root运行,这样就可以造成任意文件的读取和写入。 参考资料: 1、《金融领域云原生技术与安全研究》 2、《容器时代:数万台服务器下的 Docker 深度安全实践》 3、《技术干货 | Docker 容器逃逸案例汇集》

    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 /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来构建环境 . breakout libnss_files.so.2 original_libnss_files.so.2 cp /exp/* / chmod 777 /breakout touch /logs Step 3: cp 14271:/logs ./ 进入容器内部可发现根目录下存在host_fs目录挂载了宿主机的文件系统,成功逃逸(笔者未找到对应的Docker版本故而失败,整个利用流程依旧不变~) 安全建议 升级到最新版本

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

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

    ---- Docker 容器逃逸案例: 1、判断是否处于docker容器里 2、配置不当引起的逃逸 Docker Remote API 未授权访问 docker.sock 挂载到容器内部 docker 高危启动参数 privileged 特权模式 挂载敏感目录 相关启动参数存在的安全问题 3Docker 软件设计引起的逃逸 Shocker攻击 runC容器逃逸漏洞(CVE-2019-5736) Docker / -name docker.sock/run/docker.sock 2、在容器查看宿主机docker信息: docker -H unix:///var/run/docker.sock info 3 /main 248f8b7d3c45:/tmp 3、模仿攻击者,在容器中执行payload # 进入容器sudo docker exec -it 248f8b7d3c45 /bin/bash # 修改权限 ---- 四、内核漏洞引起的逃逸 4.1 利用DirtyCow漏洞实现Docker逃逸 漏洞简述: Dirty Cow(CVE-2016-5195)是Linux内核中的权限提升漏洞,通过它可实现Docker

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

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

    Docker 枚举、特权升级和容器逃逸 (DEEPCE) 为了使其与最大数量的容器兼容,DEEPCE 是纯编写的sh,没有依赖性。 requests.get("https://github.com/stealthcopter/deepce/raw/main/deepce.sh").content)' > deepce.sh python3 组提权 特权模式主机命令执行 裸露的 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)

    systemctl daemon-reload service docker restart 配置完加速源后,再重新运行bash install.sh拉取镜像时就快了,完成后就进入了开启的docker 再看下此时的漏洞环境,dockerdocker-runc版本如下: ? ? 编译生成payload CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go 3.将该payload拷贝到docker容器中(此时可以模拟攻击者获取了 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 逃逸

    挨个测试 可以看到,扫描到了一个 "jira" 目录,看这眼熟的目录盲猜是 Jupyter NoteBook 组件 访问果不其然, Jupyter NoteBook 组件的登陆点 然后我们挨个其他 3 为了验证我的想法,查询系统进程的 cgroup 信息 是 Docker 没错了,猜想为蜜罐的可能性不大,部署了某大学的一个办公系统。 0x04 Docker 逃逸 由于在 Docker 容器中,想到 "Docker 逃逸" 这个漏洞,也不知道能不能逃逸出来,于是想尝试一下。 之前从没实战碰到过 Docker,也没有复现过 Docker 逃逸这个洞,查阅了大量文章。这个点就折腾的比较久。参考文章: https://www。freebuf。 html CVE-2019-5376 这个漏洞是需要重新进入 Docker 才能触反弹 shell。

    1.7K30发布于 2020-12-28
  • 危险的 runC 漏洞可能允许黑客逃逸 Docker 容器

    它负责执行创建容器进程、配置命名空间、挂载点和控制组等底层操作,供 Docker、Kubernetes 等上层工具调用。 若攻击者在容器初始化期间将 /dev/null 替换为符号链接,runC 可能会将攻击者控制的目标以可读写模式绑定挂载到容器内,进而允许写入 /proc 目录,实现容器逃逸。 这同样会暴露关键 procfs 目录项的可写权限,为逃逸提供可能。CVE-2025-52881攻击者可诱骗 runC 向 /proc 目录写入数据,且该写入操作会被重定向到攻击者控制的目标。 影响范围CVE-2025-31133 和 CVE-2025-52881:影响所有版本的 runCCVE-2025-52565:影响 runC 1.0.0-rc3 及后续版本目前 runC 1.2.8、1.3.3 、1.4.0-rc.3 及更高版本已提供修复补丁。

    53820编辑于 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逃逸的问题是在多线程滥用引用。

    65030编辑于 2023-06-09
  • 来自专栏冰河技术

    逃逸分析,yyds!!

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

    43710编辑于 2022-06-15
  • 来自专栏Golang语言社区

    Golang逃逸分析

    Golang逃逸分析 介绍逃逸分析的概念,go怎么开启逃逸分析的log。 以下资料来自互联网,有错误之处,请一定告之。 如果指针存储在全局变量或者其它数据结构中,它们也可能发生逃逸,这种情况是当前程序中的指针逃逸逃逸分析需要确定指针所有可以存储的地方,保证指针的生命周期只在当前进程或线程中。 go消除了堆和栈的区别 go在一定程度消除了堆和栈的区别,因为go在编译的时候进行逃逸分析,来决定一个对象放栈上还是放堆上,不逃逸的对象放栈上,可能逃逸的放堆上。 看下面 Example3: package main type S struct { M *int } func main() { var i int refStruct( ,而i却逃逸了,这是因为go的逃逸分析不知道z和i的关系,逃逸分析不知道参数y是z的一个成员,所以只能把它分配给堆。

    1.9K51发布于 2018-07-26
  • 肿瘤免疫逃逸

    “肿瘤免疫编辑”假说是当前被认可的肿瘤免疫逃逸理论。 此外,肿瘤细胞可能还缺乏其他共刺激分子如ICAM-I、 IFA-3、VCAM-1或HSA等。 此后Treg在肿瘤免疫逃逸中的作用备受关注。人体内,Treg是一个异质性的群体,主要包括 CD4+CD25highTreg,Tr1(IL-10+T细胞)以及TH3(TGF-β+T细胞)细胞。 其中CD4+CD25highTreg Foxp3+ Treg在肺癌、乳腺癌、肝癌、卵巢癌、胃癌及淋巴瘤中都存在,在某些肿瘤中其数量的多少还与预后密切相关。 3.炎症反应的负反馈机制 炎症反应的适时启动与消退是机体维护自身稳态和防御细胞变异的重要机制。

    52810编辑于 2024-02-28
领券