Skip to content

v3.2.9存在权限控制缺陷可导致垂直越权访问 #113

Description

@glockie029

影响版本

master分支
v3.2.9

问题概述

在 Jeepay 运营端与商户端中发现两处权限控制相关问题:

  1. 运营端方法级权限校验未实际生效,导致已登录低权限用户可以访问其角色未授权的接口。
  2. 商户端当前用户修改密码接口存在对象级授权校验缺失,攻击者可以通过篡改请求参数影响非当前登录用户的密码。

以上问题均已在本地 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions