越权漏洞
一、越权是什么
如果使用A用户的权限去操作B用户的数据,A的权限小于B的权限,如果能够成功操作,则称之为越权操作。 越权漏洞形成的原因是后台使用了 不合理的权限校验规则导致的。
一般越权漏洞容易出现在权限页面(需要登录的页面)增、删、改、查的的地方,当用户对权限页面内的信息进行这些操作时,后台需要对 对当前用户的权限进行校验,看其是否具备操作的权限,从而给出响应,而如果校验的规则过于简单则容易出现越权漏洞。
二、案例演示
这里通过pikachu靶场来演示水平越权和垂直越权
水平越权
这里有一个登录框,提示中有账号密码,我们随便输入一个账号
登录lucy的账号,可以看到url地址中有
username=lucy
,我们尝试输入其他用户
可以发现更改以后个人信息就从lucy变成了lili的了,这个就是水平越权
垂直越权
这也是一个登录框,提示中可以看到admin是管理员用户,pikachu用户是普通用户,我们登录普通用户
这里url地址没有输入点,我们尝试抓包查看
普通用户的包是这样的,有cookie值,我们试试抓一下管理员用户的
用管理员用户的cookie值登录普通用户
可以看到pikachu有了admin用户的功能,这个就是垂直越权
三、JWT
JWT是什么
JWT全名为JSON Web Token,是一种开放标准,用于在网络应用间传递信息的一种安全方式。它使用 JSON 对象作为信息的载体,具有轻量级、可扩展、易于传递等特点,并且可以加密和签名以确保安全性。JWT通常用于用户身份验证和授权,以及在不同系统之间传递信息。由于其便捷和高效的特性,它已经被广泛应用于各种Web应用中。
如何利用
JWT是由三部分组成,是以base64编码的,以.
分割,第一部分称之为头部,规定算法类型或者令牌类型,第二部分为
载荷,存储了用户的信息,第三部分为签名,用来验证JWT的完整性与真实性
四、进阶演示
这里通过WebGoat靶场演示
垂直越权
用第四关来演示,现在使用的用户是TOM,我们尝试删除投票的数据,发现只有管理员用户能操作,抓包查看
这个就是我们抓到的包,有
[JWT](https://jwt.io/)
加密,去解密看一下
解密后发现是我们登录的信息,还提示我们不是admin用户,我们更改一下
这里我们更改了签证方式为
none
,然后将false
改为了true
,然后发送数据包
回显包中显示我们更改成功了,回到页面刷新一下就回发现票数重置了
水平越权
用第七关来演示,我们让Tom帮我们买单,点击here看提示信息
有JWT编码,我们复制查看一下
这里给了Tom的信息,但是这个验证过期了,
iat
是开始时间,exp
是过期时间,我们可以通过我们可以通过时间转换器来查看
开始时间不用管,我们直接修改他的过期时间
改好之后我们就可以发送抓包了
这次抓到的数据包居然没看JWT值,结合提示发现JWT值可以在url地址中,说明JWT值也可以在其他地方出现,数据包中有
Authorization: Bearer null
,这个代表着他可以承载空值,我们将修改好的JWT值放到这里发包
他会直接提示我们已经完成了任务