• 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去取到账户和密码,只是去判断当前的用户有没有登陆,但它没有去验证当前用户的权限,导致存在垂直越权漏洞!

  • 相关阅读:
    C# Bitmap类型与Byte[]类型相互转化
    博客园添加个人Github链接
    C# Exception has been thrown by the target of an invocation(调用的目标已抛出异常) 解决办法
    C# 使用Renci.SshNet连接SSH远程服务器
    Oracle 查询当前数据库版本信息
    Oracle ORA-12569: TNS:包校验和失败
    Oracle Rollup()函数
    Oracle 字符串补零
    DataGridView 表格排序后颜色丢失
    DataGridView 实现最后一列的宽度自适应
  • 原文地址:https://www.cnblogs.com/00xHuang/p/13289193.html
Copyright © 2020-2023  润新知