登录
注册
开源
企业版
高校版
搜索
帮助中心
使用条款
关于我们
开源
企业版
高校版
私有云
模力方舟
AI 队友
登录
注册
【大赛通知】开源中国「2026上海开源软件应用创新大赛」火热报名中,百万奖池等你的项目
代码拉取完成,页面将自动刷新
开源项目
>
建站系统
>
新零售/网店/商城
&&
Watch
不关注
关注所有动态
仅关注版本发行动态
关注但不提醒动态
1.3K
Star
9K
Fork
4.5K
linlinjava
/
litemall
代码
Issues
17
Pull Requests
31
Wiki
统计
流水线
服务
JavaDoc
质量分析
Jenkins for Gitee
腾讯云托管
腾讯云 Serverless
悬镜安全
阿里云 SAE
Codeblitz
SBOM
开发画像分析
我知道了,不再自动展开
更新失败,请稍后重试!
移除标识
内容风险标识
本任务被
标识为内容中包含有代码安全 Bug 、隐私泄露等敏感信息,仓库外成员不可访问
litemall 商品详情在公开 Vue 页面存在存储型 XSS 漏洞
待办的
#IK5SVR
JunRoinxxX
创建于
2026-08-01 18:30
## 漏洞概述 litemall 的商品详情可由具备商品新增或编辑权限的后台用户写入,但服务端保存前未对 `goods.detail` 进行安全过滤。公开商品详情页随后通过 Vue 的 `v-html` 直接渲染该字段,形成存储型 XSS。 ## 影响版本 已静态核对 v1.4.0、v1.5.0、v1.6.0、v1.7.0、v1.8.0 及当前 master(commit `a1ef964a718b7277925b19ea26afe78ea3a1d325`)均存在该链路。 ## 数据流与代码位置 1. 后台写入入口: - `POST /admin/goods/create`,权限 `admin:goods:create` - `POST /admin/goods/update`,权限 `admin:goods:update` - `AdminGoodsService.validate` 校验商品名、货号、分类、品牌、规格和价格等字段,但不清洗 `GoodsAllinone.goods.detail`;随后 `goodsService.add/updateById` 将其原样持久化。 2. 公开读取入口: - `GET /wx/goods/detail?id=...` 返回数据库中的商品对象;源码明确说明用户可以不登录。 3. 危险渲染点: - `litemall-vue/src/views/items/detail/index.vue:48` 使用 `v-html="goods.info.detail"`。 初始化 SQL 中启用的“商场管理员”角色包含商品新增、编辑权限,因此写入者不必控制超级管理员账号;受影响页面可由匿名访客打开,攻击者与受害者可以是不同主体,并非 self-XSS。 ## 影响 当有商品编辑权限的低权限后台角色保存恶意 HTML 后,访问对应公开商品详情页的其他用户会在 litemall 前端域中触发脚本执行,可能影响同源页面数据与用户操作。 本问题已在授权的本地测试环境中以无害方式确认跨用户触发。为避免扩散可直接复用的攻击内容,此处不附可执行 payload。 建议分类:CWE-79。建议 CVSS 3.1:`CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N`(5.4)。 ## 修复建议 - 对允许富文本的商品详情使用可靠的 HTML allowlist sanitizer,并在服务端统一执行; - 如果业务不需要富文本,改用文本插值而不是 `v-html`; - 禁止危险标签、事件属性和危险 URL scheme,并增加回归测试。 ## 查重与独立性说明 已检索公开 Issue、CVE、GHSA 和 VulDB,未发现覆盖本精确 `goods.detail -> /wx/goods/detail -> v-html` 链路的记录。现有 GitHub Issue #567 是上传并公开提供活动文件导致的 XSS,涉及不同输入字段、接口、存储对象与修复位置。 本问题与专题正文问题也应分别修复:二者使用不同模型字段、写入 Controller/Service、默认业务角色、公开读取路由、受影响版本下界和前端文件。 源码:https://github.com/linlinjava/litemall
## 漏洞概述 litemall 的商品详情可由具备商品新增或编辑权限的后台用户写入,但服务端保存前未对 `goods.detail` 进行安全过滤。公开商品详情页随后通过 Vue 的 `v-html` 直接渲染该字段,形成存储型 XSS。 ## 影响版本 已静态核对 v1.4.0、v1.5.0、v1.6.0、v1.7.0、v1.8.0 及当前 master(commit `a1ef964a718b7277925b19ea26afe78ea3a1d325`)均存在该链路。 ## 数据流与代码位置 1. 后台写入入口: - `POST /admin/goods/create`,权限 `admin:goods:create` - `POST /admin/goods/update`,权限 `admin:goods:update` - `AdminGoodsService.validate` 校验商品名、货号、分类、品牌、规格和价格等字段,但不清洗 `GoodsAllinone.goods.detail`;随后 `goodsService.add/updateById` 将其原样持久化。 2. 公开读取入口: - `GET /wx/goods/detail?id=...` 返回数据库中的商品对象;源码明确说明用户可以不登录。 3. 危险渲染点: - `litemall-vue/src/views/items/detail/index.vue:48` 使用 `v-html="goods.info.detail"`。 初始化 SQL 中启用的“商场管理员”角色包含商品新增、编辑权限,因此写入者不必控制超级管理员账号;受影响页面可由匿名访客打开,攻击者与受害者可以是不同主体,并非 self-XSS。 ## 影响 当有商品编辑权限的低权限后台角色保存恶意 HTML 后,访问对应公开商品详情页的其他用户会在 litemall 前端域中触发脚本执行,可能影响同源页面数据与用户操作。 本问题已在授权的本地测试环境中以无害方式确认跨用户触发。为避免扩散可直接复用的攻击内容,此处不附可执行 payload。 建议分类:CWE-79。建议 CVSS 3.1:`CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N`(5.4)。 ## 修复建议 - 对允许富文本的商品详情使用可靠的 HTML allowlist sanitizer,并在服务端统一执行; - 如果业务不需要富文本,改用文本插值而不是 `v-html`; - 禁止危险标签、事件属性和危险 URL scheme,并增加回归测试。 ## 查重与独立性说明 已检索公开 Issue、CVE、GHSA 和 VulDB,未发现覆盖本精确 `goods.detail -> /wx/goods/detail -> v-html` 链路的记录。现有 GitHub Issue #567 是上传并公开提供活动文件导致的 XSS,涉及不同输入字段、接口、存储对象与修复位置。 本问题与专题正文问题也应分别修复:二者使用不同模型字段、写入 Controller/Service、默认业务角色、公开读取路由、受影响版本下界和前端文件。 源码:https://github.com/linlinjava/litemall
评论 (
0
)
登录
后才可以发表评论
状态
待办的
待办的
进行中
已完成
已关闭
负责人
未设置
标签
未设置
标签管理
里程碑
未关联里程碑
未关联里程碑
Pull Requests
未关联
未关联
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
未关联
分支 (
-
)
标签 (
-
)
开始日期   -   截止日期
-
置顶选项
不置顶
置顶等级:高
置顶等级:中
置顶等级:低
优先级
不指定
严重
主要
次要
不重要
参与者(1)
Java
1
https://gitee.com/linlinjava/litemall.git
git@gitee.com:linlinjava/litemall.git
linlinjava
litemall
litemall
点此查找更多帮助
搜索帮助
Git 命令在线学习
如何在 Gitee 导入 GitHub 仓库
Git 仓库基础操作
企业版和社区版功能对比
SSH 公钥设置
如何处理代码冲突
仓库体积过大,如何减小?
如何找回被删除的仓库数据
Gitee 产品配额说明
GitHub仓库快速导入Gitee及同步更新
什么是 Release(发行版)
将 PHP 项目自动发布到 packagist.org
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册