昨天看到一条哪吒监控的漏洞提醒,今天想起来我以前也在不少服务器、NAS、小主机上装过这个东西。
有些是当时图新鲜装的,有些是临时看机器状态用的,后面不用了就忘了。问题是 Agent 这类服务不会因为你忘了它就自己停掉,它会一直在后台跑。
附件: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 stop、sc 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 宿主机,可以抽空跑一下。还在用就升级,不用了就卸掉。