ingress-nginx 准入控制器 RCE 提权 PoC
CVE-2025-1974 (IngressNightmare) 是 Kubernetes ingress-nginx 准入控制器中的一个严重(CVSS 9.8)未授权远程代码执行漏洞。
攻击流程:
AdmissionReview),并携带注入 ssl_engine 指令的注解nginx -t,该命令加载并执行恶意 .so 文件影响:
运行提供的 ./setup_cve_env 脚本。它将安装所有必需的工具(minikube、kubectl、helm)并创建一个单节点 minikube 集群。然后,一个存在漏洞的 NGINX ingress-controller 版本将被部署到集群中,同时还会创建一个 attacker Pod,用于通过控制器准入 webhook 发送负载。
WEBHOOK_IP=$(kubectl get pod -n ingress-nginx -l app.kubernetes.io/component=controller -o jsonpath='{.items[0].status.podIP}')
kubectl exec attacker -- python3 /tmp/exploit.py $WEBHOOK_IP
响应错误日志将显示 CVE-2025-1974 RCE TRIGGERED。同时,由于 ingress-controller Pod 有权访问集群中的所有 Secrets,错误日志将泄露 Secrets。
.so 负载还会创建一个 pwned 文件。通过以下命令检查其是否存在:
kubectl exec -n ingress-nginx $CPOD -- ls -l /tmp/pwned