Kubernetes + Ubuntu 18.04 漏洞环境搭建¶
前置知识¶
本 Kubernetes + Ubuntu 18.04 漏洞环境适用于 Awesome-POC 中与 Kubernetes 相关的部分云安全漏洞。
各组件版本如下:
Docker version: 18.09.3/19.03.6
minikube version: v1.35.0
Kubectl Client Version: v1.32.3
Kubectl Server Version: v1.32.0
本环境可用于复现以下漏洞:
类别 | 漏洞名称 | CDK(v1.5.5) Exploit | 文档链接 |
---|---|---|---|
容器逃逸 | 挂载 docker.sock 导致容器逃逸 | docker-sock-check docker-sock-pwn |
link |
容器逃逸 | 挂载 log 目录导致容器逃逸 | - | link |
容器逃逸 | 挂载宿主机 procfs 系统导致容器逃逸 | mount-procfs | link |
容器逃逸 | Containerd 漏洞导致容器逃逸 CVE-2020-15257 | shim-pwn | link |
容器逃逸 | Docker copy 漏洞导致容器逃逸 CVE-2019-14271 | docker-api-pwn | link |
容器逃逸 | 挂载重写 cgroup devices.allow 导致容器逃逸 | rewrite-cgroup-devices | link |
容器逃逸 | Linux 内核 cgroups v1 逻辑错误导致容器逃逸 CVE-2022-0492 | mount-cgroup | link |
容器逃逸 | Kubernetes privileged 特权容器导致容器逃逸 | mount-disk | link |
持久化 | Kubernetes 部署 Shadow API Server | k8s-shadow-apiserver | link |
持久化 | Kubernetes 部署后门 CronJob | k8s-cronjob | link |
持久化 | Kubernetes 部署后门 Daemonset | k8s-backdoor-daemonset | link |
权限提升 | Kubernetes 利用 nodes proxy 子资源进行权限提升 | - | link |
命令执行 | Docker build 漏洞导致命令执行 CVE-2019-13139 | - | link |
命令执行 | Docker daemon api 未授权访问漏洞 RCE | - | link |
命令执行 | Kubernetes Ingress-nginx admission 远程代码执行漏洞 CVE-2025-1974 | - | link |
命令执行 | Kubernetes API Server 未授权命令执行 | - | link |
信息窃取 | Kubernetes etcd 未授权访问 | - | link |
环境搭建¶
Docker 18.09.3¶
注意,此版本是一个较老的版本(发布于 2019 年 3 月),它存在多个已知的安全漏洞。安装脚本仅限于漏洞环境,请勿用于生产环境。
安装脚本 install_docker_18.09.03.sh
:
#!/bin/bash
set -e
echo "🔧 卸载旧版本 Docker(如果有)..."
sudo apt remove -y docker docker-engine docker.io containerd runc || true
echo "🔓 解除版本锁定 (如果有)..."
sudo apt-mark unhold docker-ce docker-ce-cli containerd.io || true
echo "🧹 删除错误的 Docker 源..."
sudo rm -f /etc/apt/sources.list.d/docker.list || true
sudo sed -i '/download.docker.com/d' /etc/apt/sources.list
echo "🌐 添加清华大学 Docker 镜像源 GPG key..."
wget -qO - https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
echo "📚 添加清华大学 Docker 镜像源..."
echo "deb [arch=amd64] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu bionic stable" \
| sudo tee /etc/apt/sources.list.d/docker.list
echo "📦 更新软件包索引..."
sudo apt update
echo "🔍 查找 Docker 18.09.3..."
VERSION_STRING=$(apt-cache madison docker-ce | grep 18.09.3 | head -n1 | awk '{print $3}')
if [ -z "$VERSION_STRING" ]; then
echo "❌ 找不到 Docker 18.09.3"
exit 1
fi
echo "✅ 找到版本:$VERSION_STRING"
echo "⬇️ 安装 Docker 版本 $VERSION_STRING ..."
sudo apt install -y docker-ce=$VERSION_STRING docker-ce-cli=$VERSION_STRING containerd.io
echo "📌 锁定版本,防止自动升级..."
sudo apt-mark hold docker-ce docker-ce-cli containerd.io
echo "✅ 安装完成,当前版本:"
docker --version
其他版本 Docker 修改
18.09.3
版本号即可。
Kubectl v1.32.3¶
安装最新版本:
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
或直接安装 v1.32.3:
curl -LO "https://dl.k8s.io/release/v1.32.3/bin/linux/amd64/kubectl"
将下载的 kubectl
安装到系统路径 /usr/local/bin/
:
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
Minikube v1.35.0¶
安装最新版本:
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
将下载的 minikube
安装到系统路径 /usr/local/bin/
:
sudo install minikube-linux-amd64 /usr/local/bin/minikube
环境启动¶
启动 Minikube 集群¶
minikube start --force
由于网络原因,国内可以拉取 kicbase
,自定义基础镜像源启动 minikube:
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kicbase:v0.0.46
minikube start --force --base-image='registry.cn-hangzhou.aliyuncs.com/google_containers/kicbase:v0.0.46'
查看 Minikube 集群状态¶
minikube status
查看集群节点状态¶
kubectl get nodes
查看所有 Pod 状态¶
kubectl get pods --all-namespaces
停止 Minikube 集群¶
minikube stop
删除 Minikube 集群¶
minikube delete