• 逻辑漏洞——权限控制问题


    一、权限控制

    1、什么是权限控制

    2、权限控制的方式

     (1)、ACL(访问控制列表

     (2)、RBAC(角色型访问控制)

     3、权限控制的问题

    权限控制有两个问题:一、未授权访问 二、越权访问

    (1)、未授权访问

     

    (2)、越权访问

    越权访问又分为:水平越权、垂直越权

    水平越权:同级别的角色越权访问,例如,不同部门的同级别的员工他们之间所访问的文件不一样,权限也不同,A部门越权访问了B部分的文件

    垂直越权:简单来说,就是对上级权限的获取,例如普通用户到管理员用户

     


    实例一、越权之水平越权

    原理:

    水平越权也叫横向越权,相同权限下不同的用户可以互相访问,比如A和B是相同权限下的用户,如果A能看到理论上只有B能看到的信息,或者A能执行理论上只有B能执行的操作,这就是水平越权。

    1、打开浏览器,访问http://ip/pikachu/vul/overpermission/op1/op1_login.php

    2、由于水平越权需要相同权限下不同的用户可以互相访问,所以需要先使用账户登录。点击“点一下提示”,找到给出的用户名密码。

    3、先使用lucy账户登录,登录成功后发现有“点击查看个人信息”的地方

    4、点击之后,查看lucy的个人信息

    5、发现查看lucy的个人信息的URL中参数username的值是用户名lucy;由此猜测该参数值是哪个用户名就回显哪个用户的信息,因此将username的值由lucy替换为lili,发现lucy用户信息的页面已经切换为Lili的用户信息,成功实现水平越权。

    实例二、权限控制之垂直越权

    1、打开浏览器,访问http://ip/webug/pentest/test/3

    2、输入用户名为:“tom”,密码为“123456”提交,登陆成功

    3、点击更改密码,跳转到修改密码页面,用户名显示在URL

    4、随便输入密码全部为:“test”

    5、启动Burp Suite抓包工具,设置参数和浏览器代理

    6、点击“更改密码”,提交输入的密码,Bp成功抓取数据包

    7、将“username”更改为“admin”

    8、点击“Forward”,转发数据包,切换到浏览器,密码更改成

    9、点击“确定”,关闭浏览器代理,输入用户名为:“admin”,密码为:“test”,点击“submit”提交用户名和密码,登录成功

    实例三、越权之垂直越权二

    原理:

    垂直越权也叫纵向越权,使用权限低的用户可以访问到权限较高的用户。比如A用户权限比B低,如果A可以访问理论上只有B才能访问的资源,或者执行理论上B才能执行的操作,这就是垂直越权。

    1、打开浏览器,访问http://ip/pikachu/vul/overpermission/op2/op2_login.php#

     

    2、由于垂直越权需要低权限用户访问高权限用户,所以需要先使用账户登录。点击“点一下提示”,找到给出的用户名密码。

     

    3、提示中给了两个用户,一个是高权限的管理员用户,一个是普通用户。先使用高权限管理员admin登录

     

    4、管理员admin用户可以查看用户列表、添加用户、删除用户等功能。点击“添加用户”,到添加用户界面,并填写添加用户的相关信息

     

     

    5、启动Burp Suite抓包工具,设置参数和浏览器代理

     

    6、点击“创建”,抓取数据包,并将其发送至“Repeater”重复发包模块,然后丢弃该数据包

     

    7、关闭代理,在登录界面使用低权限用户pikachu登录,该用户只有查看权限,然后再次打开代理

     

     

    8、刷新页面,抓取数据包

    9、复制低权限pikachu用户Cookie字段的PHPSESSID值到Repeater模块抓取的高权限admin用户添加用户的数据包中

     

    10、点击“Send”,发送数据包,然后切换至浏览器关闭代理

    11、在低权限用户pikachu登录的状态下,刷新查看用户的页面,发现用户添加成功,使用只有查看用户功能的低权限的Cookie成功执行了高权限才有的添加用户功能,实现了垂直越权(因为我按了多次send)


     这篇文章就先写到这里了

  • 相关阅读:
    小知识分享:控制层尽量别暴露这样的接口,避免横向越权。
    JDK8 stream常见用法
    策略模式与模板方法结合案例
    在预处理中用于预训练网络模型的均值和标准差的几种形式
    R语言dplyr包group_by函数和summarise_at函数计算dataframe计算不同分组的计数个数和均值、使用%>%符号将多个函数串起来
    【C语言】初识指针(终篇)
    C++继承(1)
    在C#中使用Halcon开发视觉检测程序
    2022年在uniapp中引入vant Weapp
    Transformers的RoBERTa model怎么使用word level的tokenizer
  • 原文地址:https://blog.csdn.net/weixin_54055099/article/details/127040975