IDOR漏洞

news/2024/4/26 21:13:41/文章来源:https://blog.csdn.net/tomyyyyyy/article/details/129253457

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://www.luyixian.cn/news_show_75131.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

回归预测 | MATLAB实现GRU(门控循环单元)多输入单输出(多指标评价)

回归预测 | MATLAB实现GRU(门控循环单元)多输入单输出(多指标评价) 文章目录 回归预测 | MATLAB实现GRU(门控循环单元)多输入单输出(多指标评价)预测效果基本介绍程序设计参考资料预测效果 基本介绍 GRU神经网络是LST

Android SlidingPaneLayout实践

Android SlidingPaneLayout实践 可折叠设备在这里这一事实是无法回避的。在应用程序开发方面&#xff0c;它们带来了一些新的挑战。其中之一是可折叠设备的外形尺寸会根据折叠状态而变化。Android在设计上支持不同的外形尺寸&#xff0c;因此这很容易处理。但是&#xff0c;有…

软件测试面试题 —— 整理与解析(2)

&#x1f60f;作者简介&#xff1a;博主是一位测试管理者&#xff0c;同时也是一名对外企业兼职讲师。 &#x1f4e1;主页地址&#xff1a;&#x1f30e;【Austin_zhai】&#x1f30f; &#x1f646;目的与景愿&#xff1a;旨在于能帮助更多的测试行业人员提升软硬技能&#xf…

零基础入门网络安全,看这一篇就够了!

前景 很多零基础朋友开始将网络安全作为发展的大方向&#xff0c;的确&#xff0c;现如今网络安全已经成为了一个新的就业风口&#xff0c;不仅大学里开设相关学科&#xff0c;连市场上也开始大量招人。 那么网络安全到底前景如何&#xff1f;大致从市场规模、政策扶持、就业…

高精度真空度程序控制在真空解冻过程中的应用

摘要&#xff1a;为了解决目前各种真空冷冻过程中存在的真空压力还是人工手动调节&#xff0c;无法进行可编程准确自动控制的问题&#xff0c;本文提出了具体解决方案。解决方案的基本原理是根据动态平衡法&#xff0c;具体实现是依据不同的真空压力设定值分别采用电动针阀调节…

华为OD机试题,用 Java 解【斗地主】问题

最近更新的博客 华为OD机试题,用 Java 解【停车场车辆统计】问题华为OD机试题,用 Java 解【字符串变换最小字符串】问题华为OD机试题,用 Java 解【计算最大乘积】问题华为OD机试题,用 Java 解【DNA 序列】问题华为OD机试 - 组成最大数(Java) | 机试题算法思路 【2023】使…

第13天-仓储服务(仓库管理,采购管理 ,SPU规格维护)

1.仓储服务开发配置 1.1.加入到Nacos注册中心 spring:application:name: gmall-warecloud:nacos:discovery:server-addr: 192.168.139.10:8848namespace: 36854647-e68c-409b-9233-708a2d41702c1.2.配置网关路由 spring:cloud:gateway:routes:- id: ware_routeuri: lb://gmal…

TOSCA自动化测试工具

TOSCA由德国公司Tricentis研发&#xff0c;提供英文和德语两种版本。 目前他们的网上培训课程大约是2000一套&#xff0c;从初级到高级&#xff0c;从工程师到BA&#xff0c;有技术&#xff0c;也有测试管理。 TOSCA的思想是&#xff0c;不用会编程的测试人员可以直接上手自动…

GitHub 下载超过 28W 次的 Java 面试题库来袭,面面俱到太全了

“金三银四”、“金九银十” 一直被称为是跳槽的旺季&#xff0c;最近也有不少小伙伴找我咨询一些面试相关的问题。刚好小编最近获得一份收费 Java 面试题库&#xff01; 这些面试题都是互联网大厂真实流出的面试内容&#xff0c;每个问题都附带完整详细的答案&#xff0c;不像…

值得关注!可控生成!近期diffusion图像生成进展!

猜您喜欢&#xff1a;深入浅出stable diffusion&#xff1a;AI作画技术背后的潜在扩散模型论文解读戳我&#xff0c;查看GAN的系列专辑~&#xff01;一顿午饭外卖&#xff0c;成为CV视觉的前沿弄潮儿&#xff01;最新最全100篇汇总&#xff01;生成扩散模型Diffusion ModelsECC…

2023 Java 分布式 面试 大纲

前段时间 &#xff0c;公司部门的HR找到我&#xff0c;说来了几份简历 &#xff0c;都是三年所有的开发 让我面一下&#xff0c; HR那边 一面核对了基本的信息 二面技术&#xff0c;是由我来接手&#xff0c;然后问了 一些分布式的问题 &#xff0c;大部分都是在围绕着SpringCl…

linux基本功系列之free命令实战

文章目录前言一. free命令介绍二. 语法格式及常用选项三. 参考案例3.1 查看free相关的信息3.2 以MB的形式显示内存的使用情况3.3 以总和的形式显示内存的使用情况3.4 周期性的查询内存的使用情况3.5 以更人性化的形式来查看内存的结果输出总结前言 大家好&#xff0c;又见面了…

【双U网络:传感器间自监督:全色锐化】

W-NetPan: Double-U network for inter-sensor self-supervised pan-sharpening &#xff08;W-NetPan&#xff1a;用于传感器间自监督全色锐化的双U网络&#xff09; 由于遥感数据的提供日益增多&#xff0c;可以通过全色锐化方法来处理空间-光谱限制。然而&#xff0c;融合…

【java基础】反射详解

文章目录基本介绍Class类Filed类Method类Constructor类获取Annotation信息Modify工具类实例运用(修改字符串值)总结基本介绍 反射库&#xff08;reflection library)提供了一个丰富且精巧的工具集&#xff0c;可以用来编写能够动态操纵Java代码的程序。使用反射&#xff0c;Ja…

linux-中断下半部

引用preempt宋宝华&#xff1a; 是谁关闭了Linux抢占&#xff0c;而抢占又关闭了谁&#xff1f;Linux用户抢占和内核抢占详解(概念, 实现和触发时机)--Linux进程的管理与调度(二十&#xff09;内核抢占实现(preempt)Linux中的preempt_count - 知乎 (zhihu.com)linux 中断子系统…

测试行业干了5年,从只会点点点到了现在的测试开发,总算是证明了自己

测试不止是点点点 我感觉我是一个比较有发言权的人吧&#xff0c;我在测试行业摸爬滚打5年&#xff0c;以前经常听到开发对我说&#xff0c;天天的点点点有意思没&#xff1f; 和IT圈外的同学、朋友聊起自己的工作&#xff0c;往往一说自己是测试&#xff0c;无形中也会被大家…

再度盈利,搜狐稳了?

2016年在宣布要用3年时间回归互联网舞台中心之后&#xff0c;很长一段时间内张朝阳积极活跃在各种社交媒体上&#xff0c;完全是一派“积极出山”的姿态。而后畅游从美股退市&#xff0c;搜狗“卖身”腾讯&#xff0c;一系列的收缩动作又似乎是在逐渐远离喧嚣。而在最近三年&am…

华为OD机试模拟题 用 C++ 实现 - 自动曝光(2023.Q1)

最近更新的博客 【华为OD机试模拟题】用 C++ 实现 - 最多获得的短信条数(2023.Q1)) 文章目录 最近更新的博客使用说明自动曝光题目输入输出描述示例一输入输出说明示例二输入输出说明Code使用说明 参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出࿰

SRC挖掘之Access验证校验的漏洞挖掘

漏洞已修复&#xff0c;感觉某大佬的知识分享 任意用户密码重置->可获取全校师生个人min感信息 开局就是信息收集 对于挖掘edu的信息收集 1.可尝试谷歌搜索语法&#xff0c;获取学号信息 1. 旁站的渗透获取 2. 学校的贴吧获取(大部分都是本校学生) 当然我就是闲着蛋疼,进了…

让马斯克反悔的毫米波雷达,被国产雷达头部厂商木牛科技迭代到了5D时代

近日&#xff0c;特斯拉或将在其HW4.0硬件系统配置一枚高精度4D毫米波雷达的消息在外网刷屏。据分析&#xff0c;“纯视觉”信仰者马斯克之所以做出这样的决定&#xff0c;一方面是减配了雷达的特斯拉自动驾驶&#xff0c;表现不尽如人意&#xff1b;另一方面也跟毫米波雷达的技…