当前位置: 首页 > article >正文

【业务安全-02】业务逻辑漏洞之越权操作

越权

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

  • 水平越权:相同级别的用户,如用户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 的访问控制” 设计缺陷引起的漏洞,又叫做权限提升攻击,而水平越权访问是一种 “基于数据的访问控制” 设计缺陷引起的漏洞,两者在本质上完全不同。


http://www.kler.cn/a/2141.html

相关文章:

  • CPU性能优化--函数分组
  • 二叉搜索树Ⅲ【东北大学oj数据结构8-3】C++
  • uni-app商品搜索页面
  • 前端小白学习之路-Vben探索 vite 配置 - 1/50
  • 方正畅享全媒体采编系统reportCenter.do接口SQL注入漏洞复现 [附POC]
  • 【前后端】HTTP网络传输协议
  • 测试老鸟都在用的接口抓包常用工具以及接口测试工具都有哪些?
  • 【C++】二叉搜索树
  • WebService简单入门
  • python+django+vue全家桶鲜花商城售卖系统
  • 机器学习——无监督学习
  • 基于java下的Springboot框架实现幼儿园管理系统
  • 【洛谷刷题】蓝桥杯专题突破-深度优先搜索-dfs(6)
  • 使用GPT-4生成QT代码
  • 使用 Python 从点云生成 3D 网格
  • flex布局优化(两端对齐,从左至右)
  • 我的 System Verilog 学习记录(11)
  • C语言—文件操作
  • STM32之点亮一个LED小灯(轮询法)
  • 基于EB工具的TC3xx_MCAL配置开发04_ADC模块软件触发Demo配置
  • 蓝桥杯刷题冲刺 | 倒计时19天
  • 图神经网络的数学基本原理
  • MySQL注入秘籍【上篇】
  • 西瓜视频登录页面
  • MySQL 事务详解
  • ChatGPT在安全研究领域的应用实践