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

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

披露日期: 2026-04-07

漏洞信息

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

相关标签

XSS存储型XSSOpen Source Point of SaleWeb安全CWE-79

漏洞概述

Open Source Point of Sale 是一款基于 PHP 和 CodeIgniter 框架的开源销售点应用程序。在 3.4.3 版本之前,该系统的每日销售管理表格中存在一个存储型跨站脚本(XSS)漏洞。由于 bootstrap-table 列配置中 `customer_name` 字段被设置为 `escape: false`,导致客户名称被直接渲染为原始 HTML。拥有客户管理权限的攻击者可以在客户的 `first_name` 或 `last_name` 字段中注入任意恶意 JavaScript 代码。当其他用户访问每日销售页面时,这些恶意代码将在其浏览器中自动执行,可能导致会话劫持或数据窃取。该问题已在 3.4.3 版本中修复。

技术细节

该漏洞的根本原因在于前端数据渲染配置不当。在受影响的 Open Source Point of Sale 版本中,每日销售管理页面使用了 Bootstrap Table 组件来展示销售数据。开发者在配置 `customer_name` 列时,将 `escape` 参数设置为 `false`。这导致该字段的数据在渲染时不会经过 HTML 实体编码处理,而是直接作为 HTML 原始代码插入到 DOM 结构中。

攻击者利用这一漏洞需要具备客户管理权限。攻击者可以通过编辑或新增客户功能,在客户的 `first_name` 或 `last_name` 输入框中注入恶意的 JavaScript 载荷(例如 `<img src=x onerror=alert(1)>`)。这些数据被存储在数据库中。当具有更高权限的管理员或其他员工访问“每日销售”页面查看报表时,系统从数据库读取包含恶意代码的客户名称,并在前端表格中直接渲染。受害者的浏览器解析到 HTML 标签和脚本后,会立即执行攻击者的代码,从而允许攻击者在受害者的会话上下文中执行操作,如窃取登录凭证或进行未授权操作。

攻击链分析

STEP 1
步骤1:获取权限
攻击者获取一个具有客户管理权限的低级别账户。
STEP 2
步骤2:构造载荷
攻击者构造包含恶意 JavaScript 代码的 HTML 标签,作为 XSS 载荷。
STEP 3
步骤3:注入恶意代码
攻击者通过客户管理接口,将载荷注入到客户的 `first_name` 或 `last_name` 字段中并保存。
STEP 4
步骤4:诱导访问
等待或诱导具有更高权限的用户(如管理员)访问系统的“每日销售”管理页面。
STEP 5
步骤5:代码执行
管理员浏览器加载页面,由于未转义渲染,恶意脚本在管理员浏览器上下文中执行。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// Payload to be injected into the customer name field (e.g., first_name or last_name) // This payload displays an alert box to confirm vulnerability execution var xssPayload = '<img src=x onerror=alert(\'CVE-2026-32712\')>'; /* Example HTTP Request to exploit the vulnerability: POST /index.php/customers/save/1 HTTP/1.1 Host: target.example.com Content-Type: application/x-www-form-urlencoded Cookie: [Attacker's Session Cookie] first_name=<img src=x onerror=alert('CVE-2026-32712')>&last_name=Doe&[email protected]&... */

影响范围

Open Source Point of Sale < 3.4.3

防御指南

临时缓解措施
在无法立即升级的情况下,建议管理员修改前端 Bootstrap Table 的配置,将 `customer_name` 列的 `escape` 属性设置为 `true`。同时,部署 Web 应用防火墙(WAF)规则以检测和拦截针对客户字段的脚本注入尝试。

参考链接

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