收起左侧

哪吒监控漏洞提醒后的自查和清理方法

0
回复
75
查看
[ 复制链接 ]

10

主题

135

回帖

240

牛值

社区共建团

fnOS1.0上线纪念勋章社区上线纪念勋章社区共建团荣誉勋章

昨天看到一条哪吒监控的漏洞提醒,今天想起来我以前也在不少服务器、NAS、小主机上装过这个东西。

有些是当时图新鲜装的,有些是临时看机器状态用的,后面不用了就忘了。问题是 Agent 这类服务不会因为你忘了它就自己停掉,它会一直在后台跑。
upload 附件:nezha_guard_check.py.zip

所以今天顺手写了个小脚本,方便大家自己在机器上查一遍:有没有装过哪吒,服务还在不在,能不能识别版本,不用了就直接卸掉。

这个脚本不扫公网,也不拿你的域名做探测。它只看当前这台机器。

这次提醒的大概情况

群里转的消息是:哪吒监控 v2.0.13 以下版本存在未授权路径穿越风险,Dashboard 可能被构造请求读取到配置文件。

配置里如果有 JWT 密钥之类的东西,一旦泄露,风险就比较大。

我这里不展开漏洞细节,也不贴利用方式。对普通用户来说,处理思路就两种:

  • 还在用:升级到 v2.0.13 或更新版本
  • 不用了:卸载掉,别让它继续挂着

如果你的 Dashboard 曾经暴露在公网,升级后最好顺手把密钥也换一遍。

脚本能干什么

运行后会给一个菜单,大概是这样:

1. 复查详情
2. 升级建议
3. 卸载 Agent
4. 卸载 Dashboard
5. 全量移除哪吒
0. 退出

它会尽量检查这些东西:

  • 哪吒常见安装目录
  • 正在跑的 nezha-agent / nezha-dashboard 进程
  • Linux 上的 systemd 服务,包括 nezha-agent-xxxx.service 这种服务名
  • macOS 上的 launchctl / Homebrew 服务
  • Windows 上的服务和进程
  • Docker 容器
  • 能识别到的话,会顺手读一下版本

卸载时不会上来就删。会先列出准备做什么,然后让你输入数字确认。

Linux / macOS 怎么跑

nezha_guard_check.py 放到机器上,然后执行:

python3 nezha_guard_check.py

如果要卸载服务,Linux 建议用 root 跑,或者自己确认 sudo 权限没问题。

比如:

sudo python3 nezha_guard_check.py

Windows 怎么跑

Windows 上用 PowerShell,建议右键“以管理员身份运行”。

进入脚本所在目录后执行:

py -3 .\nezha_guard_check.py

如果没有 py,试一下:

python .\nezha_guard_check.py

Windows 下脚本会查常见目录、进程和 Windows 服务。卸载时会用 sc stopsc delete 处理服务。

我建议怎么处理

打开脚本后,先选:

1. 复查详情

看一下这台机器到底有没有哪吒。

如果没有发现,就不用管这台了。

如果发现的是 Agent,并且你已经不用哪吒面板了,选:

3. 卸载 Agent

如果这台机器上以前跑过 Dashboard,再看:

4. 卸载 Dashboard

如果就是想把哪吒相关残留全清掉,选:

5. 全量移除哪吒

执行完以后,回到菜单再选一次:

1. 复查详情

确认没有残留服务。

关于 nezha-agent-xxxx.service

有些机器上的 Agent 服务名不是固定的 nezha-agent.service,而是类似:

nezha-agent-553593a.service

这种只 stop / disable 还不够,systemd 里可能还会留下 unit 文件。

脚本会尽量自动找到真实的 unit 文件路径,删除后再执行:

systemctl daemon-reload
systemctl reset-failed

这样复查时就不会只剩一个服务残影。

如果你还在用哪吒

那就别卸,选:

2. 升级建议

升级前记得备份:

  • 哪吒安装目录
  • Dashboard 的 data/config.yaml
  • Docker Compose 文件,如果你是容器部署

升级到 v2.0.13 或更新版本后,再跑脚本复查。

如果 Dashboard 曾经对公网开放过,我建议额外做几件事:

  • jwt_secret_key
  • 换 Agent 密钥
  • 让旧登录会话失效
  • 看一下反向代理和访问日志

配置文件不要贴到群里,也不要贴论坛,里面可能有密钥。

批量处理时的命令

如果你要在多台机器上批量跑,也可以不用菜单。

只检查:

python3 nezha_guard_check.py --action check

输出 JSON:

python3 nezha_guard_check.py --action check --json

只看卸载清单,不执行:

python3 nezha_guard_check.py --action remove

执行 Agent 卸载:

python3 nezha_guard_check.py --action remove --apply --confirm REMOVE-NEZHA

全量移除:

python3 nezha_guard_check.py --action remove --target all --apply --confirm REMOVE-NEZHA

Windows 下把 python3 换成 py -3

最后

我自己这边主要就是拿它把以前装过的机器过一遍。

大家如果以前也装过哪吒,尤其是 VPS、NAS、小主机、Docker 宿主机,可以抽空跑一下。还在用就升级,不用了就卸掉。

收藏
送赞
分享

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则