1:什么是越权漏洞?
由于没有对用户的权限进行严格的判断。导致低权限的账号(比如普通用户)可以完成高权限账号(例如超级管理员)范围内的操作(权限的越级),理解为“出格了”。
平行越权 两个用户首先是处于一个等级,即A用户和B用户属于同一级别用户,但各自不能操作对方个人信息,A用户越权操作B用户的个人信息。
垂直越权 q前提是,两个用户权限不一致,不是一个等级:A用户权限高于B用户,B用户越权操作A用户的权限的情况。
越权漏洞属于逻辑漏洞,其原因在于权限校验的逻辑不够严谨,每个应用系统其用户对应的权限时是根据其业务功能划分的。
注:由于每个企业的业务又都是不一样的。因此越权漏洞很难通过扫描工具发现出来,往往需要通过手动方式进行测试。
2:常见越权漏洞演示:前端用户平行越权。
**********************越权一般是出现在有登录态的页面:*****************************
*******************************************************************实验演示如下所示:******************************************************************************************************
如何测试?
点击查看个人信息,提交了什么内容到后台。点击个人信息的时候,实际上是提交了一个get请求,Get请求将当下登录态的用户名传到了后台,后台把对应的信息响应出来了。
虽然我们登录的是Lucy,但是将请求中的username改成其他人的,是否能查到其他人的信息呢?
垂直越权如何测试:
主要思路如下:
首先用一个超级管理员的账号去登录,登录之后,我们去对超级管理员独一无二的一个权限,例如只有超级管理员可以新加账号,就可以对新增账号这么一个操作进行执行,执行完之后,将新增账号操作的数据报给抓下来,抓下来之后,退出超级管理员的登录,切换的普通管理员的权限。然后将刚刚抓取到的数据包,以普通管理员的身份进行一次重放。
即:用普通管理员的权限去操作了一个只有超级管理员权限才能执行的操作,如果操作,那么后台存在垂直越权的一个漏洞。
****演示如下
首先用管理员的账号登录
添加一个用户:
以上是超级管理员的一个操作,然后将上述操作的数据包抓下来:
上面这个请求,实际上就是超级管理员添加用户操作
发送到repeater(如果这个时候重放一定是成功的,因为还是以超级管理员的身份登录的)这个时候需要返回浏览器,点击退出登录
点击退出登录:意味着不在拥有超级管理员的权限,也就是超级管理员是不在登录态的
退出之后,进入Burp
重定向:
重定向之后,重定向至登录页面,因为后台检测到你是没有登录的:
以普通身份登录:pikachu/123456
登录之后发现,普通管理员只有查看权限,没法进行添加用户
刷新一下页面,抓取当前登录态的数据包
然后复制当前登录态的cookie
找到以管理员身份添加新用户的那个请求,并发送至repeater:
发送repeater之后,将登录态cookie进行替换,替换成刚才复制普通用户的登录cookie
我们以普通用户的身份,去操作只有超级管理员才具有权限的操作。
点击重放,之后点击重定向:
直接跳到登录态里面了:
刷新浏览器页面:发现新增用户成功
说明这个是存在垂直漏洞,也就是通过普通权限可以做只有超级管理员才可以进行的
操作。后台没有对权限进行校验。
查看登录源码:
查看添加用户的请求,后台源码
验证登录态的函数时如何验证的?
只是通过Session里面取到了用户名和密码,也就是它只是判断了当前用户有没有登录但是并没有判断,当前登录用户的权限是什么;
因为按照业务逻辑,添加新用户是只有超级管理员才拥有的权限。
因此还需要再后面判断用户的级别是否等于1 ,等于1(超级管理员) 那么允许操作,反之则不行。