【业务安全-02】业务逻辑漏洞之越权操作
创始人
2025-05-31 08:14:37

越权

越权即越权查看被人的信息,又分为水平越权和垂直越权,但是两者的本质都是一样的,只是越权的身份权限不一样而已

  • 水平越权:相同级别的用户,如用户A访问用户B

  • 垂直越权:普通用户到管理员,普通用户访问管理员

从上图可以看出权限问题,用户A和用户B都属于普通用户这一权限,权限最高的是管理员,所谓的越权关系是指同一权限的关系和高低权限的关系。

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

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

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

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

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

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

越权的漏洞类型还是挺多的,比如越权查看别人信息,越权修改密码,通过id进行订单遍历等。但是本质都是一样的,都是因为数据包中存在某个参数值,而这个参数值又决定了某个用户的身份。当将其值进行修改,就可以查看到别的用户的信息。

靶场实战

靶场环境:pikachu-master/PHPStudy PHP-5.4.45

抓包工具:burp

水平越权

用户A和用户B属于同一级别的用户,但双方不能操作对方的个人信息,如果用户A越权操作用户B的个人信息,我们称之为水平越权操作。进入靶场我们发现有三个用户lucy、lili、kobe,密码都为123456

  1. 进入靶场登录用户,查看信息,进行抓包

  1. 这里我们发现username可以修改的,我们修改username观察是否可以进行数据读取(这里的username就相当于id,具有唯一性)

由此可见,我们修改username就能查看其他用户的信息(tips:我们可以通过在网页中浏览用户,相同账号名不能创建、在url中进行id遍历等方式获取其他用户的username)

  1. 查看源代码,我们发现后台只判断是否登录并没有用session来校验

因为在查看信息的界面 只判断了是否登录 并没有判断是哪个用户

垂直越权

用户A权限高于用户B,用户B越权操作用户A的权限称之为垂直越权,进入靶场我们发现有两个用户admin是超级boss,密码是123456,pikachu只有查看权限,密码为000000

方式一:

  1. 首先我们登录管理员账号,进入添加用户界面的url,而这个url默认只有管理员才能访问,那么如何让普通用户也能进行访问呢?我们先记下这个url地址

  1. 退出管理员登录普通用户,然后访问记下的url,发现可以成功访问,并添加用户wyy

  1. 退出普通用户登录admin,发现wyy被添加成功

方式二:

  1. 重新登录管理员账号添加用户,利用burp进行抓包,将抓到的包放到repeater模块中

  1. 退出管理员登录后,然后用普通用户进行登录,复制普通用户的cookie值到repeater模块中替换掉原来的cookie

  1. 修改用户信息让添加的用户更清楚,然后点击send进行发送

  1. 回到浏览器刷新页面发现成功添加新用户,xzz为admin创建数据包时添加的,而xzq为重放数据包添加的

总结:

水平越权与垂直越权的区别:水平越权访问是一种 “基于数据的访问控制” 设计缺陷引起的漏洞,垂直越权是一种 “基于 URL 的访问控制” 设计缺陷引起的漏洞,本质上是所利用的漏洞不同获得的权限不同。垂直越权是一种 “基于 URL 的访问控制” 设计缺陷引起的漏洞,又叫做权限提升攻击,而水平越权访问是一种 “基于数据的访问控制” 设计缺陷引起的漏洞,两者在本质上完全不同。

相关内容

热门资讯

游戏服务器是什么怎么租用 游戏服务器是什么怎么租用 我是艾西,作为一个常年与游戏行业保持着高频率的服务器供应商&...
Flink-转换算子  基本转换算子         map(映射)         filter(过滤&#...
2023年金三银四大厂高频Ja... Java 面试 谈到 Java 面试,相信大家第一时间脑子里想到的词肯定是金三银四&#...
C语言手撕一个Hash表(Ha... 什么是Hash Table 散列表用的是数组支持按照下标随机访问数据的特性,所以散列表...
springMVC01- 文章目录今日目标一、SpringMVC简介1 SpringMVC概述问题导入1.1 SpringMV...
Electron开发的应用利用... 技术选型: 1、electron:21.3.3 2、electron-v...
【Elastic (ELK) ... 目录 一、ES 基本概念介绍 1.1 ES 是什么 1.2 ES 主要功能 1.3 ES 相关术语 ...
指定wb用户在指定日期范围内的... 一、操作步骤 只记录过程,不讲述原理 1.获取用户ID和cookie 用户ID在进入个...
sheng的学习笔记-IO多路... 基础概念IO分为几种:同步阻塞的BIO,同步非阻塞的NIO,...
接口自动化测试(Python+...  目录:导读 (1)接口自动化测试的优缺点 (2)Pyth...
重构条件-Consolidat... 重构条件-Consolidate Conditional Expression合并条件式二 1.合并...
【论文阅读】BiSeNet V... 前言BiSeNet V2延续了v1版本的双边结构,分别处理空间细节信息、高层语义信息。...
二、马尔可夫决策过程与贝尔曼方... 这里写目录标题1 马尔可夫性质2 马尔可夫过程3 马尔可夫奖励过程(Markov re...
golang端口重用 文章目录前言SO_REUSEADDR简介Python中的用法golang用法其他学习总结 前言 服...
Zabbix“专家坐诊”第18... 问题一 Q:Zabbix5.0版本,如图,请问这里怎么修改...
深度学习技巧应用5-神经网络中... 大家好,我是微学AI,今天给大家带来深度学习技巧应用5-神经网络中的模型...
Mongodb 常用基本语法与... 常用操作 1、 Help查看命令提示 db.help(); 2、 切换/创建数据库 use t...
java中Long型数据大小比... 起因 今天在做项目的时候,想构建一个树形结构,从数据库中查询出了所有数据...
【Linux】-- 进程概念 基本概念进程(Process):是操作系统进行资源分配的最小单位。一个进程是一个程序的一次执行过程。...
2023-03-22干活小计: transformer: position-embedding: 残差:我也会了 ad...
verilog(基础知识) 摘要:主要写自己的学习内容,可能不完整 概述 对硬件描述,主要是对芯片设计进行验证人员对其进行验证...
MySQL函数 - 字符串函数... 文章目录1 字符串函数2 数值函数3 日期函数4 流程函数 函数是指一段可以直接被另一段程序调用的程...
Word2010(详细布局解释... 目录一、界面介绍二、选项卡1、文件选项卡(保存、打开、新建、打印、保存并发送、选项&#...
ProTradex是链上衍生品... 目前,链上衍生品市场的总市值已经超过100亿美元,链上衍生品市场的产品类...
spring boot 集成 ... 要将 PostGIS 集成到 Spring Boot 应用程序中,需要按照以下步骤进行操作:1. 将...
【DDIM精读】公式推导加代码... 【DDIM精读】公式推导加代码分析。1.前言:ddim总览2.均值(μ\...
系统开发-McCabe复杂度(... 系统开发(上)-软件设计(三十二)https...
每日学术速递3.22 CV - 计算机视觉 |  ML - 机器学习 |  RL - 强化学习 | NLP 自然语言处理 ...
CCF-CSP题解 第二题(J... 目录 201312-2:ISBN号码 201403-2:窗口 20140...
在服务器上搭建nacos集群-... 搭建集群需要具备JDK环境,1个Nginx+3个nacos注册中心+1...