越权漏洞学习-做你做不了的事情

news2025/1/11 14:49:57

(一)、什么是越权漏洞

1、了解越权漏洞:

越权漏洞是指一个用户或者一个攻击者通过利用系统中某一漏洞,可以获得超过其正常权限的权限。也就是说,越权漏洞会使攻击者能够执行未经授权的操作或访问受保护的资源

简单来说,你干了原本你不能干的事情,例如,原本是vip才能看的视频,你不充值,而是通过某一个方法也能看,这就是越权。通过实现越权的地方,这个地方就是存在越权漏洞

2、越权漏洞的分类:

水平越权:权限是同级别的,但是是给不同的对象使用。例如:一般不同的用户只有对自己信息修改的权限,如果出现用户A能对用户B的信息进行修改,这就是水平越权

垂直越权:从低权限到高权限的翻越。例如普通用户到了超级用户

交叉越权:水平越权与垂直越权的集合

 3、越权漏洞产生的原因

越权漏洞产生关键点:

  • 用户提交(主动或被动)的数据内容被带入到资源操作(增删改查)逻辑中
  • 后端程序未对请求操作资源的用户身份进行合理判断

越权漏洞产生的主要原因是由于程序在设计或者代码实现上没有考虑权限控制的问题。攻击者可以使用这个漏洞,通过修改或者篡改程序中的参数或数据,使得程序在处理之前没有对数据进行合理的授权验证,让攻击者获得程序中本不应该拥有的权限,从而进行攻击

举个例子,如上图,用户A只能对自己的订单15167,进行编辑,用户B只能对自己的订单15166进行编辑。这是正常情况,如果用户A在提交自己订单时候,对利用抓包工具对其抓包,然后把自己的订单号15167改为了15166,即用户A提交的信息,不是自己的订单,而是用户B的订单,如果后台程序没有对身份验证,之后就处理了A的请求。越权漏洞就这样产生。

4、越权测试规范

在越权测试的时候,是有一些要求的,如下:

  • 越权读取的时候,能读取到的真实数据不超过5组,严禁进行批量读取。
  • 帐号可注册的情况下,只允许用自己的2个帐号验证漏洞效果,不要涉及线上正常 用户的帐号,越权增删改,请使用自己测试帐号进行。帐号不可注册的情况下,如 果获取到该系统的账密并验证成功,如需进一步安全测试,请咨询管理员得到同意 后进行测试

(二)越权测试案例

1、水平越权

场景1;在某些购火车票、机票等功能,需要提交用户的身份id(用户的手机号,身份证、证件号等唯一标识),

场景2:在某些查询快递信息等功能,需要提交对象id(例如订单号、记录号)

场景3、在下载某些文件时候,如果文件非常长的大,文件都会有文件id,文件下载也是通过文件id下载

漏洞测试:

这些场景使用到的身份id、对象id、文件id,都是数字组成,在利用bp进行抓包之后,对这些id遍历爆破,从某个id开始,不断的+1递增,不断尝试爆破。如果能对其中一个,提交成功,购买车票成功、查询订单号成功、下载文件成功。这些不是属于自己的权限返回,这就是水平越权。可能严重情况的后果就是泄露用户的敏感信息
如果不是id,而是用户名,也可以采用字典爆破,使用id一般比较方便。
(注:爆破是只是为了方便检测是否有这个漏洞,如果检测到一个,已经到达了目的,建议就立马停止)

在修改用户名,测试越权漏洞:

 2、垂直越权漏洞:

在皮卡丘靶场有一个案例:

有两个账户,admin,和pikachu,其中,admin账户可以增加账户信息,pikachu没有这个增加账户这个权限。我们想做垂直越权,让pikachu也能够增加账户信息。

第一步,现在用admin增加账户信息,进行抓包,这一步,主要是为了得到提交添加用户信息的数据包

 第二步:查看pikachu的cookie信息,复制到刚刚抓到数据包的cookie字段中(服务器识别用户身份,就是根据cookie,这一步就是把请求用户的身份换成pikachu)

 

 这是靶场的案例演示,先需要管理员admin登录,抓包,再修改信息,提交数据包,这再现实中,确实不能够实现,这里也是展示一下这个垂直越权漏洞的案例

在现实中的,权限和人数往往成反比的,越高的权限,拥有的人越少。总不可能各个都是管理员吧,高权限的人往往比较少,负责管理一个系统,责任极其重要,不能随便给一个人高权限。

在登录时候,要识别登陆是否是管理员权限,一般采用白名单的方法判断,白名单的意思是,对于登录的用户,判断是否存在于管理员表中,如果存在就是判断为管理员,反之则不是。根据这一点中,开发者一般采用几种方法

方法一:利用前端js实现(概率较小)

在登录时候,直接在前端,判断是否管理员,这一种可能是没有接触安全意识的开发者使用,这的确可能发生。因为一般高权限的用户非常少,只需要判断该用户是不是在高权限用户中,就可以。
 

针对这个方法,直接禁用js的触发方法,就可以直接绕过。(轻轻松松的,就进入了)

方法二:带入数据库中查询(概率交大)
 

在这一方法中,有两种情况:

  • a:有一些开发者,是直接把所有的管理员信息,存放到一个表中,在登录时候,会到这个表中查询,判断登录用户是不是管理员账户
  • b:会在用户表中添加一个角色字段,来判断是否是管理员,例如user_type、user_status、role_id、is_admin等

 所以,在垂直越权漏洞测试中常见的测试点:

  • 注册用户时,是否包含角色相关字段。例如,在注册的时候,对其抓包,发现一个字段role_id,这个可能是角色判断字段,而且值为1,就可以尝试测试,更改值为0,或者2,进行测试,然后登录查看,如果存在管理员权限,说明这里就存在垂直越权
  •  cookies中是否包含角色相关字段,一些网站开发是把判断角色的信息是放在cookie中,对其抓包之后,查看cookie,是否存在该相关信息。

下面是一个根据cookies中,查看是否包含角色相关字段的案例

在注册用户时候,对其抓包,发现cookie中含有admin字段

 然后修改admin的值为1,进行提交,发现登录用户变成了管理员权限

 

 (三)总结

  1. 越权漏洞的主要产生原因是在程序开发过程中没有充分考虑权限控制的问题,攻击者可以通过篡改参数或者数据,获得不应该拥有的权限或者资源。
  2. 越权漏洞对于系统的安全性和稳定性产生极大的威胁,攻击者可以窃取敏感信息、篡改数据或者破坏系统的正常运行。
  3. 防范越权漏洞的措施包括严格的权限控制、数据合法性验证、代码审计、修复已知的漏洞以及安全编程实践等。
  4. 对于网站或者应用程序的管理员来说,定期进行安全审计和漏洞扫描是必要的,及时修复已知的漏洞可以在攻击发生前消除安全风险。
  5. 最后,对于用户来说,在使用各种在线服务时,应当遵守一些常规的安全措施,例如不轻信陌生人的信息或链接,不在公共场合或者不安全的网络环境下登陆敏感账户等。同时,不要轻易泄露自己的个人信息,保护好自己的账户密码等敏感信息。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/680085.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

从开发人员的视角面对c盘容量紧缺的一些方案

前言 随着时代的发展,固态价格不断地下降,电脑硬盘容量水平线在不断地上升,近几年新出的主流笔记本自带固态容量也基本上在256G以上。所以通常不会有容量不够而带来的烦恼。个人用户往往是因为视频、游戏等文件占用了大量容量,针…

mmrotate调研

mmrotate调研 MMrotate是什么? ​ 在真实场景中,我们见到的图像不都是方方正正的,比如扫描的图书和遥感图像,需要检测的目标通常是有一定旋转角度的。这时候就需要用到旋转目标检测方法,对目标进行精确的定位&#x…

第三方库介绍——mosquitto

文章目录 概述程序(指令)说明安装服务端与客户端服务端指令配置配置文件:mosquitto.conf认证配置:pwfile权限配置:aclfile启动服务器,选择配置文件:mosquitto.conf 测试发布指令:订阅…

基于立创EDA的原理图设计进阶(实战开发一个小项目)

目录 学习目标 原理图设计进阶——空气质量检测仪 项目需求 1、功能性需求分析 2、非功能性需求 硬件框架图 元器件选型 MCU sensor LCD WIFI KEY PWOER 原理图设计 元件PCB封装设计-DIP,SOP 理论知识 直插式 贴片式 学习目标 1、熟悉电子产品设…

网络编程详细讲解

网络编程 网络通信 网络 ip 地址 1.概念:用于唯一标识网络中的每台计算机/主机 2.查看ip地址:ipconfig 3.ip地址的表示形式:点分十进制XX.XX.XX.XX 4.每一个十进制数的范围:0~255 5.ip地址的组成网络地址主机地址&#xff0…

团体程序设计天梯赛-练习集L2篇①

🚀欢迎来到本文🚀 🍉个人简介:Hello大家好呀,我是陈童学,一个与你一样正在慢慢前行的普通人。 🏀个人主页:陈童学哦CSDN 💡所属专栏:PTA 🎁希望各…

Python3学习之列表

目录 1.访问列表中的值 2.更新列表 3.删除列表元素 4.Python列表脚本操作符 5.Python列表截取与拼接 6.嵌套列表 7.列表比较 8.Python列表函数&方法 序列是 Python 中最基本的数据结构。序列中的每个值都有对应的位置值,称之为索引,第一个索…

Go语言doc

1、Go语言doc go doc 命令可以打印附于 Go 语言程序实体上的文档,我们可以通过把程序实体的标识符作为该命令的参数来 达到查看其文档的目的。 所谓Go语言的程序实体,是指变量、常量、函数、结构体以及接口,而程序实体的标识符即是代表它们…

JDBC 和数据库连接

JDBC 和数据库连接 基本介绍 JDBC为访问不同的数据库提供了统一的接口,为使用者屏蔽了细节问题。Java程序员使用JDBC,可以连接任何提供了JDBC驱动程序的数据库系统,从而完成对数据库的各种操作。JDBC的基本原理图[重要&#xff…

CSDN 个性化推荐系统的设计和演进

个性化推荐项目 个性化推荐的设计和演进项目概览项目梳理依赖管理实现代码的重构和改进持续演化 个性化推荐的设计和演进 CSDN 的个性化推荐系统,是从既有的推荐项目中剥离出来的一个子项目,这个项目随后移交到了我们AI组。在近一年的时间内&#xff0c…

机器学习实战|第5周|第3章:无监督学习与数据预处理|3.3降维|16:00~17:55

目录 一、降维的动机 (1)数据压缩 (2)数据可视化 (3)降维的弊端 二、什么是维度的诅咒? 三、数据集被降维后能否逆转 四、降维的主要方法 (1)投影 (2)流形学习 五、PCA PCA可以用来给高度非线性数据集降维吗? 假设在一个1000维数据集上执行P…

最优化理论中的惩罚函数法:概念、推导和应用

目录 1. 引言 2. 惩罚函数法的概念 2.1 惩罚函数法的基本思想 2.2 惩罚函数的定义 2.2.1 符号性质 2.2.2 惩罚性质 2.2.3 连续性质 2.3 惩罚函数法的推导 2.4 惩罚函数法的特点 2.4.1 灵活性 2.4.2 通用性 2.4.3 近似解 2.4.4 收敛性 3. 推导过程 3.1 问题建模 …

Redis实战案例6-缓存穿透及其解决案例

1. 缓存穿透 缓存穿透是指在缓存中查找一个不存在的值,由于缓存一般不会存储这种无效的数据,所以每次查询都会落到数据库上,导致数据库压力增大,严重时可能会导致数据库宕机。 解决方案: 方法一:缓存空对象…

【Python】异常处理 ② ( 捕获所有类型的异常 | 默认捕获所有类型异常 | 捕获 Exception 异常 )

文章目录 一、Python 默认捕获所有类型异常1、默认捕获所有类型异常 - 无法获取异常类型2、代码实例 - 默认捕获所有类型异常 二、Python 捕获所有类型异常 - 捕获 Exception 异常1、捕获 Exception 类型异常 - 可获取异常类型2、代码实例 - 捕获 Exception 异常 一、Python 默…

猴子都能听懂的 从 0 到 1 设计一个网络

标题开玩笑了哈,大家不要介意,就是说本文真的超级大白话! 话不多说,开始整活! 你很爱玩电脑游戏,你买了一台电脑,就一个人自己玩,也不需要和谁沟通,不需要与别人联机&am…

数据库判断分解的无损连接性

例题 关系模式R(ABCDE),F{A->C,C->D,B->C,DE->C,CE->A} 若分解成R1(AD)R2(AB)R3(BC)R4(CDE)R5(AE)判断是否具有无损连接性 画出如下表格如第一行:AD,那么在A,D的地方填入,i表…

C++ Primer 第9章顺序容器

9.1 顺序容器概述 确定使用哪种顺序容器 通常使用vector是最好的选择 9.2 容器库概述(本节所有容器均适用) 对容器可以保存的元素类型的限制 有些类没有提供默认构造函数,我们可以定义一个这种类型对象的容器,但我们在构造这种容器时不能只传递给它一个数目参数. 9.2.1 迭…

MySQL进阶SQL语句(二)

MySQL进阶SQL语句(二) 一、MySQL进阶SQL语句1.1 连接查询1.2 CREATE VIEW视图,可以被当作是虚拟表或存储查询1.3 UNION 联集1.4 CASE1.5 空值(NULL) 和 无值() 的区别1.6 正则表达式 二、存储过程2.1 存储过程定义2.2 存储过程的优点2.3 存储…

(秋招)闭环检测流程回顾

vins中的闭环检测和重定位 回环检测的关键就是如何有效检测出相机曾经经过同一个地方,这样可以避免较大的累积误差,使得当前帧和之前的某一帧迅速建立约束,形成新的较小的累积误差。由于回环检测提供了当前数据与所有历史数据的关联&#xf…

快速搭建node.js新项目和大事件后台项目

声明:参考https://zhuanlan.zhihu.com/p/464271490?utm_id0 参考:https://brucecai55520.gitee.io/bruceblog/notes/nodejs/ev_api_server.html#_1-4-%E5%88%9D%E5%A7%8B%E5%8C%96%E8%B7%AF%E7%94%B1%E7%9B%B8%E5%85%B3%E7%9A%84%E6%96%87%E4%BB%B6%E5…