• Pikachu:Over Permission(越权漏洞)


    概述: 

      由于没有对用户权限进行严格的判断,导致低权限的账号(比如普通用户)可以去完成高权限账号(比如超级管理员)范围内的操作。常见的越权漏洞有水平越权和垂直越权两种。
      平行越权:
      A用户和B用户属于同一级别用户,但各自不能操作对方个人信息,A用户如果越权操作B用户的个人信息的情况称为平行越权操作。
      垂直越权: 
      A用户权限高于B用户,B用户越权操作A用户的权限的情况称为垂直越权。
      越权漏洞属于逻辑漏洞,是由于后台使用了不合理的权限校验规则,权限检验的逻辑不够严谨。每个应用系统其用户对应的权限是根据其业务功能划分的,而每个企业的业务又都是不一样的。因此越权漏洞很难通过扫描工具发现出来,往往需要通过手动进行测试。
      一般越权漏洞容易出现在权限页面(需要登录的页面)增、删、改、查的的地方,当用户对权限页面内的信息进行这些操作时,后台需要对 对当前用户的权限进行校验,看其是否具备操作的权限,从而给出响应,而如果校验的规则过于简单则容易出现越权漏洞。
    水平越权:
      进入页面,我们看到是一个登录页面,点击提示,里面有三个可供登录的账户:
      lucy/123456,lili/123456,kobe/123456
      我们随便登录一个,我这里登录了lili,然后点击查看个人信息:

       我们发现它是get型的数据,通过URL可以重新构造,比如我们把下面红色标明的用户名换成其他的用户名,我们看看能不能访问其他人的信息:

      http://192.168.11.1/pikachu-master/vul/overpermission/op1/op1_mem.php?username=kobe&submit=%E7%82%B9%E5%87%BB%E6%9F%A5%E7%9C%8B%E4%B8%AA%E4%BA%BA%E4%BF%A1%E6%81%AF

       发现竟然访问到了kobe的信息,不用密码验证,这是存在水平越权的。我们来看看代码(路径如下图所示),里面标记的部分并未对前台的值进行校验,也没有与登录态的关系进行绑定,直接使用传入的值:

    垂直越权:
      既然是垂直,那就肯定有上下级的关系,下级做上级的事,我们的关键就是cookie,事实上就是挂羊头卖狗肉,下级实现某种目的,还是要扯着上级的虎皮做事情,不然后台肯定不会鸟它的。要获取cookie,我们肯定就得抓包,所以这一关卡,我们还是得做个代理,用Burp Suite抓包。
      进入垂直越权页面,打开提示,这里有两个用户admin/123456,pikachu/000000,admin是超级boss:

       登录超级用户admin,我们发现在这里可以查看用户列表和添加用户,还可以删除用户:

       我们添加用户,然后在点击创建之前做个代理,用Burp Suite抓包,发现有一个登录状态的cookie:

       发送到Repeater,在抓包的页面我们点击Forward把包放出去,不然前端收不到数据肯定无法创建成功。然后我们在页面中退出登录,之后进入Repeater,我们点击重定向(Follow redirection),会重定向到登录的页面,因为在重定向之前,我们在火狐页面退出了admin,所以现在当然会要求重新登录:

       我们再次登录admin,发现新用户的创建成功:

      登录普通用户pikachu/000000,然后Burp Suite中抓到了包:

      我们发现了普通用户登录状态的cookie,把它复制下来,进入Repeater,因为我们除了超级用户的数据包,没有发送过别的数据包给Repeater,我们需要找到刚刚那个最初超级用户创建新用户时的数据包,然后重新发送给Repeater,因为上一个已经被我们给重定向放出去了(如下图找post数据,看下面什么时候出现我们创建用户的信息,那就是这个包):

       把新发给Repeater的包中的cookie改成下面的值:

      Cookie: PHPSESSID=da1a91dbbfeb1960181f00c90265131f

      现在处于登录状态的是普通用户,所以我们用超级用户的cookie是无法登录的,我们用原本的外壳,填入了普通用户的cookie,才能重定向后成功登录执行创建用户的这个包:

       然后在火狐页面解除代理,刷新后就会发现又多了一个一模一样的新用户,这是普通用户创建的:

       这样用普通管理员去做超级管理员的操作就是垂直越权,但是比较鸡肋 因为现实很难抓到超级管理员的包,但是为了防止这种越权漏洞的产生,在权限管理中应该遵守:

        1.使用最小权限原则对用户进行赋权

        2.使用合理(严格)的权限校验规则

        3.使用后台登录态作为条件进行权限判断,别动不动就瞎用前端传进来的条件

  • 相关阅读:
    记一次 css样式的使用
    Vue -- element
    Ubuntu系统 ,鼠标双击搜索框内容 ,内容会被自动删除
    MetInfo Password Reset Poisoning By Host Header Attack
    wechall writeup
    SQL常用语句
    PHP Tips
    PHP版本差异备忘录
    Docker入门
    JetBrains系列软件用法
  • 原文地址:https://www.cnblogs.com/FHBBS/p/12617914.html
Copyright © 2020-2023  润新知