Skip to content

Expire user's valid session/tokens after admin deleteing user or changing user's password #333

@menghaining

Description

@menghaining

Description

When the admin deletes the user or changes the user's password, the user's current valid session/token has not expired, leading to the old session/token still being valid.
This would lead to CWE-613 insufficient session expire weakness.


Attack Example

  1. admin login, user1 login;
  2. admin delete user1 or changing user1's password to default;
  3. user1 can still operate with the old session/token which should be expired.

Deleting user by admin

@AdminRequired
@DeleteMapping("/user/{id}")
@PermissionMeta(value = "删除用户", mount = false)
public DeletedVO deleteUser(@PathVariable @Positive(message = "{id.positive}") Integer id) {
adminService.deleteUser(id);
return new DeletedVO(5);
}


Changing password

@AdminRequired
@PutMapping("/user/{id}/password")
@PermissionMeta(value = "修改用户密码", mount = false)
public UpdatedVO changeUserPassword(@PathVariable @Positive(message = "{id.positive}") Integer id, @RequestBody @Validated ResetPasswordDTO validator) {
adminService.changeUserPassword(id, validator);
return new UpdatedVO(4);
}

@PutMapping("/change_password")
@LoginRequired
public UpdatedVO updatePassword(@RequestBody @Validated ChangePasswordDTO validator) {
userService.changeUserPassword(validator);
return new UpdatedVO(4);
}

public boolean changePassword(Integer userId, String password) {
String encrypted = EncryptUtil.encrypt(password);
UserIdentityDO userIdentity = UserIdentityDO.builder().credential(encrypted).build();
QueryWrapper<UserIdentityDO> wrapper = new QueryWrapper<>();
wrapper.lambda().eq(UserIdentityDO::getUserId, userId);
return this.baseMapper.update(userIdentity, wrapper) > 0;
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions