IPBUF安全漏洞报告
English
CVE-2026-39380 CVSS 5.4 中危

CVE-2026-39380 Open Source Point of Sale 存储型XSS漏洞

披露日期: 2026-04-07

漏洞信息

漏洞编号
CVE-2026-39380
漏洞类型
存储型跨站脚本攻击 (Stored XSS)
CVSS评分
5.4 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
需要交互 (UI:R)
影响产品
Open Source Point of Sale (OSPOS)

相关标签

XSSStored XSSOSPOSCodeIgniterWeb Security

漏洞概述

Open Source Point of Sale是基于PHP和CodeIgniter框架的Web销售点应用。在3.4.3版本之前,Stock Locations配置功能中存在一个存储型跨站脚本(XSS)漏洞。由于应用程序未能正确过滤用户输入的stock_location参数,攻击者可以注入恶意JavaScript代码。这些代码会被存储在数据库中,并在员工界面渲染时被执行。该漏洞已在3.4.3版本中修复。

技术细节

该漏洞属于存储型跨站脚本攻击(Stored XSS),主要影响基于PHP CodeIgniter框架构建的Open Source Point of Sale系统。漏洞具体出现在库存位置配置模块的后端处理逻辑中。由于开发者在3.4.3版本之前未对用户提交的`stock_location`参数实施严格的输入验证和上下文感知的输出编码,导致应用程序无法区分合法数据与恶意代码。

攻击者首先需要获得系统的低权限账户(PR:L),随后导航至Stock Locations配置界面。在此处,攻击者可以构造特定的恶意载荷(如JavaScript代码片段)并提交。应用程序错误地将此载荷作为普通文本存储在数据库中。攻击链的关键步骤在于受害者(如管理员)查看库存列表时,服务器从数据库读取数据并直接渲染至HTML页面,未进行HTML实体转义。此时,恶意脚本在受害者的浏览器上下文中运行,利用S:C(作用域改变)特性,可能窃取Session Cookie、进行钓鱼攻击或在用户权限下执行未授权操作,严重威胁系统的机密性与完整性。

攻击链分析

STEP 1
步骤1
攻击者使用低权限账户登录Open Source Point of Sale系统。
STEP 2
步骤2
导航至Stock Locations配置功能页面,准备添加或编辑库存位置。
STEP 3
步骤3
在`stock_location`参数字段中输入恶意JavaScript代码(如XSS Payload)并提交保存。
STEP 4
步骤4
服务器将恶意数据未经充分过滤即存储在数据库中。
STEP 5
步骤5
员工或管理员访问受影响的库存位置页面,触发数据渲染。
STEP 6
步骤6
恶意脚本在受害者浏览器中执行,可能导致会话劫持或数据窃取。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
<!-- PoC for CVE-2026-39380 (Stored XSS in OSPOS) An attacker with low privileges sends a POST request to the stock location save endpoint --> POST /index.php/stock_locations/save HTTP/1.1 Host: target-ospos.com Content-Type: application/x-www-form-urlencoded Cookie: [attacker_session_cookie] // Injecting malicious script into the vulnerable parameter stock_location=<script>alert('CVE-2026-39380 XSS');</script>&location_name=PoC_Test

影响范围

Open Source Point of Sale < 3.4.3

防御指南

临时缓解措施
在升级前,应严格限制对Stock Locations配置功能的访问权限。管理员应审查所有已配置的库存位置数据,确保未包含可疑脚本。

参考链接

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