影响版本
master分支
v3.2.9
问题概述
在 Jeepay 运营端与商户端中发现两处权限控制相关问题:
- 运营端方法级权限校验未实际生效,导致已登录低权限用户可以访问其角色未授权的接口。
- 商户端当前用户修改密码接口存在对象级授权校验缺失,攻击者可以通过篡改请求参数影响非当前登录用户的密码。
以上问题均已在本地 Docker 环境中完成验证。
问题一:方法级权限未生效导致越权访问
位置
jeepay-manager/src/main/java/com/jeequan/jeepay/mgr/secruity/WebSecurityConfig.java
只配置了@EnableWebSecurity
@EnableWebSecurity
public class WebSecurityConfig{
@Autowired private UserDetailsService userDetailsServic
而运营端接口中大量使用了 @PreAuthorize 进行权限声明,例如:
jeepay-manager/src/main/java/com/jeequan/jeepay/mgr/ctrl/sysuser/SysLogController.java
@PreAuthorize("hasAuthority('ENT_LOG_LIST')")
@RequestMapping(value="", method = RequestMethod.GET)
public ApiPageRes<SysLog> list()
并且 Web 层规则为:auth.anyRequest().authenticated();
在该情况下,接口上的 @PreAuthorize 表达式不会被执行。实际验证中,低权限运营用户在不具备目标接口权限的情况下,仍可访问受 @PreAuthorize 标注的接口并获取数据。
实际漏洞细节请联系邮箱s1ldyd0x@gmail.com
影响版本
master分支
v3.2.9
问题概述
在 Jeepay 运营端与商户端中发现两处权限控制相关问题:
以上问题均已在本地 Docker 环境中完成验证。
问题一:方法级权限未生效导致越权访问
位置
jeepay-manager/src/main/java/com/jeequan/jeepay/mgr/secruity/WebSecurityConfig.java只配置了@EnableWebSecurity
而运营端接口中大量使用了
@PreAuthorize进行权限声明,例如:jeepay-manager/src/main/java/com/jeequan/jeepay/mgr/ctrl/sysuser/SysLogController.java并且 Web 层规则为:auth.anyRequest().authenticated();
在该情况下,接口上的 @PreAuthorize 表达式不会被执行。实际验证中,低权限运营用户在不具备目标接口权限的情况下,仍可访问受 @PreAuthorize 标注的接口并获取数据。
实际漏洞细节请联系邮箱s1ldyd0x@gmail.com