越权访问漏洞

简介: 越权一般分为水平越权和垂直越权,水平越权是指相同权限的不同用户可以互相访 问;垂直越权是指使用权限低的用户可以访问权限较高的用户。

  • 水平越权测试方法主要是看能否通过A用户的操作影响B用户。
  • 垂直越权测试方法的基本思路是低权限用户越权高权限用户的功能,比如普通用户可 使用管理员功能

漏洞挖掘:
1、看参数:类似id、uid、sid、userid等参数时,遍历参数内容
2、看参数值:涉及到账号名、手机号等内容时,遍历参数值
3、看场景:个人信息(查看、编辑)、单号(购物订单、保险单号、地址编号等等)、密码找回(手机号、邮箱找回)、时间(业务规定时间范围内)、密码修改、密码找回、密码找回(邮件链接)等
4、cookie、构造API接口(需积累)

修复建议:
严格校验访问权限的控制以及对访问角色进行权限检查
1、避免直接使用用户ID、用户名等易被猜测构造的参数进行敏感操作。
2、对敏感数据存在的接口和页面做cookie,ssid,token或者其它验证。
3、前后端同时对用户输入信息进行校验,双重验证机制。

案例1:
修改手机号,遍历用户的信息
在这里插入图片描述
案例2:
密码修改时,把uid值替换为admin,这样管理员密码就被修改了
在这里插入图片描述
案例3: 长度限制
注册时,邮箱长度有限制,超过部分会被删除。利用特性可在注册后获取指定的邮箱内容
在这里插入图片描述
在这里插入图片描述

案例4: 暴露的加解密接口
实验目的是获取管理员administrator权限,删除一个账号
输入错误邮箱时,会生成一个cookie
在这里插入图片描述
而这个密文所对应的明文在前端展示
在这里插入图片描述
验证前面猜测,把修改notification值为数据包中的其他密文,让其对密文进行解密
结果是:wiener:1641904315209
也就是用户名:时间戳
在这里插入图片描述
获取管理员权限需要构造cookie结构为 administrator:1641904315209 的密文
所以利用邮箱报错进行加密
在这里插入图片描述
但是密文多了一部分,需要去除掉
在这里插入图片描述
无效的内容是23位:Invalid email address: ,解密时去掉23位
在这里插入图片描述
如图明文内容就是我们想要的,然后把密文赋值给stay-logged-in字段,获取管理员权限
在这里插入图片描述
在这里插入图片描述

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 越权漏洞了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值