大家好,又见面了,我是你们的朋友全栈君。
Over Permission(越权)
用户A 的权限小于用户B 的权限,此时用用户 A 的权限去操作用户 B 的数据,如果能够操作成功,就称之为越权操作。
越权漏洞一般容易出现在权限页面(需要登录的页面)增、删、改、查的地方。
越权漏洞形成的原因是后台使用了不合理的权限校验规则导致的。当用户对权限页面内的信息进行增、删、改、查的操作时,后台对当前用户的权限进行校验,看是否具备操作的权限,从而给出响应。如果校验规则过于简单,就容易出现越权漏洞。
防止越权漏洞
1、使用最小权限原则对用户进行赋权;
2、使用合理(严格)的权限校验规则;
3、使用后台登录态作为条件进行权限判断,不用前端传来的条件。
下面通过 pikachu 靶场里的 Over Permission 模块对越权的两种方式进行测试。
水平越权
是相同权限的两个用户进行越权操作。
比如普通用户 A 越权查看普通用户 B 的一篇邮件。
打开是一个登录界面。
根据提示,给出了三个账户:
lucy/123456
lili/123456
kobe/123456
我们尝试随便登录一个看看。
可以看到这些用户登录进去可以点击查看个人信息。
并且当我们点击查看的时候,它是进行了一个 GET 请求,将要查询的用户信息传递到后台。
可以发现这个 GET 请求就是一个 username 的值。尝试把这个值改为此页面存在的其他用户,看是否可以查看其他用户的个人信息。
不退出刚才 lucy 账号的登录状态,直接在 url 上把 lucy 改为 lili ,可以看到 lucy 的个人信息变成了 lili 的个人信息。
而此时 lili 是没有登录账号密码的,说明存在水平越权的漏洞。
垂直越权
是在不同权限的用户之间进行越权。
比如普通用户 A 越权而拥有管理员的权限,甚至超级管理员的权限。
打开界面,同样是一个登录界面。
通过提示,给出了
普通用户:pikachu/000000
超级用户:admin/123456
尝试登录普通用户 pikachu/000000 ,用户界面可以有查看的权限,查看存在的用户信息。
尝试登录超级用户 admin/123456
可以看到超级用户除了可以查看用户信息,还可以添加用户。
尝试在超级用户界面添加用户,点击创建,用 burp 抓下这个 post 请求的数据包。
然后点击 action 把这个包发送到 Repeater 模块。这个时候Repeater 模块就会把这个包保留下来。
回到 Proxy 代理界面,点击取消拦截数据包。
那么刚刚那个创建用户的 post 请求就会发送出去。
可以看到我们是利用超级用户 admin 创建了一个用户。
接下来退出 admin 用户,登录普通用户 pikachu 。
在点击登录的时候用 burp 拦截,对 pikachu 的登录信息进行抓包。
因为我们要用到 pikachu 这个普通用户的 cookie 登录信息。
还记得刚刚我们把超级用户创建用户的 post 请求放在了 Repeater 模块,上面也有一个 cookie 信息,这是超级用户的 cookie。
我们把 Repeater 模块上的超级用户 的 cookie 替换成刚抓到的 pikachu 登录信息的cookie 。
这里要先把 Proxy 界面的拦截数据包关闭,关闭后页面就进入了普通用户 pikachu 的登录界面。
然后在 Repeater 界面点击 Send 发送,会出现一个 Follow redirection 的按钮,点击进行重定向。
此时我们回到 pikachu 的用户界面,看到多了一个添加的用户。
第一个是前面用超级用户 admin 的登录权限添加的。
第二个是刚刚用普通用户 pikachu 的登录状态越权添加的。
后台没有判断我们发送的数据包的用户权限。直接执行了,造成了垂直越权漏洞。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/150596.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...