对基于企业微信的 SCRM 系统(LinkWechat )代码审计
字数 1285 2025-08-06 12:20:51
LinkWeChat SCRM系统代码审计报告与安全加固指南
1. 系统概述
LinkWeChat是基于企业微信的开源SCRM系统,主要功能包括微信公众号管理、用户关系管理等。系统采用微服务架构,其中linkwe-gateway作为网关负责请求转发和身份验证。
2. 发现的漏洞及分析
2.1 微信公众号授权问题导致的越权漏洞
漏洞原理
系统提供/wxLogin接口允许通过微信登录后台功能,只要用户关注了相应微信公众号即可登录,导致非内部员工也能操作后台功能。
关键代码路径
- 授权入口:
com.linkwechat.web.controller.system.SysLoginController#wxLogin - 身份验证过滤器:
com.linkwechat.gateway.filter.AuthFilter#filter - Token创建:
com.linkwechat.web.service.SysLoginService#wxLogin - Token刷新:
com.linkwechat.framework.service.TokenService#createToken
漏洞利用流程
- 获取授权链接:
http://localhost:6180/auth/wxRedirect?redirectUrl=http%3A%2F%2Fdemo.linkwechat.net%2F%23%2FauthRedirect - 用户授权后获取code参数
- 使用code调用
/wxLogin接口获取Token - 后续请求携带Token即可访问后台功能
修复缺陷分析
初始修复方案通过检查Token中的login_type字段区分用户类型,但由于JWT密钥固定,攻击者可伪造Token修改login_type字段绕过限制。
修复建议
- 使用随机生成的JWT密钥,确保每次启动不同
- 加强Token验证逻辑,增加多因素验证
2.2 SQL注入漏洞
漏洞位置
SysDeptMapper.xml中使用了${ancestors}参数,导致SQL注入风险。
漏洞代码
<!-- 在SysDeptMapper.xml中 -->
<update id="updateDeptChildren" parameterType="java.util.List">
update sys_dept set ancestors =
<foreach collection="depts" item="item" index="index" separator=" " open="case dept_id" close="end">
when #{item.deptId} then #{item.ancestors}
</foreach>
where dept_id in
<foreach collection="depts" item="item" index="index" separator="," open="(" close=")">
#{item.deptId}
</foreach>
</update>
利用方式
构造恶意请求:
{
"deptId": 1,
"parentId": 999,
"ancestors": "if(1, sleep(1), 0)",
"deptName": "24rewr",
"deptEnName": "3",
"orderNum": "4",
"phone": "5",
"email": "1@q.com",
"status": "0",
"parentName": "parentName"
}
修复方案
- 将
${}替换为#{}参数化查询 - 增加操作权限校验
- 对输入参数进行严格过滤
3. 安全加固建议
3.1 身份验证与授权
- 实现基于角色的访问控制(RBAC)
- 增加多因素认证机制
- 定期轮换JWT签名密钥
- 实现Token吊销机制
3.2 输入验证与输出编码
- 对所有用户输入实施白名单验证
- 使用预编译语句防止SQL注入
- 对输出到HTML的内容进行编码
3.3 安全配置
- 禁用不必要的HTTP方法
- 设置安全HTTP头(X-Content-Type-Options, X-Frame-Options等)
- 实现完善的CORS策略
3.4 日志与监控
- 记录所有敏感操作日志
- 实现异常行为检测
- 设置安全告警阈值
4. 开发安全实践
- 实施安全编码规范
- 定期进行代码审计
- 建立漏洞管理流程
- 进行安全培训
5. 参考资源
- LinkWeChat官方仓库: https://gitee.com/LinkWeChat/link-wechat
- OWASP Top 10安全风险指南
- 企业微信开发文档
通过以上分析和建议,开发团队可以显著提升LinkWeChat系统的安全性,防止类似漏洞的发生。