IDOR漏洞

article/2025/10/5 22:13:14

IDOR漏洞

一、概述

IDOR,Insecure Direct Object reference,即"不安全的直接对象引用",场景为基于用户提供的输入对象进行访问时,未进行权限验证,是一类访问控制漏洞。在OWASP API安全前10名的API漏洞中排名第一。IDOR漏洞其实在越权(Broken Access Control)漏洞的范畴之内,也可以说是逻辑漏洞,或是访问控制漏洞,国内通常被称为越权漏洞。

二、权限绕过

1.改变HTTP请求方法

如果某个请求方法无效,那么可以试试其它方法,如GET, POST, PUT, DELETE, PATCH…等,一个通常的技巧就是用GET和POST进行互换,原因在于服务端的访问控制措施不够完善。

GET /users/delete/VICTIM_ID  --> 403 Forbidden
POST /users/delete/VICTIM_ID  --> 200 OK

2.路径穿越绕过

POST /users/delete/VICTIM_ID  -->  403 Forbidden
POST /users/delete/MY_ID/../VICTIM_ID --> 200 OK
POST /users/delete/..;/delete/VICTIM_ID --> 200 OK
POST /users/delete/.;/VICTIM_ID --> 200 OK
POST /users/delete/hello/%3baaaa/VICTIM_ID --> 200 OK

3.改变Content-type(内容类型)

Content-type: application/xml  -->  Content-type: application/json

4.更换参数类型

例如将字符类型的请求替换为数值型

GET /file?id=90ri2xozifke29ikedawOd
GET /file?id=302

将请求值替换为数组类型

{"id":111} --> 401 Unauthriozied
{"id":[111]}  --> 200 OK

5.大小写替换绕过

GET /admin/profile --> 401 Unauthorized
GET /ADMIN/profile --> 200 OK

6.用通配符替换ID

GET /api/users/<user_id>/ --> GET /api/users/*

7.给Web应用提供一个请求ID

如果Web应用在请求动作中没有ID号要求,那么可以尝试给它添加一个ID号看看会发生什么。比如添加一个随机ID号、用户ID、会话ID,或是其它的对象引用参数,观察服务端的响应内容。

GET /api_v1/messages --> 200 OK
GET /api_v1/messages?user_id=victim_uuid --> 200 OK

8.HTTP参数污染

用HTTP参数污染方式针对同一参数去给它多个不同的值,这样也是可以导致IDOR漏洞的。因为Web应用可能在设计时不会料想到用户会为某个参数提交多个不同值,因此,有时可能会导致Web后端接口的访问权限绕过。

GET /api_v1/messages?user_id=ATTACKER_ID&user_id=VICTIM_ID
GET /api_v1/messages?user_id=VICTIM_ID&user_id=ATTACKER_IDGET /api_v1/messages?user_id[]=ATTACKER_ID&user_id[]=VICTIM_ID
GET /api_v1/messages?user_id[]=VICTIM_ID&user_id[]=ATTACKER_ID

json格式也可以进行尝试

POST /api/get_profile
Content-Type: application/json
{"user_id" :<id_1>,"user_id" :<id_2>}

9.更改文件类型

切换请求文件的类型可能会导致Web服务端在授权处理上发生不同,如在请求URL后加上一个.json,看看响应结果如何。可以尝试不同的后缀名字,判断回显(例如.json .xml .config .zip)

GET /user_data/123 --> 401 Unauthorized
GET /user_data/123.json --> 200 OK

10.尝试不同版本的API

GET /v2/users_data/1234 --> 403 Forbidden
GET /v1/users_data/1234 --> 200 OK

三、任意密码重置

1、验证码未绑定用户

造成原因:输入手机号和验证码进行重置密码的时候,仅对验证码是否正确进行了判断,未对该验证码是否与手机号匹配做验证。
测试方法:在提交手机号和验证码的时候替换手机号为他人手机号进行测试,成功通过验证并重置他人密码。

2、修改接收的手机或邮箱

造成原因:用户名、手机号、验证码三者没有统一进行验证,仅判断了三者中的手机号和验证是否匹配和正确,如果正确则判断成功并进入下一流程。
测试方法:输入用户名获取验证码,修改接收验证码的手机号为自己的号码,自己手机成功接收验证码,提交到网站进行验证,验证成功并进入下一流程。

3、本地验证绕过

造成原因:客户端在本地进行验证码是否正确的判断,而该判断结果也可以在本地修改,最终导致欺骗客户端,误以为我们已经输入了正确的验证码。
测试方法:重置目标用户,输入错误验证码,修改返回包,把错误改为正确,即可绕过验证步骤,最终重置用户密码。

4、跳过验证步骤

造成原因:对修改密码的步骤,没有做校验导致可以直接输入最终修改密码的网址,直接跳转到该页面,然后输入新密码达到重置密码
的目的。
测试方法:首先使用自己的账号走一次流程获取每个步骤的页面链接,然后记录页面3对应的输入新密码的链接,重置他人用户时,获取验证码后,直接输入页面3链接到新密码的界面,输入密码重置成功。

image-20230227101238949

5、未校验用户字段的值

造成原因:在整个重置密码的流程中,只对验证码和手机号做了校验,未对后面设置新密码的用户身份做半判断,导致在最后一步通过修改用户身份来重置他人的密码。
测试方法:使用自己的手机号走流程,在走到最后一个设置密码的流程时,修改数据包里的用户信息。

6、cookie值的替换

造成原因:重置密码走到最后一步的时候仅判断唯一的用户标识cookie是否存在并没有判断该cookie有没有通过之前重置
密码过程的验证,导致可替换cookie重置他人用户密码。(cookie可指定用户获取)
测试方法:重置自己用户密码到达最后阶段,抓到数据包,并在第一阶段重新获取目标用户cookie,替换cookie?到我们抓取的数据包中,发包测试。

image-20230227102324541

7、修改信息时替换字段信息

造成原因:邮箱重置密码或者手机号码重置密码的时候,请求中没有明显的身份标识,可以尝试增加参数值来测试是否存在MVC数据对应自动绑定漏洞。比如增加email参数及对应的自用邮箱作为参数值,看看是否能收到密码重置链接。有关这个漏洞可以看看carry_your师傅视频中的案例,以及CF_HB发过的案例,也可以看看CplusHua有关模糊测试的ppt。
测试方法:修改个人资料的时候,抓取数据包,然后来修改数据包的参数和对应的值,参数名一般可以在其他地方找到,替换隐藏参数即可修改他人的密码等信息。

案例:

image-20230227102635189

然后抓包查看参数信息

image-20230227102651335

查看下这个页面的源代码,找到了一个参数loginld,这个参数是对应用户身份的,而我们发现上面的数据包里没有这个参数,那么我们是否可以自己添加上去呢?

image-20230227102746727

image-20230227102818144

8、任意邮箱用户重置

利用国际化域名(IDN)进行密码重置:https://www.punycoder.com/

我们假设目标网站地址为https://axin.com,本次存在漏洞的接口为https://axin.com/forget-password?email=,可以看到,这是一个再普通不过的通过邮箱重置密码的功能点,但是这个接口没能正确的处理Unicode字符,也就是说,当我输入邮箱victim@gmáil.com会被规范化为victim@gmail.com,然后目标站点axin.com就会把victim@gmail.com用户的重置密码链接发送到邮箱victim@xn--gmil-6na.com中,其中xn--gmil-6na.comgmáil.com的punnycode

所以,只要我去注册gmáil.com域名,并搭建一个邮件服务器就能够完成攻击。

当然测试的时候不需要去注册邮箱这么麻烦,只需要这几步。

  • 到目标站点用邮箱victim@gmail.com.3bfqygorkwzimx55ppnmvkandej47t.burpcollaborator.net注册一个测试账号
  • 然后在重置密码的接口处输入含有Unicode字符的邮箱地址:victim@gmáil.com.3bfqygorkwzimx55ppnmvkandej47t.burpcollaborator.net,发送
  • 如果目标存在漏洞,我们就可以在collobrator client上看到目标站点发送给我们的victim@gmail.com用户的重置密码链接了

9、session覆盖

例如:https://wy.zone.ci/bug_detail.php?wybug_id=wooyun-2014-085843

在忘记密码的功能处通过自己账号忘记密码发送邮箱修改密码地址,然后收到邮箱的链接地址不要打开,需要在同浏览器内打开网站还是忘记密码输入要修改的账号,进行到同样的步骤,然后打开我们的邮箱链接,就可以修改他人用户的密码。

四、交易金额篡改

1、直接修改交易金额

按照流程完成校验,然后在跳转支付的最后一步,修改支付金额。由于未对具体金额校验,支付成功之后可以获取商品。

2、正负值对冲

同时购买多个物品,部分商品数量改为负数,然后总金额会小于实际应付款金额。

3、商品id修改

商品价格检测和付款校验是分布进行的,首先利用低价A商品绕过商品价格检测,然后替换商品id进行B商品的购买,可以利用低价购买B商品。

4、利用多平台数据不同步的特性,进行支付绕过

案例:肯德基

利用肯德基APP客户端和微信客户端之间的数据不同步,首先在其中一个客户端用套餐兑换券下单待支付,在另一个客户端操作对兑换券退款,退款之后把订单取消可以重新获取一个兑换券,也可以再退款之后使用优惠券获得取餐码。

参考文章

越权漏洞测试技巧

IODR案例总结


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

相关文章

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

它是什么 IDOR&#xff1a;不安全的直接对象引用 照片由Muhannad Ajjan在Unsplash上拍摄 这些类型的漏洞源于访问控制问题。我们将用另一整章来讨论这些类型的漏洞。IDOR 一词因出现在 OWASP 前 10 名中而广受欢迎&#xff0c;但实际上它只是另一种类型的访问控制问题。IDOR …

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

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

Opencv—— 拟合直线

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

用线性回归拟合直线

#代码如下 //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…