IDORs:它们是什么,你如何测试它们?

article/2025/10/5 22:11:12

它是什么

IDOR:不安全的直接对象引用

照片由Muhannad Ajjan在Unsplash上拍摄

这些类型的漏洞源于访问控制问题。我们将用另一整章来讨论这些类型的漏洞。IDOR 一词因出现在 OWASP 前 10 名中而广受欢迎,但实际上它只是另一种类型的访问控制问题。IDOR 可以在水平和垂直权限提升中表现出来。要说IDOR,必须满足以下条件:

  • 请求中存在对象标识符,作为 GET 或 POST 参数
  • 必须存在损坏的访问控制问题,允许用户访问他们不应访问的数据

这些术语可能看起来很抽象,所以让我们看一个例子:

  • 获取 /invoice.php?id=12
  • 发布 /personalInfo.php

{personId:23,name:”tester”}

  • 获取 /invoices/1234.txt

在这些示例中,我们可以看到发出的 POST 和 GET 请求都包含一个标识符。在正常情况下,用户只能访问属于他们的发票或个人数据。但是,如果我们更改此标识符并返回不属于我们用户的数据,我们就有一个 IDOR。

这似乎是对 IDOR 的简单解释,但这基本上就是它的工作原理。复杂性来自于我们如何自动查找此内容以及涉及的不同用户。

您如何寻找 IDOR 漏洞?

我们基本上可以为此采取手动或半自动的策略。

手动

手动搜索 IDOR 可能是最简单的方法。在上一章中,我们讨论了您的主要攻击策略。这表明您应该在后台使用您的 MitM 代理浏览该网站。(参见一般攻击策略)。Burp 套件有一个显示参数化请求的选项:

我们可以使用这个过滤器向我们展示任何包含参数的请求。我们将不得不手动处理这些请求并将包含标识符的请求发送到转发器。

在转发器中,我们可以用一些有效的身份验证令牌替换服务器期望的身份验证方法。

  • 授权标头中的 JWT 可能需要替换
  • 会话 cookie 可能需要更换
  • 自定义身份验证方法可能已到位

您将需要确定正在使用哪种身份验证机制,并确保将任何过期的身份验证方法替换为有效的身份验证方法。通过登录并发出类似请求来获取新的有效令牌。

现在您的请求在转发器中工作,我们可以尝试替换请求中的标识符。

小心:你是一个漏洞赏金猎人,你正在测试一个实时生产环境。不要填写随机标识符。而是创建一个新帐户。登录该帐户并导航到相同的功能。

例子:

  • 我们有一个请求去 GET /invoice.php?id=12
  • 发送到中继器
  • 请求在已过期的授权标头中包含 JWT 令牌
  • 当您启动请求时,它将返回 500,因为 JWT 已过期
  • 登录应用程序并在您的代理选项卡中检查 http 历史记录
  • 最新请求之一应包含有效的 JWT 令牌
  • 复制该 JWT 令牌
  • 替换转发器中过期的 JWT 令牌
  • 您现在应该从服务器获得 200 OK 响应
  • 创建一个新账户
  • 登录该帐户并检查代理选项卡中的 http 历史记录
  • 最新请求之一应包含有效的 JWT 令牌
  • 复制该 JWT 令牌
  • 替换中继器中的 JWT 令牌
  • 如果您现在收到来自服务器的 200 OK 响应和发票的内容,那么您有一个 IDOR

半自动化测试

授权

对于授权,我们可以遵循与上述相同的原则,但是我们现在将讨论该工具的一些细节。这是一个 burp pro 扩展,所以如果你没有 burp pro,你可以跳过这一部分。

Authorize 将使用替换的身份验证方法 (3) 和空身份验证重复您发出的任何请求,以尝试模拟另一个用户和未经身份验证的用户。然后它将修改请求的响应与您发送的请求的响应进行比较。

  1. 您的所有请求都将显示在此处
  2. 这将显示访问控制是否正确实施
  3. 在此处填写负责身份验证的请求标头
  4. 我建议您设置一些过滤器
  • 仅限范围项目(不需要文本):这将确保您不会看到太多奇怪的与范围无关的请求
  • URL 不包含(文本):任何应该是公共信息的请求,我尝试在这里过滤掉

这就是 (2) 状态的含义:

强制:这意味着没有 IDOR。修改后的请求返回 403 禁止或任何其他错误代码。

Is Enforced?:这意味着修改后的修改后的响应没有返回错误代码,但与未经身份验证的请求不完全相同的响应

绕过:这不会自动保证 IDOR!这意味着修改后的响应与原始响应匹配。您仍然需要确认这是否是预期行为。通常,这将是预期的行为。是否是,取决于你的判断,这也是我建议你在破解之前通过探索它来真正了解你的目标的部分原因。始终通过以下方式手动确认

  1. 右键单击请求
  2. 将修改后的请求发送到转发器
  3. 重复请求并确认您正在查看不应公开的其他人数据

匹配和替换

由于授权基本上只是匹配授权标头并尝试将它们替换为用户提供的标头,因此我们可以在代理中设置类似的规则。

  1. 通常请求头会包含授权方法
  2. 填写登录用户的token
  3. 填写您要使用的第二个用户的令牌

现在,只要此规则处于活动状态,您就可以在应用程序中四处点击。如果您可以打开任何不应该公开的信息,我们手上有一个 IDOR。

要禁用此规则,只需取消选中它前面的复选框即可。


http://chatgpt.dhexx.cn/article/RE7uBiJh.shtml

相关文章

什么是IDOR(不安全的直接对象引用)

自从2010年开始,不安全的直接对象引用(IDOR)就已经成为了OWASP Top 10 Web应用安全风险中影响程度排名第四的安全漏洞了。 IDOR将允许一名授权用户获取其他用户的信息,意指一个已经授权的用户通过更改访问时的一个参数&#xff0…

Opencv—— 拟合直线

概念 最小二乘法是勒让德( A. M. Legendre)于1805年在其著作《计算慧星轨道的新方法》中提出的。 最小二乘法就是通过最小化误差的平方和,使得拟合对象无限接近目标对象。在图像处理中主要用于拟合线,通过求采样点距离误差最小的线,可以是直…

用线性回归拟合直线

#代码如下 //vDataX x点的坐标 //vDataY y点的坐标 //srcStart 要计算的x点 //outStart 输出的对应Y值 bool CalcLineFit(double srcStart, std::vector<double> vDataX,std::vector<double> vDataY, double& outStart) {double s_x_ag 0, e_x_ag 0;double…

梯度下降法拟合直线

给定300个样本点(x, y)。拟合直线&#xff1a; 设直线方程为y w*x b 其中&#xff1a;x&#xff0c;y是给定的样本点&#xff0c;作为训练集。w和b是待拟合的参数。 该问题可以转化为&#xff0c;优化函数 f(w, b) y - w*x - b 使用平方损失&#xff0c;转化为优化&…

OpenCV实战系列——拟合直线

OpenCV实战——拟合直线 0. 前言1. 直线拟合2. 完整代码相关链接 0. 前言 在某些计算机视觉应用中&#xff0c;不仅要检测图像中的线条&#xff0c;还要准确估计线条的位置和方向。本节将介绍如何找到最适合给定点集的线。 1. 直线拟合 首先要做的是识别图像中可能沿直线对…

Halcon 拟合直线

本文用 Halcon 的矩阵操作实现最小二乘拟合直线 *首先随机生成一组数据 Mx : [100:10:500] tuple_length(Mx, len) tuple_gen_const(len, 5, r) Ma : 2 Mb : 40 tuple_rand(len, noise) My : Ma * Mx Mb * noise gen_circle(ContCircle, My, Mx, r)接下来用矩阵进行最小二乘求…

边缘分析及直线和圆拟合——第5讲

一、直线和圆拟合概述 直线和圆的拟合,是视觉项目中非常常见的需求,但是对新手来说,在Halcon中实现却比较困难。 其基本思路都是: ① 分割出边缘,得到XLD(gen_contours_skeleton_xld、edges_sub_pix等) ② 将XLD进行分割、筛选(segment_contours_xld、select_conto…

【拟合专题】直线拟合

闲来无事&#xff0c;整理下拟合方面的一些方法&#xff08;部分内容参考gloomyfish、Grooveboy等博客&#xff0c;在此先行谢过&#xff09; 直线拟合方法主流方法有最小二乘、Hough两种&#xff0c;其他如Halcon上的最小距离也是最小二乘的思想&#xff0c;其他如Hough变换和…

直线拟合的三种方法

近日考虑直线拟合相关的知识&#xff0c;大概有所了解&#xff0c;所以打算进行一些总结。 直线拟合常用的三种方法&#xff1a; 一、最小二乘法进行直线拟合 二、梯度下降法进行直线拟合 三、高斯牛顿&#xff0c;列-马算法进行直线拟合 一、使用最多的就是最小二乘法&…

手把手教你整合最优雅SSM框架:SpringMVC + Spring + MyBatis

我们看招聘信息的时候&#xff0c;经常会看到这一点&#xff0c;需要具备SSH框架的技能&#xff1b;而且在大部分教学课堂中&#xff0c;也会把SSH作为最核心的教学内容。 但是&#xff0c;我们在实际应用中发现&#xff0c;SpringMVC可以完全替代Struts&#xff0c;配合注解的…

F-LOAM

欢迎访问我的博客首页。 F-LOAM 1. 传感器模型与特征提取1.1 传感器模型1.2 特征提取 2. 运动估计与畸变补偿2.1 匀速运动模型2.2 祛畸变 3. 位姿估计4. 地图创建与畸变补偿更新5. 附录5.1 位姿变换的传递性 6. 参考 1. 传感器模型与特征提取 1.1 传感器模型 机械式三维激光雷达…

MinIO入门-02 SpringBoot 整合MinIO并实现文件上传

SpringBoot 整合MinIO并实现文件上传 1、依赖 <!-- https://mvnrepository.com/artifact/io.minio/minio --> <dependency><groupId>io.minio</groupId><artifactId>minio</artifactId><version>8.3.9</version> </depen…

Invalid bound statement (not found): com.lyf.eduservice.mapper.EduCourseMapper.getpublishInfo

目录 问题分析&#xff1a; 解决方案&#xff1a; 问题分析&#xff1a; dao层编译后只有class文件&#xff0c;没有mapper.xml&#xff0c;因为maven工程在默认情况下src/main/java目录下的所有资源文件是不发布到target目录下的 解决方案&#xff1a; 第一步、在项目的po…

ELF

目录 一&#xff0c;目标文件格式 二&#xff0c;ELF 1&#xff0c;分段 2&#xff0c;工具 3&#xff0c;查看目标文件内容 一&#xff0c;目标文件格式 编译链接 https://blog.csdn.net/nameofcsdn/article/details/116654835 目标文件和可执行文件的逻辑结构是类似的…

littlefs

1、littlefs主要用在微控制器和flash上&#xff0c;是一种嵌入式文件系统。主要有3个特点&#xff1a; 1)、掉电恢复 在写入时即使复位或者掉电也可以恢复到上一个正确的状态。 2)、擦写均衡 有效延长flash的使用寿命 3)、有限的RAM/ROM 节省ROM和RAM空间 2、已有的文件系…

luffy-(13)

内容概览 支付宝支付介绍支付宝支付二次封装订单相关表设计生成订单接口支付前端支付宝回调接口 支付宝支付介绍 """ 项目中有需要在线支付功能,可以使用支付宝支付(沙箱环境)微信支付(需要有备案过的域名)云闪付我们的项目以支付宝支付为例支付流程使用官方…

【FLFL】

论文记录 1. 3.3《基于区块链的联邦学习技术综述》2. 3.4《Swarm Learning for decentralized and confidential clinical machine learning》3. 3.8《Blockchained On-Device Federated Learning》4. 3.11《FLchain: Federated Learning via MEC-enabled Blockchain Network》…

LYF95101A 是一款高性能、高集成度、具有快速

LYF95101A 概述 LYF95101A是一款高性能、高集成度、具有快速 关断特性的单通道同步整流控制器。支持CCM, QR和 DCM的多模式工作。通过智能的控制MOSFET的开通 和关断&#xff0c;可替代反激变换器次级整流的肖特基二极管 来实现效率的提高。 LYF95101A 内置自供电电路&#xff…

渗透测试简介

病毒&#xff1a;是在计算机程序中插入的破坏计算机功能或者数据的代码&#xff0c;能影响计算机使用&#xff0c;能自我复制的一组计算机指令或者程序代码&#xff1b; ●木马&#xff1a;是比较流行的病毒文件&#xff0c;与一般的病毒不同&#xff0c;它不会自我繁殖&#x…

介绍模糊测试(Fuzz Testing,Fuzzing)

介绍模糊测试&#xff08;Fuzz Testing&#xff0c;Fuzzing&#xff09; 一、什么是模糊测试&#xff1f; 模糊测试是一种自动或半自动的测试技术&#xff0c;常被用来发现软件/操作系统/网络的代码中的错误和安全性问题&#xff0c;其中用于输入随机的数据和不合法的数据被称…