记一次edu证书站的挖洞经历

前言

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

发现过程

  1. 访问网站之后,看起来就是一个常见的在线平台首页(各位师傅请原谅我厚码,因为这个首页banner就是这个学校的全景,哈)

    image-20240207170902435

  2. 右上角可以发现有登录,注册功能,于是果断注册一个账号上去看一下都有什么功能,从个人信息修改部分进行一些常规的XSS测试,看看是否能构成存储XSS;在头像上传部分可以进行文件上传的测试,看看是否存在任意文件上传,说到这里不知道为什么,感觉现在的新系统里很少有任意文件上传了。在侧面可以看到有一些“点赞”,“收藏”,“评论”,“笔记”等功能。

    image-20240207171723784

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

    image-20240207172309219

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

    image-20240207172822352

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

    image-20240207173407334

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

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

    image-20240207175618960

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

    image-20240207181702540

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

    image-20240207181939807

  10. 此时登录B账号,点进个人中心,发现之前发送的评论和笔记已经都被删除

    image-20240207182028950

成因分析

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

  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/522282.html

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

相关文章

【C++】浅谈 vector 迭代器失效 深拷贝问题

目录 前言 一、底层空间改变 【错误版本1】 🌟【解答】正确版本 ​ 【错误版本2】 🌟【解答】正确版本 二、指定位置元素的删除操作--erase 【错误版本1】 🌟【解答】 【错误版本2】 🌟【解答】 三、深拷贝问题 前言 迭…

什么是智慧公厕?智慧公厕设备有哪些

在现代社会,公共厕所作为城市基础设施的重要一环,承载着城市卫生、居民生活品质的重要责任。然而,传统公厕存在的问题仍然不可忽视:脏乱差、资源浪费、安全隐患等等。 为了解决这些问题,针对公共厕所日常使用、运营管…

Linux的top命令解析

Top命令是什么 TOP命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况。 TOP是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止该程序为止.比较准确的说,top命令提供了实时的对系…

史上最细,接口自动化测试用例设计编写总结,一篇带你打通...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 说到自动化测试&a…

仿牛客项目Day02:http、调试、日志、git

http状态码 后端调试 f8:逐行执行 f7:进入语句内部 f9:执行到下一个断点 前端调试 f10:逐行调试 f11:进入语句内部 f8:执行到下一个断点 日志 按照级别开启日志 日志的测试类 比如把application里…

云犀首款AI直播调参大模型重磅发布,智能破解直播三大难!

3月7日晚,云犀重磅发布首款AI大模型——云犀墨子AI直播调参大模型!据悉云犀墨子是一款懂直播的调参大模型,这项技术深度融合了机器学习、计算机视觉以及进步的图像处理算法,赋予直播间画面AI智能调控能力。 此次云犀墨子AI直播调参…

【PCL】(二十六)自定义条件的欧几里得聚类分割点云

&#xff08;二十六&#xff09;自定义条件的欧几里得聚类分割点云 以下代码实现自定义条件对点进行欧几里得聚类分割。 conditional_euclidean_clustering.cpp #include <pcl/point_types.h> #include <pcl/io/pcd_io.h> #include <pcl/console/time.h>#…

Mybatis-Spring | Mybatis与Spring的“整合“

目录 : 一、配置环境1. 整合环境需导入的JAR :Spring框架所需JARMybatis框架所需JARMyBatis与Spring整合的中间JAR数据库驱动JAR包数据源所需JAR包 &#xff08;下面的例子中 : 用的不是这个数据源&#xff09; 2. 编写“配置文件” 和 “.properties文件” ( 只是概述&#xf…

人民日报:用好“人工智能+” 赋能产业升级

以下文章来源&#xff1a;北京日报 文生视频、智能家居、智慧工厂……近年来&#xff0c;人工智能发展速度之快、应用范围之广备受瞩目。 政府工作报告提出&#xff0c;深化大数据、人工智能等研发应用&#xff0c;开展“人工智能”行动&#xff0c;打造具有国际竞争力的数字产…

1911_野火FreeRTOS教程阅读笔记_请求任务切换

1911_野火FreeRTOS教程阅读笔记_请求任务切换 全部学习汇总&#xff1a; g_FreeRTOS: FreeRTOS学习笔记 (gitee.com) 还有一部分任务切换请求的代码没有分析。 实现上是一个宏定义&#xff0c;实现的工作主要的核心点还是请求PendSV的exception。当这个调用的时候&#xff0c;下…

Java --- springcloud初始项目创建

目录 一、cloud项目创建 1.1、项目编码规范 1.2、注解生效激活 1.3、导入父工程maven的pom依赖 二、创建子工程并导入相关pom依赖 2.1、相关配置文件 2.1.1、数据库配置文件内容 2.1.2、自动生成文件配置内容 三、创建微服务8001子工程 3.1、导入相关pom依赖 3.…

Fiddler抓包丨最常用功能实战演练

Fiddler中常用的功能如下&#xff1a; 停止抓包清空会话窗内容过滤请求解码设置断点 一. 停止抓包 二. 清空会话窗 方法一&#xff0c;工具栏工具&#xff1a; 方法二&#xff0c;命令行形式&#xff1a; 当然&#xff0c;命令行工具也还支持其他命令的输入&#xff0c;这里不…