记一次有趣的逻辑漏洞挖洞经历

前言

前几天在网上冲浪的时候无意间看到了一个Edu的站点,是一个很常见的类似MOOC的那种在线学习系统,对外开放,同时有注册和登录功能。对于我这种常年低危的菜鸡来说,这是最愿意看到的,因为一个Web网站有了登录功能,就代表其网站必须要有权限划分,而有了权限划分,在这里的开发就容易出现很多问题,越权便是一种常见的问题。经过测试,发现这个站点就存在越权的问题,例如A账号可以通过发包更改B账号内的数据,但这些数据不是密码,个人信息等数据,而是平台上的评论,收藏,和点赞的数据。尽管这些数据或许不是那么敏感,危害听起来不大,但是也算是水平越权的一种了,因此最终这个漏洞提交EduSRC后被评为中危。接下来我将回到当初的视角,与大家一起复盘,分析这次挖洞经历。

发现过程

  1. 访问网站之后,看起来就是一个常见的在线平台首页(各位师傅请原谅我厚码,因为这个首页banner就是这个学校的全景,哈)在这里插入图片描述
    2.右上角可以发现有登录,注册功能,于是果断注册一个账号上去看一下都有什么功能,从个人信息修改部分进行一些常规的XSS测试,看看是否能构成存储XSS;在头像上传部分可以进行文件上传的测试,看看是否存在任意文件上传,说到这里不知道为什么,感觉现在的新系统里很少有任意文件上传了。在侧面可以看到有一些“点赞”,“收藏”,“评论”,“笔记”等功能。

在这里插入图片描述
3.点到随意一个视频,可以看到视频的右下角有一个记笔记的功能,我们随意写一点东西,添加一个笔记,此时我们在Burp里面观察分析一下这个笔记是怎么创建的,同时分析一下返回包里面的数据。

在这里插入图片描述
4.抓到的包内容如下,可以看到是json形式进行传输的,请求中三个参数,第一个是笔记内容,第二个是资源id,第三个是视频的id,返回包内容则是返回留言成功与否和时间戳,其中令人疑惑的就是第二个"resourceld",这个参数不是从1开始的,而是直接跳到133,于是怀疑当用户记笔记的时候,这个id就会自动加1,跟用户是谁无关,只是根据全站的笔记数自动+1,同时这个参数也是用户笔记的“标识码”。此时我马上进入个人中心,测试了一下删除笔记功能。

在这里插入图片描述
5.抓包内容如下,也是对一个接口进行的POST请求,数据格式为json,可以发现删除功能的请求包内容确实存在与创建笔记功能请求包中相同的内容,但是多了一个"id"参数,这是怎么回事?这篇笔记是我账号的第一篇笔记,但是id却不是从1开始的,结合刚才分析,这个id看起来更像是一个全站所有用户的笔记数总数,每次用户一旦创建笔记,这个id就会加一,但是这个id似乎只有在删除的时候抓包才能看到。

在这里插入图片描述
6.综合以上的分析,发现在删除的时候参数中没有判断权限的参数,只是一些删除内容相关的参数,经过测试我们发现若是更改id发包,响应包与删除成功的响应包一致,因此判断可能存在越权问题。观察其他功能的请求包,发现跟上面两个都类似,在删除时差不多都是POST请求表单携带id即可实现删除。

7.开始验证!再注册一个账号,暂且叫他B账号,我们用B账号发表一个评论。

在这里插入图片描述
8.为了方便测试,此时我们到个人中心里面查看已发表的评论,抓包观察这个评论的id是46。

在这里插入图片描述
9. 直接再到Repeater里面,这里还是之前测试用A账号删除评论时的请求包,直接更改id为46,发包,从返回包看可知删除评论成功。

在这里插入图片描述
10.此时登录B账号,点进个人中心,发现之前发送的评论和笔记已经都被删除

在这里插入图片描述

成因分析

综合请求包和返回包的内容来看,以笔记为例,可以猜测出背后的创建和删除逻辑分别是:

  1. 创建: POST请求接口,直接携带内容,同时后端会给这个笔记直接定义一个id,这个id跟笔记是哪个用户发布的没有关系,不可控,直接强制是全站笔记数+1,比如A账号发布了,这个笔记的id是47,那么无论下一个笔记是谁发的,笔记的id都是48。
  2. 删除: POST请求接口,携带要删除的笔记id,其实从上面的请求包我们可以看到,评论的删除确实是POST请求只携带了id,但是笔记的删除请求中是携带了“笔记内容”和“视频id”这类参数,但是测试可以发现,这个参数后端根本没有判断,后端拿到id后就直接对相应的笔记执行了删除操作,没有进行鉴权。因此只要从id向下遍历到0,也就把全站所有用户的笔记都删除了。

总结复盘

在这之前我也挖掘过类似的逻辑漏洞,那个漏洞是越权删除图片库中其他用户上传的图片,实际与此次的成因大同小异,都是因为没有对平台用户的个人“资产”没有进行鉴权而导致的问题,在类似平台的开发过程中,很多开发者为了方便,后端会直接处理请求中的关键信息(例如上面笔记的"id"),从而直接对其执行操作,不会再比较其他的数据,这就导致了水平越权问题的出现。作为安全人员,我们也可以多多关注资产中这类功能点,测试其存在的问题。

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

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

相关文章

《Go 简易速速上手小册》第10章:微服务与云原生应用(2024 最新版)

文章目录 10.1 构建微服务架构 - 探索 Go 语言的微观世界10.1.1 基础知识讲解10.1.2 重点案例:订单处理系统订单服务测试服务 10.1.3 拓展案例 1:用户认证服务安装所需的包实现用户模型和存储实现 JWT 生成和验证实现认证服务测试服务 10.1.4 拓展案例 2…

问卷设计初探:题目类型概览与注意事项梳理

问卷法常被人们应用于社会调查中,它能反馈出最真实的社会信息。所以,很多企业为了最大程度地了解市场,也经常使用问卷调查法进行研究。不过,想要发挥出问卷法的最大用处,前提是要将问卷设计规范并且可量化。 想要设计…

希捷与索尼集团合作生产HAMR写头激光二极管

最近有报道指出,希捷(Seagate)在生产其采用热辅助磁记录(HAMR)技术的大容量硬盘时,并非所有组件都在内部制造。根据日经新闻的一份新报告,希捷已与索尼集团合作,由索尼为其HAMR写头生…

线性注意力机制全新升级!性能显著提高,速度、精度更优

线性注意力机制通过对传统注意力机制中的Softmax操作进行线性化处理,可以提高Transformer模型的并行性能、降低复杂度,在计算效率、模型表达能力等方面都具有优势。 作为一种常用有效的优化方法,线性注意力机制可以在保证模型性能的同时提高…

GIS使用 RUSLE 方法绘制土壤侵蚀风险图

侵蚀是指土壤在水或风的作用下离开其所在位置,它分为两种:自然侵蚀和加速侵蚀。水土流失实际上是一个自然过程,因此形成了肥沃的三角洲平原,但在人类活动的影响下,这一过程加速,水土流失超过了应有的程度。因此,农业生产率下降,生产成本上升,水坝寿命缩短,水质下降,…

第10章 JDBC

10.1 什么是JDBC JDBC的全称是Java数据库连接(Java Database Connectivity),它是一套用于执行SQL语句的Java API。应用程序可通过这套API连接到关系型数据库,并使用SQL语句完成对数据库中数据的新增、删除、修改和查询等操作。 …

C++模板详解 —— 函数模板与类模板

C模板详解 泛型编程函数模板函数模板的概念函数模板的原理 函数模板的实例化函数模板的匹配原则类模板类模板的定义格式类模板的实例化 泛型编程 如果让你编写一个函数,用于两个数的交换。在C语言中,我们会用如下方法: void Swapi(int* p1,…

GEE使用 Sentinel-1 SAR影像 和 Otsu 方法绘制洪水地图

洪水是世界上最常见、破坏性最大的自然灾害之一,造成了巨大的生命和财产损失。此外,随着气候变化的影响,近年来,洪灾变得更加频繁和不可预测。为了最大限度地减少生命和财产损失,必须迅速发现洪水蔓延的情况,并及时采取必要的干预措施。洪水蔓延探测大多使用光学传感器或…

【大模型 数据增强】LLMAAA:使用 LLMs 作为数据标注器

【大模型 数据增强】LLMAAA:使用 LLMs 作为数据标注器 提出背景算法步骤1. LLM作为活跃标注者(LLMAAA)2. k-NN示例检索与标签表述化3. 活跃学习策略4. 自动重权技术 LLMAAA 框架1. LLM Annotator2. Active Acquisition3. Robust Training 总结…

MCU中断控制

目录 一、中断相关基础知识 1、NVIC:嵌套向量中断控制器 2、可屏蔽中断和不可屏蔽中断的区别 3、中断优先级 4、常见特殊中断 二、中断相关寄存器 三、中断使用步骤: 一、中断相关基础知识 1、NVIC:嵌套向量中断控制器 (1) 它是内核的…

Codeforces Round 486 (Div. 3)

目录 A. Diverse Team B. Substrings Sort C. Equal Sums D. Points and Powers of Two E. Divisibility by 25 F. Rain and Umbrellas A. Diverse Team 找出不重复的同时存下下标即可,依次遍历map判断重复最后判断数量即可 void solve(){cin>>n>>…

订餐|网上订餐系统|基于springboot的网上订餐系统设计与实现(源码+数据库+文档)

网上订餐系统目录 目录 基于springboot的网上订餐系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、用户功能模块的实现 (1)用户注册界面 (2)用户登录界面 (3)菜品详情界面 &#xff08…