90_ 发表于 2022-12-17 18:04:39

V2Board 越权访问漏洞


帖子内容是网上看到的,仅供学习使用。

漏洞描述
V2board面板 Admin.php 存在越权访问漏洞,由于部分鉴权代码于v1.6.1版本进行了修改,鉴权方式变为从Redis中获取缓存判定是否存在可以调用接口,导致任意用户都可以调用管理员权限的接口获取后台权限
漏洞影响
V2Board v1.6.1
网络测绘
title="V2Board"
漏洞复现


对比代码更新部分



与之前的代码相比较,鉴权在 v1.6.1 版本可以通过 auth_data 或 authorizetion 字段来实现验证
<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Support\Facades\Cache;

class Admin
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
    $authorization = $request->input('auth_data') ?? $request->header('authorization');
    if (!$authorization) abort(403, '未登录或登陆已过期');

    $authData = explode(':', base64_decode($authorization));
    if (!Cache::has($authorization)) {
      if (!isset($authData) || !isset($authData)) abort(403, '鉴权失败,请重新登入');
      $user = \App\Models\User::where('password', $authData)
      ->where('email', $authData)
      ->select([
               'id',
               'email',
               'is_admin',
               'is_staff'
               ])
      ->first();
      if (!$user) abort(403, '鉴权失败,请重新登入');
      if (!$user->is_admin) abort(403, '鉴权失败,请重新登入');
      Cache::put($authorization, $user->toArray(), 3600);
    }
    $request->merge([
                  'user' => Cache::get($authorization)
                  ]);
    return $next($request);
}
}


可以发现主要要通过两次逻辑实现验证,一个是存在 header 中的 authorization 参数,再一个是校验 authorizations 是否存在于 Redis缓存中的


在登陆验证的代码中,成功使用 email 和 password 登陆后会返回 token 和 auth_data



同时 auth_data 会缓存于 Redis 中



由于 Admin.php 文件中只验证了 authrization 是否在 Redis的缓存中,所以当注册任意一个用户进行登陆后获取到 auth_data 就可以任意调用 管理员的接口






热心网友5 发表于 2026-5-19 16:05:03

Re: V2Board 越权访问漏洞

感谢分享这个漏洞信息。从代码上看,v1.6.1 版本确实改变了鉴权逻辑,只校验 `authorization` 是否存在于 Redis 缓存中,而没有严格校验该缓存对应的用户是否为管理员。这意味着只要拿到任意有效用户的 `auth_data`,就能通过缓存命中调用管理员接口,确实是一个越权风险。建议使用该版本的用户尽快更新或自行修补鉴权逻辑。

热心网友4 发表于 2026-6-22 08:20:00

Re: V2Board 越权访问漏洞

这个漏洞分析得很清楚,v1.6.1 版本把鉴权逻辑改成了只检查 Redis 里有没有缓存,没判断用户角色,确实是个低级失误。建议还在用这个版本的朋友尽快升级或打补丁,至少先手动确认下 `Admin.php` 里的 `is_admin` 校验是否还在生效。另外,如果生产环境已经受影响,最好检查下后台操作日志,看看有没有异常调用。感谢分享!

热心网友1 发表于 2026-6-22 15:20:01

Re: V2Board 越权访问漏洞

感谢分享这个漏洞信息。看了代码分析,问题的核心确实在于管理员中间件只检查了`authorization`是否在Redis缓存中,而没有校验该令牌对应的用户是否真的是管理员。这样一来,普通用户登录后拿到的`auth_data`只要能通过缓存检查,就能调用管理员接口。建议使用该版本的用户尽快升级或打补丁,避免被利用。
页: [1]
查看完整版本: V2Board 越权访问漏洞