越权漏洞
什么是越权漏洞
以一个用户的权限可以操作其他用户的数据,如果其他用户的权限大于这个用户,那么就称之为越权
原理
越权漏洞形成的原因是后台使用了不合理的权限校验规则导致的
如何挖掘
一般越权漏洞容易出现在权限页面(需要登录的页面)增、删、改、查的的地方,当用户对权限页面内的信息进行这些操作时,后台需要对 对当前用户的权限进行校验,看其是否具备操作的权限,从而给出响应,而如果校验的规则过于简单则容易出现越权漏洞。
水平越权
用户去操作和他权限同一级别用户的数据称之为水平越权
案例
以pikach靶场为例
可以看到我根据提示对露西进行了登录
现在url关键字中将username的值进行修改为lili
可以发现为登录丽丽账户就可以进行越权查看
垂直越权
用户去操作比他权限高的用户的数据称之为垂直越权
案例
还是以pikach靶场为例,我们看到有两个用户一个是普通用户另一个是管理员
我们以管理员用户进行登录
进行到创建用户的页面复制url 再用pikachu的身份访问该页面
发现越权成功
burp插件
AUTHZ插件可以测试越权漏洞,这个插件可以清除cookie
JWT
jwt的全称是 java web token 是一种验证身份的方式
一般在请求包中,分为三部分分别为:头部、载荷、签名
用.进行分割,并且都是使用base64进行加密的
- 头部通常由两部分组成,算法类型和令牌类型,头部里一般包含
- “alg“:“hs256”,none 这是表示该密钥所用的加密算法这是一种混合算法
- “typ“:“JWT” 表示类型
- 载荷存储了有关用户或实体的声明和其他有关信息
- iss:JWT签发者
- sub:JWT所面向的用户
- aud:接收JWT的一方
- exp:JWT的过期时间,这个过期时间必须要大于签发时间 使用的是unix 纪元时间
- nbf:定义在什么时间之前,jwt都是不可用的
- iat:JWT的签发时间
- jti: JWT的唯一身份标识,主要用来作为一次性token,从而避免重放攻击
- 签名是对头部和载荷进行签名的结果,用于验证 JWT 的完整性和真实性。
JWT利用
- 先进行base64解码如何修改载荷里的数据,并把加密方式改为none,将签名清空,再编码回去
- 使用hashcat工具进行签名密钥爆破
将exp有效时间进行修改
hashcat -m 16500 要破解的token -a 3 -w 2 密码字典 --force
-m 16500 这里的16500对应的就是jwt的token爆破;
-a 3 代表蛮力破解
-w 3 可以理解为高速破解,就是会让桌面进程无响应的那种高速
防御
设计一个复杂的cookie值
采用多放认证