第八章 越权漏洞
1.越权漏洞原理及水平越权案例演示
一般出现在登录态的页面上
场景演示
测试一下,看一下等点击查看个人信息时提交了什么内容到后台
提交了一个get请求,把当前登录人的用户名传到了后台,后台把对应信息显示出来。
我们尝试改一个名字
显示出来
当前登录的人是lucy,但是在lucy的登陆状态下能看到其他人的信息。
查看一下后台代码
通过GET方法获取到用户名,然后直接对用户名所对应的信息进行了查询,把它返回到前端。
问题在于,这是一个登录态页面,只有登录的人才能看,而且应该规定登录的人只能看自己的信息无法看他人的信息。当点击个人信息查询时,后台除了获取用户名以外,还要还需要判断对应的请求是不是当前这个用户名发过来的。
2.垂直越权漏洞
思路:
先用超级管理员账号登录一下,登陆之后对超级管理员独一无二的权限(例如新增账号)进行执行,执行之后,把新增账号的这个数据包抓取下来,再退出超级管理员登录。
这时切换到普通管理员权限上,把刚刚抓取的数据包用普通管理员身份进行重放。
成功即代表有垂直越权漏洞。
必测环节,尤其是在一些后台管理系统里面,有不同的权限。
场景演示
先登录超级管理员,添加一个用户,抓取一下数据包
已添加好
看一下数据包
这个时候重放数据包,肯定可以成功,因为目前还是超级管理员登录的状态。我们要退出登录,再重放,此时直接重定向到登陆页面,且没有添加用户成功。登陆上普通的(只有查看权限)
目前有一个yyy账号
获取一下普通用户的登录cookie
找到添加用户时的post请求,把这个的登录cookie换成普通用户的登录cookie。以普通用户的身份去操作超级管理员的操作。
重放一下,点一下重定向
跳到了登录态,刷新一下页面
多出来一个账户。说明存在垂直越权漏洞。
查看一下后台代码
登陆这里没什么问题
这里对登录态有一个判断,只有登录之后才能访问,这个没有问题。
但是验证登录态的时候出现了问题
这里,只是通过筛选取到了用户名和密码,只是判断了当前的用户有没有登录,但是并没有判断当前用户的权限是什么。
在这里后面还要继续判断,用户的级别等不等于1,如果不等于不让操作,等于才让操作。