### 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 部署到集群中