首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

CAP_SYS_ADMIN之重写devices.allow进行容器逃逸

环境搭建 执行如下命令启动存在漏洞容器环境,在赋予sys_admin权限同时,需要关掉安全组apparmor设置 docker run -d -P --cap-add=cap_sys_admin -...-security-opt apparmor=unconfined --name=test nginx:latest 在容器中使用cdk进行检测,可以看到容器中多了CAP_SYS_ADMINCapability...node号和文件系统类型,由于容器/etc/hosts、/etc/resolv.conf、/etc/hostname这三个文件是默认从宿主机挂载进容器,所以在他们挂载信息内很容易能获取到主设备号...debugfs -w host 但是通过debugfs进行调试使用write命令将容器文件复制到宿主机时会出现问题,虽然在debugfs界面查看是正常 write /tmp/authorized_keys...需要注意是,读取和查看目录或文件都需要是绝对路径。 但是echo命令不存在,无法通过echo命令写入公钥,也无法写入计划任务反弹shell。

44230

CAP_SYS_ADMIN之利用notify-on-release进行容器逃逸

容器具有SYS_ADMINCapability的话,则可以进行容器逃逸。它允许大量特权操作,包括mount文件系统,交换空间,还有对各种设备操作以及系统调试相关调用。...环境搭建 执行如下命令启动存在漏洞容器环境,在赋予sys_admin权限同时,需要关掉安全组apparmor设置 docker run -d -P --cap-add=cap_sys_admin -...-security-opt apparmor=unconfined --name=test nginx:latest 在容器中使用cdk进行检测,可以看到容器中多了CAP_SYS_ADMINCapability...文件内容为1,设置release_agent文件对应路径为宿主机可写目录upperdir echo 1 > /tmp/test/x/notify_on_release host_path=`sed...该命令启动一个sh进程,将sh进程PID写入到/tmp/test/x/cgroup.procs中。这里\$\$表示sh进程PID

49920
您找到你想要的搜索结果了吗?
是的
没有找到

基于 Cilium 和 eBPF 检测容器逃逸

在这篇博文中,我将向大家展示访问我们 Kubernetes 集群攻击者如何进行容器逃逸:运行 Pod 以获得 root 权限,将 Pod 转义到主机上,并通过不可见 Pod 和无文件执行来持续攻击...问题 在容器逃逸期间,攻击者打破了主机容器之间隔离边界,最终逃逸至 Kubernetes 控制平面或工作节点地方。...在这种情况下,攻击者可以看到在同一主机上运行其他容器,收集他们机密信息,在主机文件系统上读写数据,攻击 Kubelet 并提升权限;或者通过部署一个不可见 Pod 来利用Kubernetes 错误并在环境中持久存在...这些 JSON 事件通过 Kubernetes 身份感知信息(包括服务、标签、命名空间、Pod 和容器)以及操作系统级进程可见性数据(包括进程二进制文件pid、uid、具有完整进程祖先树父二进制文件...攻击者可以看到在同一控制器节点上运行容器,收集与它们相关机密,从主机文件系统读取数据,攻击 kubelet 并提升权限;或者利用 Kubernetes 特殊行为并通过启动一个不可见容器来保持突破

1.1K30

基于 Cilium 和 eBPF 检测容器逃逸

在这篇博文中,我将向大家展示访问我们 Kubernetes 集群攻击者如何进行容器逃逸:运行 Pod 以获得 root 权限,将 Pod 转义到主机上,并通过不可见 Pod 和无文件执行来持续攻击...问题      在容器逃逸期间,攻击者打破了主机容器之间隔离边界,最终逃逸至 Kubernetes 控制平面或工作节点地方。...在这种情况下,攻击者可以看到在同一主机上运行其他容器,收集他们机密信息,在主机文件系统上读写数据,攻击 Kubelet 并提升权限;或者通过部署一个不可见 Pod 来利用Kubernetes 错误并在环境中持久存在...这些 JSON 事件通过 Kubernetes 身份感知信息(包括服务、标签、命名空间、Pod 和容器)以及操作系统级进程可见性数据(包括进程二进制文件pid、uid、具有完整进程祖先树父二进制文件...攻击者可以看到在同一控制器节点上运行容器,收集与它们相关机密,从主机文件系统读取数据,攻击 kubelet 并提升权限;或者利用 Kubernetes 特殊行为并通过启动一个不可见容器来保持突破

73581

浅析Docker运行安全

特权容器产生后,由于增强权限许多,攻击者可能会以root权限运行代码。这表明攻击者可以以root权限运行主机,包括CAP_SYS_ADMIN。...即使进程使用设置了文件功能位setuid二进制文件或可执行文件执行,也不允许带有no_new_privs进程更改uid / gid或获得任何其他功能。...容器 IP 地址同 Docker主机 IP 地址 要注意容器中服务端口号不能与Docker主机上已经使用端口号相冲突 host模式能够和其它模式共存 2.15 主机进程命名空间不共享,禁用—pid...PID命名空间提供了进程分离。PID命名空间删除系统进程视图,允许进程ID可重用,包括pid 1。 在一些情况下需要容器共享主机进程命名空间,基本上允许容器进程可以查看主机所有进程。...例如,构建了一个带调试工具容器,想在容器使用这些工具来调试主机进程。 如果使用—pid=host参数,容器可以直接操作宿主机数据。

2.6K10

【云原生攻防研究】一文读懂runC近几年漏洞:统计分析与共性案例研究

/proc/[PID]/exe特殊之处在于,我们打开这个文件后在权限检查通过情况下,内核将直接返回一个指向该文件描述符,而非按照传统打开方式去做路径解析和文件查找。...因此在runC exec加入到容器命名空间之后,容器内进程已经能够通过内部/proc观察到它,此时如果打开/proc/[runc-PID]/exe并写入一些内容,就能够实现将宿主机runC二进制程序覆盖掉...文件描述符泄漏利用:其中CVE-2019-5736是借助/proc/[PID]/exe特殊功能拿到文件描述符。...AppArmor和SELinux开启方式利用:容器AppArmor和SELinux这类LSM机制开启都是向procfs写入label,攻击者只需要阻止写入过程即可避免LSM开启。...例如,如果在容器进程以名为1000用户身份运行,并且容器某些操作依赖于用户ID为1000权限,那么将会导致该进程越权。

18310

Linux Capabilities 与容器水乳交融

你还需要复习第二篇文章中内容,了解如何通过基本工具来设置 capabilities。如果一切准备就绪,下面我们就开始了。...这两个集合意义就在于可以帮助我们在进程树或 namespace 范围内创建一个允许任意进程使用某些 capabilities 环境。...如果你可以在容器中修改系统时间,那么宿主机和其他容器系统时间都会被改变。...即使容器进程被黑客攻击,攻击者只会拥有有限文件系统权限,无法施展拳脚。...Docker 中还有一个选项可以防止容器用户获得新 capabilities,它可以有效阻止攻击者提升权限来避免受到攻击,同时也阻止了再容器中执行 set_ambient 程序。

1.9K52

测试用 - 4.使用eBPF逃逸容器技术分析与实践

共同作者: Pass----------------------------前言--容器安全是一个庞大且牵涉极广的话题,而容器安全隔离往往是一套纵深防御体系,牵扯到 AppArmor、Namespace...随着云原生技术快速发展,越来越多容器运行时组件在新版本中会默认配置 AppArmor 策略,原本我们在《红蓝对抗中云原生漏洞挖掘及利用实录》介绍多种容器逃逸手法会逐渐失效;因此我们希望能碰撞出一些攻击手法...容器逃逸分析要想使用 eBPF,需要一些权限和挂载伪文件系统,下表展示了 eBPF kprobe、tracepoint 使用条件:特性 / 功能要求bpf 系统调用拥有 CAP_SYS_ADMIN;...helper 提供了读写整个机器上任意进程用户态空间功能,同时提供了内核空间读取数据功能,当攻击者能向内核加载 eBPF 程序,那么有许多种办法进行权限提升或者容器逃逸:• 读取内核空间里敏感信息...容器新启动时候默认是 root 用户并且处于 initial user namespace ,而且宿主机 root 用户往往会先占用一部分影响 memlock 内存,这样就会导致 eBPF 程序在容器内因为

54560

浅析docker多种逃逸方法

参数自定义 特权模式下容器内进程可以使用所有的 linux capabilities 特权模式下,容器内进程拥有使用所有的 linux capabilities 能力,但是, 不表示进程就一定有使用某些...比如,如果容器是以非 root 用户启动, 就算它是以特权模式启动容器,也不表示它就能够做一些无权限做事情 2.1.2、Linux敏感目录 普通模式下,部分内核模块路径比如 /proc 下一些目录需要阻止写入...,以阻止容器内进程随意修改系统内核 特权模式下,内核文件系统将不再以只读方式被挂载 2.1.4、AppArmor与Seccomp Tips AppArmor: https://www.cnblogs.com...通过notify_on_release实现容器逃逸 条件 以root用户身份在容器内运行 使用SYS_ADMINLinux功能运行 缺少AppArmor配置文件,否则将允许mountsyscall cgroup...如果notify_on_release启用,当cgroup不再包含任何任务时(即,cgrouptasks文件PID为空时),系统内核会执行release_agent参数指定文件内容。

4.4K20

细说Containerd CVE-2020–15257

主机网络名称空间中运行容器是不安全: 1)请勿使用docker run --net = host运行Docker容器 2)请勿使用.spec.hostNetwork...它们在抽象Unix域套接字sun_path中嵌入了结尾空字节,其可阻止常见Unix工具(例如socat)与其连接。...在使用containerd(-shim)两个主要版本1.2.x和1.3.x中,暴露以下能力: 任意文件读取 任意文件追加 任意文件写入 containerd-shim中任意命令执行 从runc config.json...文件创建容器 启动创建容器 大多数用户实际上不受此CVE影响。...关于在Kubernetes中如何使用AppArmor特性,可查看官网 3.3 使用SELinux RHEL/CentOS和FedoraSELinux策略,用于保护主机抽象套接字:

1.3K20

bpflock:基于eBPF实现Linux设备安全审计工具

通过限制对各种Linux功能访问,bpflock能够减少攻击面并阻止一些众所周知攻击技术。...bpflock只允许类似容器管理器、systemd和其他以主机PID或网络命名空间运行容器/程序访问完整Linux功能,并限制那些以自己命名空间运行容器或程序。...如果bpflock在受限配置文件下运行,则所有程序/容器(包括特权程序/容器)都将被拒绝访问。...,bpf" CONFIG_BPF_LSM=y 2、一个启用了BTF内核 启用BPF LSM支持 1、使用高级权限打开/etc/default/grub文件; 2、将下列内容添加到GRUB_CMDLINE_LINUX...,apparmor,bpf" 3、更新grub配置: sudo update-grub2 4、重启设备 Docker使用 下列命令可以使用默认配置文件运行工具: docker run

95120

如何使用 AppArmor 限制应用权限

在开启了 AppArmor 系统中,容器运行时会给容器使用默认权限配置,当然,应用也可以使用自定义配置。本文将讲述如何容器中使用 AppArmor。...如何使用 AppArmor AppArmor 是一个 Linux 内核安全模块,允许系统管理员使用每个程序配置文件来限制程序功能。...配置文件可以允许网络访问、原始套接字访问以及在匹配路径上读取、写入或执行文件权限等功能。 不过,并不是所有的系统都支持 AppArmor。...AppArmor 配置文件定义十分灵活,更多具体使用可以参见 AppArmor 文档。 容器中使用 AppArmor主机上配置好 AppArmor 配置文件后,我们来看如何容器中使用。...配置文件阻止了创建文件操作。

4.4K30

【云原生攻防研究】针对容器渗透测试方法

; 环境变量读取:环境变量本身是一种常用宿主机容器通信方式。...如下图所示,特权模式意味着容器内进程将具备等同于宿主机上进程所有权限: ? 我们在【云原生攻防研究】容器逃逸技术概览[7]介绍了在处于特权模式时如何进行容器逃逸具体方法。.../x/cgroup.procs" 上述命令实际效果是在宿主机上执行了ps aux命令,其结果被存储在容器内/output文件中。...在普通容器中,由于不具有SYS_ADMIN权限,以及AppArmor限制,这种攻击无法成功。因此,特权模式是危险。...操作:执行cat /home/*/.docker/config.json来读取任何可能存在.docker/config.json文件。 问题:iptables规则集是否同时为宿主机容器设置?

2.3K40

2022 年 Kubernetes 高危漏洞盘点

目录或文件遍历 利用此漏洞,黑客可以利用代码中弱点遍历主机系统或网络上任意文件和目录。 2022 主要漏洞盘点 1....ExecSync 请求在容器中运行命令并记录命令输出。命令执行后,CRI-O 会读取此输出,并以读入与命令输出对应整个文件方式读取。...CVE-2022-23648 – Containerd 中任意主机文件访问 该漏洞存在于containerd版本 1.6.1、1.5.10 和 1.14.12 中,允许攻击者读取任意主机文件。...然后,具有本地访问权限恶意行为者可能会导致拒绝服务攻击或在主机上运行任意代码。要检测 Kubernetes 中此漏洞暴露,您需要找到具有 CAP_SYS_ADMIN 功能 pod。...在 Kubernetes 部署中实施 AppArmor 和 SELinux 等安全配置文件以及 Pod 安全标准可以减少遭受攻击风险。 在为您服务帐户和用户分配角色和权限时,请遵循最小权限原则。

1.6K10

04 . Docker安全与Docker底层实现

例如,恶意用户启动容器时候将主机根目录/映射到容器 /host目录中,那么容器理论上就可以对主机文件系统进行任意修改了。这听起来很疯狂?...,还要实现文件系统、网络、PID、UID、IPC等等相互隔离,前者相对容易实现一些,后者则需要宿主机系统深入支持....随着Linux系统对于命名空间功能完善实现,程序员可以实现上面的所有需要,让某些进程在彼此隔离命名空间中运行,大家虽然都共用一个内核和某些运行时环境(l例如一些系统命令和系统等),但是彼此却看不到,...net命名空间 有了pid命名空间,每个命名空间pid能够实现相互隔离,但是网络端口还是共享host端口,网络隔离是通过net命名空间实现,每个net命名空间有单独网络设备,IP地址,路由表,...IPC命名空间 容器中进程交互采用了Linux常见进程交互方法,包括信号量,消息队列和共享内存等,然而同VM不同是,容器进程交互实际山还是host上具有相同pid命名空间进程交互,因此需要在IPC

95440

浅谈Linux SECCOMP安全机制在容器使用

255 JMP(直接跳转) 跳转目标是指令偏移量 跳转 偏移量最大255 Load(数据读取) 读取程序参数 读取指定16位内存地址 Store(数据存储) 保存数据到指定16位内存地址中 支持运算...具体系统调用 接口API可以通过查看 对应系统声明头文件。 比如我现在用这台机器是64位Linux系统,就查看/usr/include/asm/unistd_64.h文件。...但是如果需要大批量配置多个 相同容器,seccomp就相对来说容易得多;定义好一份seccomp配置文件,在多个容器加载时候,指定该份配置文件就可以省掉单个容器配置。...seccomp使用 容器中 seccomp使用,本质是对Seccomp-BPF再封装使用;通过简单配置文件来达快速设置多个容器seccomp安全应用(以下全部以docker为例)。...有点黑白名单意思。 05 总结 在容器环境里面有AppArmor、 SElinux、Capability、Seccomp等安全加固技术。

5.9K21

Container (Docker) is Process or Virtual Machine

从这张图可以看到,技术发展到今天,从最开始自建机房,到云主机,再到现在轻便 FaaS。 容器技术将虚拟机这个计算单位拆分到了更小单元。计算资源被不断抽象成服务,我们选择也越来越多。...解决一个问题是,如何快速创建并配置虚拟机? 他本身不提供虚拟化能力,可以看做是对虚拟化平台一个封装。...几个问题: 容器之间怎么通信? 容器怎么和 Host 进行通信? 容器怎么联通外网? 容器之间如何实现跨主机通信? 见 Kubernetes 篇。...=unconfined 利用方式2:CVE-2022-0185 拥有 SYS_PTRACE 进程注入逃逸,需要 –pid=host 以及 –security-opt apparmor=unconfined...CAP_DAC_READ_SEARCH,可以绕过文件读权限检查和目录读和执行权限检查,使用 open_by_handle_at 系统调用来爆破宿主机文件内容。

85340

9 个容器环境安全红队常用手法总结

Apparmor AppArmor 是 Linux 内核一个安全模块,通过它可以指定程序是否可以读、写或者运行哪些文件,是否可以打开网络端口等。...若可执行文件路径为 /home/ubuntu/run,使用 Apparmor 对其进行访问控制,需要在配置文件目录 /etc/apparmor.d 下新建一个名为 home.ubuntu.run 文件...该socket可以在宿主机/proc/net/unix文件中查找到,当Docker容器内部共享了宿主机网络时,便可通过加载该socket,来控制Docker容器,引发逃逸。...② 挂载了主机 /proc 目录 ●从 mount 信息中找出宿主机内对应当前容器内部文件结构路径。 sed -n 's/.....*/\1/p' /etc/mtab ●因为宿主机 /proc 文件被挂载到了容器 /host_proc 目录,所以我们修改 /host_proc/sys/kernel/core_pattern

99230
领券