b2proxy
zooproxy
ipdeep
okkproxy
qqgnet
bitbrowser
cliproxy

哪吒监控(Nezha Monitoring)曝严重漏洞:无需登录即可读取密钥并接管管理员后台(CVE-2026-53519)

11000人交流群欢迎你加入:https://telegram.me/gwvpsceping
jtti

近期,开源服务器监控项目 Nezha Monitoring(哪吒监控)披露了一项严重安全漏洞。安全研究人员发现,攻击者无需任何身份验证,仅通过构造特殊 URL,即可读取服务器上的敏感文件,包括配置文件和数据库文件,最终实现管理员账户接管。

该漏洞已被分配编号 CVE-2026-53519,CVSS 评分高达 9.1(Critical),受影响版本为 2.0.13 之前的所有版本。

对于大量将哪吒监控面板直接暴露在公网的用户而言,该漏洞具有极高的实际风险。

哪吒监控(Nezha Monitoring)曝严重漏洞:无需登录即可读取密钥并接管管理员后台(CVE-2026-53519)

漏洞概述

此次漏洞属于典型的路径遍历(Path Traversal)漏洞。

问题出现在 Dashboard 前端资源的路由处理逻辑中。

程序原本希望将以下路径识别为前端页面资源:

/dashboard/login
/dashboard/settings
/dashboard/server

但由于开发过程中采用了简单的字符串前缀判断:

strings.HasPrefix(path, "/dashboard")

攻击者可以构造如下特殊路径:

/dashboard../data/config.yaml

由于 /dashboard.. 同样满足前缀匹配条件,程序会错误地将其当作 Dashboard 请求进行处理。

随后路径经过内部拼接和规范化处理后,最终访问到了:

data/config.yaml

从而导致服务器直接返回配置文件内容。

简单来说,本应访问前端页面资源的请求,被攻击者利用实现了目录跳转,进而读取服务器上的敏感文件。

漏洞利用方式

研究人员公布的验证请求如下:

curl --path-as-is \
http://example.com/dashboard../data/config.yaml

如果目标存在漏洞,将直接返回:

debug: false
listen_port: 8008
jwt_secret_key: xxxxxxxxxxxxx
agent_secret_key: xxxxxxxxxxxxx

除此之外,攻击者还可以访问:

/dashboard../data/sqlite.db

从而下载整个数据库文件。

更值得注意的是,部分 URL 编码形式同样能够成功绕过检测,例如:

/dashboard%2e%2e/data/config.yaml
/dashboard..%2fdata/config.yaml

这意味着许多常见的 Web 防护规则可能无法有效拦截此类攻击请求。

可以泄露哪些数据?

1、配置文件(config.yaml)

默认路径:

data/config.yaml

通常包含:

  • JWT 密钥(jwt_secret_key)
  • Agent 密钥(agent_secret_key)
  • OAuth 客户端密钥
  • GitHub Token
  • GeoIP API Key
  • 第三方通知服务密钥
  • 邮件服务配置

其中最关键的是:

jwt_secret_key:

因为该密钥直接决定 Dashboard 登录身份验证的安全性。

2、数据库文件(sqlite.db)

默认路径:

data/sqlite.db

数据库中可能包含:

  • 管理员账户信息
  • 用户列表
  • 节点服务器信息
  • API Token
  • 监控任务配置
  • 告警通知配置
  • OAuth 登录配置

攻击者可以离线分析数据库内容,获取更多敏感信息。

为什么这个漏洞如此危险?

很多文件读取漏洞仅会造成信息泄露。

但此次漏洞可以进一步升级为后台管理员权限接管。

完整攻击链如下:

第一步:读取配置文件

攻击者获取:

jwt_secret_key

第二步:读取数据库

攻击者获取管理员账户对应的用户 ID。

第三步:伪造 JWT

哪吒监控默认采用:

HS256

算法签发 JWT。

HS256 属于对称加密算法,只要掌握签名密钥,就能够自行生成合法 Token。

第四步:伪造管理员身份

攻击者使用泄露的 JWT 密钥签发新的管理员 Token。

然后将其写入:

nz-jwt

Cookie 中。

系统会将攻击者视为已登录管理员。

第五步:完全控制 Dashboard

成功登录后可执行:

  • 新增节点
  • 删除服务器
  • 修改用户
  • 配置通知渠道
  • 修改 OAuth 设置
  • 导出监控数据
  • 获取 API Token

整个过程无需密码爆破、无需社会工程学攻击,也无需用户交互。

受影响版本

受影响版本:

Nezha Monitoring < 2.0.13

已修复版本:

Nezha Monitoring 2.0.13

官方已在 2.0.13 版本中修复该问题。

如何检查自己是否受到影响?

如果满足以下条件:

  • 使用官方默认部署方式
  • Dashboard 可从公网访问
  • 当前版本低于 2.0.13

则建议立即检查。

同时可以查看 Web 访问日志中是否出现过以下异常请求:

/dashboard../
/dashboard%2e%2e/
/dashboard..%2f
/../data/

这些访问记录都可能代表有人尝试利用该漏洞。

官方修复方案

官方修复主要包括两个方向。

1、严格匹配 Dashboard 路径

原有逻辑:

strings.HasPrefix(path, "/dashboard")

修复后仅允许:

/dashboard/
/dashboard/login
/dashboard/settings

等合法路径访问。

2、防止目录逃逸

在路径拼接完成后再次验证目标路径。

确保最终访问路径仍位于:

admin-dist/

目录内部。

防止:

../

导致目录跳出。

用户应立即采取哪些措施?

1、升级至 2.0.13 或更高版本

这是最重要也是最有效的修复方式。

2、更换所有密钥

即使已经升级,也建议重新生成:

  • jwt_secret_key
  • agent_secret_key
  • OAuth Secret
  • GitHub Token
  • 第三方 API Key

因为无法确认漏洞披露前是否已经遭到访问。

3、重置管理员密码

如果数据库文件可能已经泄露,建议重置所有后台账户密码。

4、限制后台公网访问

推荐使用:

  • Cloudflare Access
  • Zero Trust
  • VPN
  • IP 白名单
  • WAF

避免直接将管理面板暴露在互联网。

站长点评

从技术角度来看,这并不是一个复杂的漏洞。

问题根源在于开发过程中将字符串前缀匹配误当成了安全边界。

例如:

/dashboard
/dashboard..

都会满足前缀判断条件。

当这种逻辑与路径拼接函数组合使用时,就可能产生目录遍历风险。

值得注意的是,此类漏洞往往比远程代码执行漏洞更容易被大规模利用。攻击者不需要登录账户,不需要特殊权限,也无需复杂利用链,仅通过一个精心构造的 HTTP 请求即可获取敏感数据。

对于正在使用哪吒监控的用户来说,如果当前运行版本低于 2.0.13,建议尽快完成升级,并同步更换 JWT 密钥及其他敏感凭据。同时检查历史访问日志,确认是否存在异常的 /dashboard../ 访问记录,以降低潜在安全风险。

GitHub公告:Pre-auth path traversal via /dashboard.. prefix confusion leaks jwt_secret_key · Advisory · nezhahq/nezha · GitHub

标签:
racknerd