Files
Sec-Interview/Chapter6/6-28.md
T
2025-09-25 03:24:57 +08:00

37 lines
3.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
### Kubernetes 攻击思路
**1. 从外部服务入手**
这是最常见的攻击起点,攻击者通常会寻找暴露在公网上的 K8s 组件或应用。
**a. 攻击 Web 应用**
- **漏洞利用**:如果 K8s 集群中运行着 Web 应用,攻击者会首先对这些应用进行漏洞扫描。常见的漏洞包括 **SQL 注入**、**文件上传**、**RCE(远程代码执行)**等
- **反向 Shell**:一旦成功利用 RCE,攻击者可以在 Pod 内部获取一个反向 Shell。这是进入集群内部的第一步
- **容器逃逸**:仅仅获得 Pod 的 Shell 还不够。攻击者会尝试进行**容器逃逸**,利用 Pod 配置不当或内核漏洞,从容器内部获取宿主机(Node)的权限。
**b. 攻击暴露的 K8s 服务**
- **Kubelet API**:如果 Kubelet 的 API(默认端口 10250 或 10255)没有进行严格的认证,攻击者可以直接访问它。通过 Kubelet API,攻击者可以执行命令、查看 Pod 详情,甚至创建新的 Pod,从而实现对整个 Node 的控制
- **Dashboard**:如果 K8s Dashboard 暴露在公网,并且使用了弱密码,攻击者可以登录 Dashboard,然后利用其强大的 UI 界面直接管理集群资源
**2. 权限提升与横向移动**
一旦攻击者进入集群内部,哪怕是获得了普通 Pod 的权限,他们也会立即开始进行权限提升和横向移动,寻找更高的权限,例如 `Cluster Admin`
**a. 权限提升**
- **RBAC 滥用**K8s 的 **RBAC(基于角色的访问控制)**机制是权限提升的核心攻击点。攻击者会枚举当前 Pod 所拥有的 ServiceAccount 权限,寻找那些被错误配置为高权限的角色。例如,如果一个普通 Pod 的 ServiceAccount 拥有 `list secrets``create pods` 的权限,攻击者就可以利用这些权限来窃取敏感信息或创建恶意 Pod
- **滥用宿主机挂载**:如果 Pod 被配置为挂载了宿主机的敏感路径(如 `/etc``/var/run/docker.sock`),攻击者可以直接访问这些路径,甚至通过 `docker.sock` 控制宿主机的 Docker 守护进程,从而实现容器逃逸。
**b. 横向移动**
- **ServiceAccount 凭证窃取**:攻击者可以窃取当前 Pod 的 ServiceAccount Token,并使用这个 Token 伪装成 ServiceAccount,访问其他 Pod 或 K8s API
- **扫描内网**:利用已控制的 Pod 作为跳板,攻击者可以对集群内网进行扫描,寻找其他可以被攻击的服务或未授权的 API
**3. 供应链攻击**
供应链攻击是一种更高级的攻击方式,它不直接攻击 K8s 集群本身,而是攻击 K8s 集群所依赖的组件
- **恶意镜像**:攻击者可以将恶意代码注入到 Docker 或 OCI 镜像中。当开发者或 CI/CD 流水线拉取并部署这个镜像时,恶意代码就会在集群内部运行
- **第三方工具漏洞**:攻击者可以利用 K8s 周边工具的漏洞,例如,攻击 CI/CD 工具(如 Jenkins、Gitlab CI)或 Helm charts,通过这些工具将恶意 Payload 部署到集群中