记一次IDOR 和访问控制缺失漏洞挖掘

  视频教程在我主页简介和专栏里 

测试 IDOR(不安全的直接对象引用) 漏洞时,我会使用一系列工具,确保不会遗漏任何问题。以下是我的测试方法:

设置 Firefox 和 Pwnfox:

1、我使用 Firefox 浏览器,并安装了 Pwnfox 扩展。Pwnfox 允许我隔离并管理不同的浏览上下文,方便在测试账户之间切换。

2、我将 Firefox 连接到 BurpSuite,用于捕获和监控浏览器与测试应用程序之间的所有网络流量。这种设置帮助我详细检查请求和响应。

后台运行 Autorize 工具:

1、同时,我在后台运行 Autorize 工具。这个工具持续检查可能被我在手动测试中忽略的访问控制漏洞。Autorize 特别有用,它会标记检测到的任何未授权访问,即使我已经从某个请求转移到其他地方。

2、我还会通过 BurpSuite 的 HTTP 历史记录选项卡手动检查应用程序的请求和响应流量。

跟踪 ID 和对象:

1、在测试过程中,我会确保检查应用程序中所有可能涉及 ID 和对象(例如帖子 ID、用户 ID 等)的部分,因为这些通常是发现 IDOR 漏洞的关键。

2、为了保持条理,我会将发现的所有 ID 和对象存储在一个名为 Obsidian 的应用中。Obsidian 可以帮助我以结构化的方式记录测试细节。

3、我会为每个测试的应用程序创建一个 Obsidian 文件,在其中存储重要信息,比如两个测试账户的 ID,以及应用使用的任何 Cookies 或 JWT 令牌(如果涉及身份验证)。

功能测试: 在使用应用程序时,我会全面测试它是否存在 IDOR 漏洞,尝试所有可能的方式访问或操作用户本不该接触的资源。

例如,当应用允许用户执行 CRUD 操作(创建、读取、更新、删除)时,我会测试每个操作是否可能被未经授权的用户利用:

1、创建(Create): 我能否以其他用户的身份创建帖子?

2、读取(Read): 我能否通过修改帖子 ID 读取其他用户的帖子?

3、更新(Update): 我能否更改不属于我的帖子内容?

4、删除(Delete): 我能否删除其他用户的帖子?

虽然该应用看似有一些访问控制措施,但这些措施在所有功能上的实现并不完善。这种访问控制的缺失使我发现了一个与生成帖子报告相关的漏洞。

在测试过程中,我注意到该平台允许用户对帖子进行 创建、读取、更新和删除(CRUD) 操作。于是,我针对这些操作测试了 IDOR 漏洞,重点检查访问控制是否得到了正确实施。很明显,访问控制在各个功能上都没有得到良好的执行。

我发现了一个功能,可以为所有帖子生成报告。我的第一个想法是:“我是否能够访问或导出其他用户帖子生成的报告?”

我尝试通过更改帖子 ID 来修改请求,试图将其他用户的报告发送到我的邮箱。然而,这种情况下系统是安全的;报告会直接发送到与账户关联的邮箱,这使得仅通过修改 ID 来劫持其他用户的报告变得困难。

在彻底点击了所有按钮并测试了应用程序的每个功能后,我偶然发现了另一个导出功能。这次,它允许将报告导出为 PDF。这时,我意识到可能存在另一个利用 IDOR 漏洞的机会。

起初,我并没有计划测试这个导出功能,但出于好奇,我点击了下载 PDF 的按钮。下载完成后,我决定查看背后发生了什么。于是,我打开了 BurpSuite,并导航到 HTTP 历史记录标签,查看已发出的请求。

这成为了促使我进一步调查的关键时刻。通过检查这些 HTTP 请求,我能够了解应用程序如何处理 PDF 的生成以及相关的参数。这给了我一个机会去测试是否可以操控请求,尤其是 post ID,以尝试下载其他用户的报告。

最后这两个请求非常适合测试 IDOR。让我们将它们发送到 Repeater 中,看看能发现什么!

在请求 (1) 中,我发现了两个具有 CREATED 状态的有趣 ID:

“backgroundJobId”:”d69047b7–3a7a-4784–96be-6633b6d8bd45",”status”:”CREATED”

这个 ID 引起了我的注意,所以我将它存储在 Obsidian 中以供参考。

接着,我打开了另一个请求,发现还有更多内容可以探索……

在 请求 (2) 中,我注意到它使用了我已经存储在 Obsidian 笔记中的同一个 backgroundJobId。响应中包含了用于下载内容的 URL,但仅针对单个帖子(而不是我所有的帖子)。这让我产生了一个想法——如果我能访问其他用户的报告呢?

为了尝试这一点,我回到返回 backgroundJobId 的请求并将其发送到 BurpSuite 的 Intruder。由于平台对 ID 使用了顺序编号,我设置了一个范围为 0 到 9,999,999 的爆破,目的是通过依次测试每个数字来检索所有有效的帖子 ID。

一旦我获得了其他用户帖子对应的有效 backgroundJobId 值,我手动将它们插入到以下 URL 中:

https://s3.amazonaws.com/xxxxxcompanyname/report/xxxxxxx/20241013/{backgroundJobId}.pdf

通过这样做,我可以未经授权访问其他用户的 PDF 报告,暴露了他们的私人帖子信息,我能够看到应用程序中的所有帖子。

顺便提一下,我们实际上这里有 两个漏洞

1、IDOR(不安全的直接对象引用): 第一个漏洞是 IDOR 漏洞,我们通过在请求中操控帖子 ID,成功获取了 backgroundJobId。这使我们能够访问其他用户的报告。

2、访问控制缺失: 第二个问题是 访问控制缺失 漏洞。该应用仅通过使用 UUID(通用唯一标识符) 来保护报告的访问权限,但这不足以保证安全。由于没有额外的安全层(例如签名或适当的授权检查),攻击者仍然可以通过猜测或暴力破解 UUID 来利用该系统。这意味着未经授权的用户只需知道或猜测一个有效的 UUID 就能访问报告。

简而言之,该应用未能实施适当的安全机制来防止未经授权的访问,使这两个漏洞都变得非常危险。

 视频教程在我主页简介或专栏里

申明:本账号所分享内容仅用于网络安全技术讨论,切勿用于违法途径,所有渗透都需获取授权,违者后果自行承担,与本号及作者无关

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

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

相关文章

GS论文阅读--Hard Gaussian Splatting

前言 本文也是对高斯点云的分布进行优化的,看! 文章目录 前言1.背景介绍2.关键内容2.1 位置梯度驱动HGS2.2 渲染误差引导HGS 3.文章贡献 1.背景介绍 在训练过程中,它严重依赖于视图空间位置梯度的平均幅度来增长高斯以减少渲染损失。然而&…

JS基础-操作数组(7)

一.增删改查 1.改 重新赋值 2.增 arr.puch() 末尾追加 arr.unshift() 开头追加 a)案例:数组筛选 3.删除 arr.pop() 删除最后一个元素 arr.shift() 删除第一个元素 splice() 删除指定元素

C++otlv4连接sql serveer使用记录(注意点)

C使用otlv4在做插入时,有一些设计的坑需要注意 插入数据: 当要给表中插入单个字符时,数据库表设计使用varchar(1)是合理的,但是otlv4一直报错char。 后续查很久才知道,otlv4所写的绑定的字符数组的长度应该实际数组…

Chapter 6.5-Adding a classification head

Chapter 6 -Fine-tuning for classification 6.5-Adding a classification head 为进行分类微调,须修改预训练的大语言模型(LLM)。我们将原本把隐藏表征映射到含50,257个词的词表的输出层,替换为一个更小、仅映射到 “0&#xff…

洛谷题目 P1006 [NOIP2008 提高组] 传纸条 题解 (本题较难)

题目传送门: P1006 [NOIP2008 提高组] 传纸条 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 前言: 本题来源于2008年NOIp 提高组竞赛题目:传纸条,本题涉及到动态DP、图论里的费用流知识点,学过图论的都应该对这道题…

智能电动汽车 --- 人工智能(AI)入门

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 简单,单纯,喜欢独处,独来独往,不易合同频过着接地气的生活…

VUE之路由Props、replace、编程式路由导航、重定向

目录 1、路由_props的配置 2、路由_replaces属性 3、编程式路由导航 4、路由重定向 1、路由_props的配置 1)第一种写法,将路由收到的所有params参数作为props传给路由组件 只能适用于params参数 // 创建一个路由器,并暴露出去// 第一步…

VS C++ 配置OPENCV环境

VS C 配置OPENCV环境 1.下载opencv2.安装环境3.opencv环境4.VS配置opencv环境5.EXE执行文件路径的环境lib和dll需要根据是debug还是release环境来区分使用哪个 6.Windows环境 1.下载opencv 链接: link 2.安装环境 双击运行即可 3.opencv环境 include文件路径:opencv\build\…

【Redis】持久化机制

目录 前言: RDB 触发RDB持久化方法有俩种: 1.手动触发 2.自动触发 RDB文件的优缺点: AOF: AOF工作机制:​编辑 ​编辑重写机制: 前言: Redis是一个内存数据库,将数据存储在内存中&…

蓝桥杯lesson3---string的使用

🌈个人主页:羽晨同学 💫个人格言:“成为自己未来的主人~” string的概念 string字符串是一种更加高级的封装,string字符串中包含了大量的方法,这些方法使得字符串的操作变得更加简单,string的使用&…

Arduino D1 通过 Wi-Fi 控制 LED

Arduino D1 通过 Wi-Fi 控制 LED 硬件连接 将 LED 的正极(长脚)连接到 Arduino D1 的 D1 引脚。将 LED 的负极(短脚)通过一个电阻(例如 220 欧姆)连接到 Arduino D1 的 GND 引脚。 安装必要的库 在 Ard…

大模型 / 智能体在智能运维领域的应用总结与发展趋势概述

智能体 智能运维 ? 回顾大模型的发展 大模型的发展在过去两年间呈现出爆炸式的增长,成为推动人工智能领域快速进步的关键力量。 2023年3月:百度发布了其知识增强的大语言模型产品“文心一言”,这标志着国内AI大模型产业竞争的…

Unity中在UI上画线

在UI中画一条曲线 我封装了一个组件,可以实现基本的画线需求. 效果 按住鼠标左键随手一画. 用起来也很简单,将组件挂到空物体上就行了,红色的背景是Panel. 你可以将该组件理解为一个Image,只不过形状更灵活一些罢了,所以它要放在下面的层级(不然可能会被挡住). 代码 可以…

【自然语言处理(NLP)】介绍、发展史

文章目录 介绍发展史1. 规则驱动时期(20世纪50年代-80年代)技术特点标志性成果 2. 统计方法兴起(1990年代-2000年代)技术特点标志性成果 3. 神经网络复兴(2010年代初至今)技术特点标志性成果 4. 集成与应用…

【书籍连载】《软件测试架构实践与精准测试》| 川模型的价值

各位软件领域的精英们,今天小编邀请你继续深入学习《软件测试架构实践与精准测试》。 《软件测试架构实践与精准测试》是作者李龙(安畅检测首席技术专家)基于软件测试“川模型”的著作。本书结合作者首次提出的软件测试新的模型“川模型”测试…

RPC是什么?和HTTP区别?

RPC 是什么?HTTP 是什么? 作为一个程序员,假设我们需要从A电脑的进程发送一段数据到B电脑的进程,我们一般会在代码中使用 Socket 进行编程。 此时,可选性一般就是 TCP 和 UDP 二选一,由于 TCP 可靠、UDP…

08.七种排序算法实现(C语言)

目录 一.排序的基本概念 1.1 排序的概念 1.2 常见的排序算法 二.常见排序算法的实现 2.1 插入排序(直接) 1.基本思想 2.直接插入排序的特性 3.代码实现 2.2 希尔排序 1.基本思想 2.希尔插入排序的特性 3.代码实现 2.3 选择排序 1.基本思想 2…

Jmeter使用Request URL请求接口

简介 在Jmeter调试接口时,有时不清楚后端服务接口的具体路径,可以使用Request URL和cookie来实现接口请求。以下内容以使用cookie鉴权的接口举例。 步骤 ① 登录网站后获取具体的Request URL和cookie信息 通过浏览器获取到Request URL和cookie&#…

Apache Tomcat文件包含漏洞复现(详细教程)

1.漏洞原理 Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,其安装后会默认开启ajp连接器,方便与其他web服务器通过ajp协议进行交互。属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发…

fpga学习入门 串口rs232回环

奇偶检验位这里是省略了 做好回环后可以使用上位机做回环测试,top文件写的方式就是将rx(fpga端)接受到的模块(pc端)tx发送出去,这两个端口用杜邦线连接,同理模块的rx连接fpga的tx,…