漏洞概述 JeecgBoot 的 SysUser 实体中 字段控制用户的数据可见范围。该字段本应仅通过部门负责人设置流程由系统内部修改,但 POST 接口存在提权漏洞:直接绑定完整 SysUser 实体,通过 持久化请求体,未对 做白名单过滤。该接口被 保护,但此权限被分配给了 test 角色(系统用户标配角色),所有注册用户默认拥有。 影响范围 userIdentity=1(或 null):普通成员,无法查看部门成员列表。 userIdentity=2:部门主管/上级,可查看本部门下的所有成员。 修复方案 1. 入口点修复:在 方法中,避免持久化错误的对象,确保只更新请求体中的非 null 字段。 2. 权限配置缺陷:检查并修正 权限的设计意图,确保仅允许用户修改个人信息。 3. userIdentity 字段保护:对 字段添加反序列化保护,防止通过 HTTP 消息转换器正常绑定 JSON 中的 。 POC 复现步骤 1. 攻击前:以 supervisor(主管)登录,调用 ,可见4条记录。 2. 攻击:以 testonly(下属)登录,调用 接口,将 设置为 2, 设置为 "a7d7e76d6c84325a40932163acdaa6"。 3. 攻击后:重新登录,再次调用 ,可见4条记录,权限提升成功。 利用代码 攻击前后对比 supervisor:可见4条记录(jeecg, zhangsan, supervisor, testonly)。 testonly:攻击前可见0条记录,攻击后可见4条记录,权限提升成功。