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

news2024/11/20 2:39:01

前言

前几天在网上冲浪的时候无意间看到了一个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.coloradmin.cn/o/1500592.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Discuz论坛网站报错Discuz!Database Error(0)notconnect的解决办法

运营服务器大本营有段时间了,在运营期间遇到两次Discuz!Database Error(0)notconnect报错,和你们分享遇到Discuz报错的解决办法,希望可以帮助到你。 首先网站报错(0)notconnect&…

iOS——【自动引用计数】ARC规则及实现

1.3.3所有权修饰符 所有权修饰符一共有四种: __strong 修饰符__weak 修饰符__undafe_unretained 修饰符__autoreleasing 修饰符 __strong修饰符 _strong修饰符表示对对象的强引用,持有强引用的变量在超出其作用域的时候会被废弃,随着强引…

玄机科技女神大集结!妇女节来一场别开生面的“她”力量巡礼!

3.8妇女节到啦!是不是觉得整个世界都充满了粉红色的气息?各位小伙伴是不是已经准备好为身边的女性送上祝福了呢?而今天,我们也要来一场特别的“联欢”,盘点一下玄机科技动画中那些风格各异、魅力无限的女神们&#xff…

bug - poi getMergedRegion合并后的行列number错误

第一个CellRangeAddress 的Row number 应该是0&#xff0c;但是给出的是1。 其它的CellRangeAddress 与实际大致相差4-5不等&#xff0c;没有规律。 <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>…

开源模型应用落地-工具使用篇-Ollama(六)

一、前言 在AI大模型百花齐放的时代&#xff0c;很多人都对新兴技术充满了热情&#xff0c;都想尝试一下。但是&#xff0c;实际上要入门AI技术的门槛非常高。除了需要高端设备&#xff0c;还需要面临复杂的部署和安装过程&#xff0c;这让很多人望而却步。不过&#xff0c;随着…

llama factory学习笔记

模型 模型名模型大小默认模块TemplateBaichuan27B/13BW_packbaichuan2BLOOM560M/1.1B/1.7B/3B/7.1B/176Bquery_key_value-BLOOMZ560M/1.1B/1.7B/3B/7.1B/176Bquery_key_value-ChatGLM36Bquery_key_valuechatglm3DeepSeek (MoE)7B/16B/67Bq_proj,v_projdeepseekFalcon7B/40B/18…

寻找数组的中心索引

给你一个整数数组 nums &#xff0c;请计算数组的 中心下标 。 数组 中心下标 是数组的一个下标&#xff0c;其左侧所有元素相加的和等于右侧所有元素相加的和。 如果中心下标位于数组最左端&#xff0c;那么左侧数之和视为 0 &#xff0c;因为在下标的左侧不存在元素。这一点…

跨网络传输的大致过程+图解(软件虚拟层),ip地址介绍,ip地址和mac地址对比

目录 跨网络传输 引入​​​​​​​ 举例 -- 唐僧西天取经 结论 介绍 ip地址 引入 介绍 类型 公有ip 私有ip 版本 ipv4 ipv6 ip地址和mac地址的唯一性问题 数据包转发的过程 引入 思考 -- 如何跨子网 过程 图解 封装和解包 去掉差异 ip地址/协议的重要…

Nginx正向代理域名的配置

目录 前言 1.打开文件 2. 启用代理 3. 指定代理服务器 4. 保存配置文件并重新加载Nginx。 5. 添加域名解析。 6. 配置客户端。 总结 前言 Nginx是一个高性能、开源的Web服务器软件&#xff0c;不仅可以作为反向代理服务器使用&#xff0c;还可以作为正向代理服务器使用…

IDEA启动项目读取nacos乱码导致启动失败

新安装的2023社区版IDEA,启动项目报错。 forest: interceptors: - com.gdsz.b2b.frontend.api.Interceptors.ApiInterceptor org.yaml.snakeyaml.error.YAMLException: java.nio.charset.MalformedInputException: Input length 1 at org.yaml.snakeyaml.reader.S…

Zabbix(四)

Zabbix Proxy zabbix作为一个分布式监控系统(分布式监控解决方案)&#xff0c;支持通过代理(proxy)收集zabbix agent的监控数据&#xff0c;然后由zabbix proxy再把数据发送给zabbix server&#xff0c;也就是zabbix proxy 可以代替zabbix server收集监控数据&#xff0c;然后…

VBA中类的解读及应用第十讲:限制文本框的输入,使其只能输入数值(上)

《VBA中类的解读及应用》教程【10165646】是我推出的第五套教程&#xff0c;目前已经是第一版修订了。这套教程定位于最高级&#xff0c;是学完初级&#xff0c;中级后的教程。 类&#xff0c;是非常抽象的&#xff0c;更具研究的价值。随着我们学习、应用VBA的深入&#xff0…

React-父传子

1.概念 说明&#xff1a;父组件传递数据子组件标签身上绑定属性&#xff1b;子组件接受数据props的参数。props是一个对象&#xff0c;包含父组件传递的所有数据。例如数字、字符串、布尔值、数组、对象、函数、JSX。不允许直接修改父组件传递的数据。 2.例子 // 父传子 // …

YOLO建筑物损伤评估数据集

YOLO建筑物损伤评估数据集&#xff0c;重度损伤&#xff0c;轻微损伤&#xff0c;中度损伤&#xff0c;未损伤4类&#xff0c;近五千张图像&#xff0c;yolo标注完整&#xff0c;应用数据增强。 适用于CV项目&#xff0c;毕设&#xff0c;科研&#xff0c;实验等 需要此数据集…

抖店月销过万的爆单技巧,新手轻松月入1w+,附抖店学习资料!

我是电商珠珠 抖店开通之后&#xff0c;怎么才能快速出单是很多新手小伙伴困扰的问题。其实想要运营好抖店一点都不难&#xff0c;我做抖店也有三年多时间了&#xff0c;接下来我说的每一步&#xff0c;不管是有货源还是无货源的都适用。 1、铺货低价福利款 店铺开好之后&am…

【C++第三课 - 类和对象中】构造函数、析构函数、拷贝构造函数、赋值重载、取地址重载、Date类的完善、const成员

目录 类的6个默认成员函数构造函数自己写的构造函数默认生成的构造函数 析构函数概念特征 拷贝构造函数特征 运算符重载 、 >、 <赋值重载Date类的完善构造函数的完善、-的完善用复用-、-以及-和-的相互复用 前置、--后置、--流插入、流提取 取地址重载 const成员 类的6个…

安康杯安全知识竞赛上的讲话稿

各位领导、同志们&#xff1a; 经过近半个月时间的准备&#xff0c;南五十家子镇平泉首届安康杯安全生产知识竞赛初赛在今天圆满落下帏幕&#xff0c;经过紧张激烈的角逐&#xff0c; 代表队、 代表队和 代表队分别获得本次竞赛的第一、二、三名让我们以热烈的掌声表示祝…

TensorRT是什么,有什么作用,如何使用

TensorRT 是由 NVIDIA 提供的一个高性能深度学习推理&#xff08;inference&#xff09;引擎。它专为生产环境中的部署而设计&#xff0c;用于提高在 NVIDIA GPU 上运行的深度学习模型的推理速度和效率。以下是关于 TensorRT 的详细介绍&#xff1a; TensorRT 是 NVIDIA 推出的…

容器: string

引言: 为什么要有string类型, 就使用字符数组表示字符串不行吗? 原因: 使用字符数组描述文本信息, 无法确定开多大空间, 开多了浪费,开少了不够用使用string封装: 扩容机制:减少了空间的浪费各种接口:方便修改等操作 string的使用 容量相关 size:获取字符个数,不包含\0 (C语言…

IOS苹果通话记录在线生成网站源代码,直接上传就可使用

一键生成&#xff0c;PHP的上传到网站根目录打开域名访问即可 源码免费下载地址专业知识分享社区-专业知识笔记免费分享 (chaobiji.cn)