全部
常见问题
产品动态
精选推荐
功能建议

已处理 待处理 {{opt.name}}
已处理 待处理
分析中 已回复 待规划 {{opt.name}}
分析中 已回复 待规划
【漏洞反馈】开源版发票详情接口水平越权(v5.2–v6.0.0,master 仍未修复),建议尽快补充归属校验

管理 管理 编辑 删除

各位好,我是安全研究人员,在研究 CRMEB 开源版代码时发现一个水平越权问题,已通过补天平台向厂商提交(审核中),同时在社区发帖反馈,希望推动 master 分支尽快修复。为避免被恶意利用,本帖只描述代码层面的成因与修复方式,不公开可直接照做的攻击请求。


【受影响版本】

CRMEB 单商户开源版(CRMEB-KY)v5.2 起(引入 /api/v2 路由后)至 v6.0.0。2026-09-22 拉取的 Gitee master 分支源码仍存在,未修复。


【成因(两处叠加)】

1. crmeb/app/api/controller/v2/user/UserInvoiceController.php 的 invoice() 方法调用服务层时漏传当前登录用户 uid(同文件内 delInvoice、setDefaultInvoice 均正确传入 (int)$request->uid(),唯此方法遗漏)。

2. crmeb/app/services/user/UserInvoiceServices.php 的 getInvoice(int $id, int $uid = 0):默认 $uid = 0 使 ($uid && $invoice['uid'] != $uid) 恒为假,归属校验被完全短路。

两者叠加后,任意已登录普通用户可通过自增 id 读取他人的发票记录,包含发票抬头、纳税人识别号、开户银行、银行账号、财务联系人电话/邮箱等企业敏感信息。


【同源缺陷】

crmeb/app/api/route/v1.php 第 329 行附近的积分订单详情接口 store_integral/order/detail/:uni 存在同样模式,可越权读取他人订单的收货人姓名、手机号、详细地址与核销码,建议一并排查。


【复现说明】

按官方仓库 help/docker 文档在本地 Docker 环境完整复现(未对任何线上站点做测试),复现材料已随补天报告提交。


【修复建议】

1. 控制器补传 uid:$this->services->getInvoice((int)$id, (int)$request->uid());

2. 服务层移除「默认 0 = 不校验」的危险设计,uid 改为必填,并在 DAO 查询条件直接带上 uid:$this->dao->getOne(['id' => $id, 'uid' => $uid, 'is_del' => 0]);

3. 全项目排查:凡服务层以「$uid = 0」作为跳过归属校验开关的方法,逐处核对调用方是否都传入 uid(建议全局搜索 int $uid = 0);

4. 临时缓解:对以自增 id 直接查询资源的详情接口增加频次限制与遍历检测。


愿意配合官方验证修复与复测。如有需要可私信沟通细节。

{{voteData.voteSum}} 人已参与
支持
反对
请登录后查看

桑氏(系) 最后编辑于2026-09-22 21:50:48

快捷回复
{{replySubmitting ? '提交中...' : '回复'}}
{{replySubmitting ? '提交中...' : '回复'}}
回复({{post_count}}) {{!is_user ? '我的回复' :'全部回复'}}
排序 默认正序 回复倒序 点赞倒序

{{item.user_info.nickname ? item.user_info.nickname : item.user_name}} LV.{{ item.user_info.bbs_level || item.bbs_level }}

作者 管理员 企业

{{item.floor}}# 同步到gitee 已同步到gitee {{item.is_suggest == 1? '取消推荐': '推荐'}}
{{item.is_suggest == 1? '取消推荐': '推荐'}} 【已收集】
{{item.floor}}# 沙发 板凳 地板 {{item.floor}}# 【已收集】
{{item.user_info.title || '暂无简介'}}
附件

{{itemf.name}}

{{item.created_at}}  {{item.ip_address}}
打赏
已打赏¥{{item.reward_price}}
{{item.like_count}}
分享
{{item.showReply ? '取消回复' : '回复'}}
删除
{{replySubmitting ? '提交中...' : '回复'}}
{{replySubmitting ? '提交中...' : '回复'}}

{{itemc.user_info.nickname}}

{{itemc.user_name}}

回复 {{itemc.comment_user_info.nickname}}

附件

{{itemf.name}}

{{itemc.created_at}}
打赏
已打赏¥{{itemc.reward_price}}
{{itemc.like_count}}
{{itemc.showReply ? '取消回复' : '回复'}}
删除
{{replySubmitting ? '提交中...' : '回复'}}
{{replySubmitting ? '提交中...' : '回复'}}
收起 展开更多
查看更多
打赏
已打赏¥{{reward_price}}
136
{{like_count}}
{{collect_count}}
添加回复 ({{post_count}})

相关推荐

{{replySubmitting ? '提交中...' : '回复'}}
{{replySubmitting ? '提交中...' : '回复'}}
问题:
问题自动获取的帖子内容,不准确时需要手动修改. [获取答案]
答案:
提交
bug 需求 取 消 确 定
打赏金额
当前余额:¥{{rewardUserInfo.reward_price}}
{{item.price}}元
请输入 0.1-{{reward_max_price}} 范围内的数值
打赏成功
¥{{price}}
完成 确认打赏

微信登录/注册

{{ wechatLoginError }}
切换手机号登录

{{ bind_phone ? '绑定手机' : '手机登录'}}

{{codeText}}
切换微信登录/注册
暂不绑定
CRMEB客服
CRMEB咨询热线 400-8888-794

扫码领取产品资料

功能清单
思维导图
安装教程
CRMEB开源商城下载 源码下载 CRMEB帮助文档 帮助文档
返回顶部 返回顶部
CRMEB客服