zoukankan      html  css  js  c++  java
  • pikachu靶场——越权漏洞(Over Permission)

    概述

    如果使用A用户的权限去操作B用户的数据,A的权限小于B的权限,如果能够成功操作,则称之为越权操作。 越权漏洞形成的原因是后台使用了 不合理的权限校验规则导致的。

    由于没有用户权限进行严格的判断,导致低权限的账号(比如普通用户)可以去完成高权限账号(比如超级管理员)范围内的操作。

    一般越权漏洞容易出现在权限页面(需要登录的页面)增、删、改、查的的地方,当用户对权限页面内的信息进行这些操作时,后台需要对 对当前用户的权限进行校验,看其是否具备操作的权限,从而给出响应,而如果校验的规则过于简单则容易出现越权漏洞。

    因此,在在权限管理中应该遵守:

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

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

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

    平行越权:A用户和B用户属于同一级别用户,但各自不能操作对方个人信息,,A用户如果越权操作B用户的个人信息的情况称为平行越权操作。

    垂直越权:A用户权限高于B用户,B用户越权操作A用户的权限的情况称为垂直越权。

    越权漏洞属于逻辑漏洞,是由于权限校验的逻辑不够严谨导致的。

    每个应用系统其用户对应的权限是根据其业务功能划分的,而每个企业的业务又都是不一样的。

    因此越权漏洞很难通过扫描工具发现,往往需要通过手动进行测试。

    水平越权

    在pikachu靶场中,点击右上角的“点一下提示”可以看到账户和密码

    登陆页面成功后,点击查看个人信息,页面就出现了个人的信息

    通过bp抓包,可以看到每次点击查看个人信息,他就通过get请求提交到后台,而get请求中,他是把当前的用户名传到后台的。接下来测试修改用户名后提交,看是否存在漏洞。

    把请求发送到Repeater,修改username的值为kobe,提交后,可以看到获取了kobe这个用户的个人信息,说明存在着一个越权漏洞!

    或者直接在pikachu页面的URL中修改username的值后提交,获取到用户的个人信息

    查看源代码分析漏洞产生原因:通过代码可以看到后台通过get请求获取到当前登录态的值后并没有进行严谨的校验权限对比(比如传进来的值是kobe,通过校验后应该获取的是kobe的信息),使得用户可以越权获取别的用户的个人信息。

    垂直越权

    点击pikachu靶场右上角的提示,可以看到超级管理员和普通用户的账户密码

    输入超级管理员的账号密码,登陆成功后,可以看到用户的信息

    点击添加用户,输入用户的信息后,点击创建

    创建成功后,打开burp suite,把抓取到的post请求的包发送到Repeater

    在Repeater中,点击Go后,可以看到显示的信息是和pikachu页面是一样的

    接下来回到pikachu页面,点击退出登录,在bp中点击Go后再点击Follow redirection(跟随重定向),可以看到bp显示的是和pikachu页面一样的画面,因为重定向之后,后台检测到当前登陆态已经退出登录

    在pikachu页面中登陆普通用户的账户,可以看到普通管理员只有查看权限,并没有添加或者修改用户权限

    接下来打开burp suite,获取普通用户登陆后的get请求,把get请求获取到的cookie复制下来

    Cookie: PHPSESSID=6n3juhvf93hh91p0n0icqu6mre

    把之前bp获取到的超级管理员的post请求发送到Repeater中

     打开Repeater,把Repeater中的cookie替换成我们复制保存下来的普通用户的cookie后提交

    接下来返回到pikachu页面,点击刷新,可以看到多出了一个用户,说明存在着一个垂直越权漏洞,也就是说我们可以通过普通用户去进行超级管理员的操作。

    查看源代码分析漏洞原因:

    首先查看登陆页面的源代码,它会去判断输入的账户是否为管理员,如果是则进入管理员页面,否则就进入普通用户页面

    添加用户的源代码中,登录态只是通过$_SESSION去取到账户和密码,只是去判断当前的用户有没有登陆,但它没有去验证当前用户的权限,导致存在垂直越权漏洞!

  • 相关阅读:
    [LeetCode] Power of Three 判断3的次方数
    [LeetCode] 322. Coin Change 硬币找零
    [LeetCode] 321. Create Maximum Number 创建最大数
    ITK 3.20.1 VS2010 Configuration 配置
    VTK 5.10.1 VS2010 Configuration 配置
    FLTK 1.3.3 MinGW 4.9.1 Configuration 配置
    FLTK 1.1.10 VS2010 Configuration 配置
    Inheritance, Association, Aggregation, and Composition 类的继承,关联,聚合和组合的区别
    [LeetCode] Bulb Switcher 灯泡开关
    [LeetCode] Maximum Product of Word Lengths 单词长度的最大积
  • 原文地址:https://www.cnblogs.com/QingR/p/13289193.html
Copyright © 2011-2022 走看看