WEB漏洞-逻辑越权之水平垂直越权


解释

如果使用A用户的权限去操作B用户的数据,A的权限小于B的权限,如果能够成功操作,则称之为越权操作。越权漏洞形成的原因是后台使用了 不合理的权限校验规则导致的。

一般越权漏洞容易出现在权限页面(需要登录的页面)增、删、改、查的的地方,当用户对权限页面内的信息进行这些操作时,后台需要对对当前用户的权限进行校验,看其是否具备操作的权限,从而给出响应,而如果校验的规则过于简单则容易出现越权漏洞。

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

image-20211129195141970

通过更换的某个ID之类的身份标识,从而使A账号获取(修改、删除等)B账号数据。

使用低权限身份的账号,发送高权限账号才能有的请求,获得其高权限的操作。

通过删除请求中的认证信息后重放该请求,依旧可以访问或者完成操作。

演示案例

pikachu靶场

水平越权

(账号kobe密码123456)

image-20211129205751180

image-20211129205920522

点击查看个人信息抓包

image-20211129210141926

把kobe改为lucy

image-20211129210236796

lucy和kobe是同一级别通过修改数据包可以查看到其他用户这就是水平越权

通过用户注册可以获取到已经注册的用户名从而实行水平越权

垂直越权

管理员密码(admin 123456)

image-20211129211152976

image-20211129211239413

点击添加用户

image-20211129211405861

填写完成后点击创建并抓包

image-20211129211523067

把数据包发送到重发器然后丢弃

返回pikachu登录一个普通用户

user:pikachu passwd:000000

image-20211129211735982

这里没有添加用户权限

打开浏览器的抓包获取cookie

image-20211129212016804

将此cookie替换到前面保存的数据包中

image-20211129212107362

发送数据包

image-20211129212205161

通过普通用户使用了管理员的权限这就是垂直越权

前提条件:获取添加用户的数据包

怎么来的数据包

1.普通用户前端又操作界面可以抓取数据包

2.通过网站源码本地搭建自己去模拟抓取

3.盲猜

原理

前端安全造成:界面

判断用户等级后,代码界面部分进行可选显示

后端安全造成:数据库

user表(管理员和普通用户同表)

id,username,password,usertype 

1,admin,123456,1

2,liuyifei,11111,2

登录用户是通过usertype进行判断

如果在访问数据包中有传输用户的编号、用户组编号或类型编号的时候,那么尝试对这个值进行修改,就是测试越权漏洞的基本

越权检测工具

secscan-authcheck

https://github.com/ztosec/secscan-authcheck

privilegechecker

http://pan.baidu.com/s/1pLjaQKF

burp插件Authz

在burp商店进行安装

image-20211129222514800

image-20211129222606106

修复防御方案

1.前后端同时对用户输入信息进行校验,双重验证机制

2.调用功能前验证用户是否有权限调用相关功能

3.执行关键操作前必须验证用户身份,验证用户是否具备操作数据的权限

4.直接对象引用的加密资源ID,防止攻击者枚举ID,敏感数据特殊化处理

5.永远不要相信来自用户的输入,对于可控参数进行严格的检查与过滤