越权漏洞

概述

如果使用A用户的权限去操作B用户的数据,A的权限小于等于B的权限,如果能够成功操作,则称之为越权操作。

实例

水平越权

登陆lucy的号子,可查看lucy个人信息。尝试将url中username改为kobe,回车。结果显示出了kobe的信息。故此处存在平行越权漏洞。

垂直越权

登陆管理员账号

添加用户信息

抓到请求包如下

1
2
3
4
5
6
7
8
9
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Content-Type: application/x-www-form-urlencoded
Content-Length: 84
Connection: close
Referer: http://127.0.0.2:1314/vul/overpermission/op2/op2_admin_edit.php
Cookie: PHPSESSID=6kb0laqj52ui36gmi04j4vg118
Upgrade-Insecure-Requests: 1

username=zxw&password=x&sex=x&phonenum=x&email=x&address=x&submit=%E5%88%9B%E5%BB%BA

现在尝试以普通管理员身份登陆。发现不能添加成员信息。只能查看。现尝试进行越权操作。

以普通管理员的登录态,提交添加成员的post请求。发现成功添加,说明后台对权限的验证有问题。存在垂直越权漏洞。

总结

一般越权漏洞容易出现在权限页面(需要登录的页面)增、删、改、查的的地方,当用户对权限页面内的

信息进行这些操作时,后台需要对当前用户的权限进行校验,看其是否具备操作的权限,从而给出响应,

而如果校验的规则过于简单则容易出现越权漏洞。

因此,在在权限管理中应该遵守:

  • 1.使用最小权限原则对用户进行赋权;
  • 2.使用合理(严格)的权限校验规则;
  • 3.使用后台登录态作为条件进行权限判断,别动不动就瞎用前端传进来的条件;