应用程序越权漏洞安全测试总结体会

应用程序越权漏洞安全测试总结体会

一、 越权漏洞简介

越权漏洞顾名思议超越了自身的权限去访问一些资源,在OWASP TOP10 2021中归类为A01:Broken Access Control,其本质原因为对访问用户的权限未进行校验或者校验不严谨。在一个特定的系统或者应用程序中,根据“默认拒绝”的安全设计公理,应将资源按组进行管理,对用户按角色进行管理,不同的角色可以访问不同的资源,然后给不同级别的用户赋予不同的角色,从而实现不同级别的用户去访问不同的资源,这是通常使用的RBAC模型(当然也有其他的授权模型)。越权有几种表现形式:

1、 水平越权访问。两个相同级别的用户A与B,A可以越权去访问B的资源。

2、 垂直越权访问。低级别权限的用户去访问高级别权限用户的资源,如普通用户去访问管理员用户的资源;或者高级别权限用户去访问低级别权限用户的私有资源;

3、 未授权访问。这个类别进行单列,尽管个人认为这是一个特殊的垂直越权访问方式。

二、 常见越权漏洞测试说明

在应用程序中进行权限控制有很多种不同的方式,目前见到的包括token、会话、用户名与用户id等参数,这些字段可能位于请求报文的URI、Cookie等Header、Body体中,报文的请求方式可能包括多种,比如GET、POST、DELETE等等。
在这里插入图片描述

简要说明如下:

1、 参数修改。部分应用程序通过一些用户名、Id等可以代表身份的参数进行用户权限控制,并且这些参数又可以进行猜解,因此在测试过程中可以准备不同的用户观察这些字段,然后测试,或者直接通过BURP对这些字段进行猜解爆破。

2、 身份权限控制猜解。对Token,JWT等代表身份权限控制的内容进行猜解,有的只进行了BASE64编码,可以解码后观察是否可以利用。

3、 关键URI替换。在测试前找到相关资源的URI,与域名或者IP进行拼接后放到其他权限的用户中进行访问。

4、 Cookie替换、token删除等。在高权限访问一些关键操作的时候,将cookie替换为低权限用户的cookie,以验证低权限用户能否进行此关键操作。方式3和方式4其实原理是一样的,只不过一个是换URI另外一个是换cookie。

在测试越权漏洞的过程中首先还是要使用不同的用户去观察他们权限的差异,常见的比如增、删、改操作,这样在测试过程中才能够比较容易发现结果的差异。

三、 环境搭建

这里我是在网上找的一套图书管理系统代码,基于JDK8、springboot、hibernate、mysql、shiro进行开发,在本地的IDEA运行后进行测试的。搭建后后登录页面:

在这里插入图片描述

这个登录界面是有安全漏洞的,可以进行爆破,这里不作进一步说明。

登录后先看一下管理员用户admin登录后有用户管理、角色管理、菜单管理、图书类型、图书管理几个菜单,如下所示:

在这里插入图片描述

再创建一个普通用户user1,登录后只有用户管理、角色管理以及菜单管理三个菜单,如下:

在这里插入图片描述

因此这里可以看到管理员用户与普通用户的权限是存在差别的,这也是我们在测试的时候需要关注的点。

四、 手工测试

1、 使用admin用户访问图书类型或者图书管理这两个特权菜单,在burp中截取URI信息/admin/book/list?page=1&limit=500:
在这里插入图片描述
与请求的IP或者域名进行拼接后为:
​ ​http://192.168.2.6//admin/book/list?page=1&limit=500​​

2、 使用user1进行登录,然后将上述URL在浏览器中打开,如下:
在这里插入图片描述

可以看到普通用户成功的访问到了此URL,证明存在越权漏洞。

3、 退出user1再访问访问此URL,页面被强制跳转到登录页面,证明这里不存在未授权访问。

五、 使用BURP的Autorize进行自动化测试

在上面演示的是手工测试的方式,为了提高效率,可以使用BURP的插件Autorize进行自动化测试,Autorize的原理就是上面的第4种方式的自动化测试实现。

1、 安装Autorize插件

Autorize插件基于Python,在BURP的BApp Store中可以搜索到,需要首先安装Jython环境,根据说明就可以安装成功,安装好后多了一个Autorize标签。

2、 BURP处于正常监听admin管理员账号的状态。

3、 首先获取user1的cookie,Cookie: JSESSIONID=F129D56EB938F0BCA344D66846A4E25F,要确保该cookie处于有效期。

4、 按照步骤配置Autorize的cookie信息,3里面的名字是自定义的。
在这里插入图片描述

5、 点击Autorize is off按钮开启,然后在admin用户登录的浏览器中正常的访问特权菜单。

6、 观察Autorize的结果:
在这里插入图片描述

可以看到直观的展示了结果,在左边展示的是在页面上点击菜单的操作触发的URL请求,结果包括修改后的请求测试结果以及未授权请求测试结果,状态分别为红色的Bypassed!以及绿色的Enforced!,红色的Bypassed表示存在越权,而绿色的Enforced表示不存在越权。同时也显示了报文的返回长度,通过长度也可以进行初步的判断。点击某一条后,在右边的Request/Response Viewers中可以看到请求与返回的结果,同样是分为修改后的请求(Modified)、原始请求(Original)以及未认证请求(Unauthenticated)三种情况的请求与响应报文,方便对报文进行比对。同时要以看到因为是在菜单栏进行的每一个操作,实际上会产生两条结果。

7、 配置过滤器
如果因为BURP截获的报文较大,导致这里展示的信息太多,可以进行过滤,比如我这里配置如下:
在这里插入图片描述

这里选择URL中要包括192.168.2.6:80这个字符串,再次访问,这里在左边就只会展示符合过滤条件的内容了。

8、 不足
使用Autorize插件提高了效率,但是仍然存在一些不足,比如在上述中有一个操作是对条目进行删除操作,由于在原始请求中已经进行了删除操作,因此在修改后的越权删除操作中无法再次删除,导致测试结果失败,这种操作需要手工再进行验证。

六、 总结

本文对越权漏洞进行了简介,对常见测试方式进行了总结,通过手工方式以及自动化工具Autorize进行了简要的说明,由于作者水平有限,可能总结远远不到位,在这里献丑了。还需要在工作中不断的测试学习,积累经验,提高漏洞发现率。

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

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

相关文章

JAVA:Spring Boot 集成 Quartz 实现分布式任务的技术指南

1、简述 Quartz 是一个强大的任务调度框架,允许开发者在应用程序中定义和执行定时任务。在 Spring Boot 中集成 Quartz,可以轻松实现任务的调度、管理、暂停和恢复等功能。在分布式系统中,Quartz 也支持集群化的任务调度,确保任务…

改善 Kibana 中的 ES|QL 编辑器体验

作者:来自 Elastic Marco Liberati 随着新的 ES|QL 语言正式发布,Kibana 中开发了一种新的编辑器体验,以帮助用户编写更快、更好的查询。实时验证、改进的自动完成和快速修复等功能将简化 ES|QL 体验。 我们将介绍改进 Kibana 中 ES|QL 编辑器…

【深度学习入门_基础篇】线性代数本质

开坑本部分主要为基础知识复习,新开坑中,学习记录自用。 学习目标: 熟悉向量、线性组合、线性变换、基变换、矩阵运算、逆函数、秩、列空间、零空间、范式、特征指、特征向量等含义与应用。 强烈推荐此视频: 【官方双语/合集】…

【SpringBoot】当 @PathVariable 遇到 /,如何处理

1. 问题复现 在解析一个 URL 时,我们经常会使用 PathVariable 这个注解。例如我们会经常见到如下风格的代码: RestController Slf4j public class HelloWorldController {RequestMapping(path "/hi1/{name}", method RequestMethod.GET)publ…

VBA(Visual Basic for Applications)编程|excel|一系列网址或文件路径快速转换为可点击的超链接

很多时候,我们需要把导入的数据某一列转换成超链接,比如URL形式的列。 那么,大批量的情况下,无疑一个个手动点击是非常愚蠢的办法,这个时候我们就需要VBA编程来编写宏,通过编写宏来简化这些手动操作并不现…

小程序开发全解析 快速构建高效应用的核心指南

内容概要 小程序开发是当前数字世界中炙手可热的领域,吸引了无数开发者和企业的关注。随着技术的进步,小程序成为了提升用户体验、增强品牌曝光以及增加客户互动的重要工具。了解小程序的基本概念,就像是打开了一扇通往新世界的大门。 在这…

SQL—Group_Concat函数用法详解

SQL—Group_Concat函数用法详解 在LC遇见的一道很有趣的SQL题,有用到这个函数,就借这道题抛砖引玉,在此讲解一下group_concat函数的用法。🤣 GROUP_CONCAT([DISTINCT] expression [ORDER BY expression] [SEPARATOR separator])…

Edge Scdn的应用场景有哪些?

酷盾安全Edge Scdn 具备强大的安全防护能力,通过多层防御机制,如防火墙、DDoS 攻击防护、入侵检测和防御、数据加密等,有效抵御各种网络攻击,包括 DDoS 攻击、CC 攻击、SQL 注入攻击、XSS 跨站脚本攻击等,保障网站和应…

流光效果

1、流光效果是什么 在 Unity Shader 中的流光效果是一种动态的视觉效果,通常用于给材质增加一种闪光或光线移动的效果,使物体表面看起来像是有光在流动。这种效果常用于武器光效、能量护盾、传送门等等,可以让物体看起来更加生动富有科技感 …

滑动窗口——串联所有单词的子串

一.题目描述 30. 串联所有单词的子串 - 力扣(LeetCode) 二.题目解析 题目前提:s是一个字符串,words是一个字符串数组,里面所有的字符串的长度都是相等的。 题目要求:找到s中的一段连续的子串&#xff0…

【微软,模型规模】模型参数规模泄露:理解大型语言模型的参数量级

模型参数规模泄露:理解大型语言模型的参数量级 关键词: #大型语言模型 Large Language Model #参数规模 Parameter Scale #GPT-4o #GPT-4o-mini #Claude 3.5 Sonnet 具体实例与推演 近日,微软在一篇医学相关论文中意外泄露了OpenAI及Claud…

SpringBoot Maven 项目 pom 中的 plugin 插件用法整理

把 SpringBoot Maven 项目打包成 jar 文件时,我们通常用到 spring-boot-maven-plugin 插件。 前面也介绍过,在 spring-boot-starter-parent POM 和 spring-boot-starter POM 中都有插件的管理,现在我们就撸一把构建元素中插件的用法。 一、…

UE5AI感知组件

官方解释: AI感知系统为Pawn提供了一种从环境中接收数据的方式,例如噪音的来源、AI是否遭到破坏、或AI是否看到了什么。 AI感知组件(AIPerception Component)是用于实现游戏中的非玩家角色(NPC)对环境和其…

【数据仓库】hive on Tez配置

hive on Tez 搭建 前提是hive4.0hadoop3.2.2数仓已搭建完成,现在只是更换其执行引擎 为Tez。搭建可参考【数据仓库】hive hadoop数仓搭建实践文章。 Tez 下载 下载地址 https://archive.apache.org/dist/tez/ 官网地址 https://tez.apache.org/releases/apac…

finereport动态数据源插件教程2

场景: 模板中有多个数据集,只需要其中一个数据集按照不同的参数显示不同数据库的数据。 模板制作: 两个数据集ds1,ds2,ds1的绑定到参数面板的下拉框上,ds2显示到模板正文中,现在需要ds1根据不同…

Java通过谷歌邮箱Gmail直接发送邮件的三种方式

错误 Connected to the target VM, address: 127.0.0.1:52082, transport: socketException in thread "main" javax.mail.MessagingException: Got bad greeting from SMTP host: smtp.gmail.com, port: 587, response: [EOF] at com.sun.mail.smtp.SMTPTransp…

WSDM 2025 | 时间序列(time series)论文总结

AWSDM 2025于2025年3月10号到14号在德国汉诺威举行(Hannover, Germany) 本文总结了WSDM 2024有关时间序列(time series)的相关论文,如有疏漏,欢迎大家补充。(没有时空数据相关的论文&#xff0…

反直觉导致卡关-迫击炮谜题

这个谜题,在两周目中先后卡了我至少三个小时,先后缓慢装填并发射迫击炮弹尝试了数百次。 一周目卡了很久,稀里糊涂的过了,想不到二周目还会卡那么久。 研究了很多播主的攻略,但还是一头雾水, 直到分析其…

庐山派K230学习日记4 PWM控制

1 本节介绍​ 📝本节您将学习如何通过将K230开发板的GPIO引脚复用为PWM功能并输出PWM信号;实现输出PWM信号及控制板载无源蜂鸣器发出声音。 🏆学习目标 1️⃣如何将GPIO引脚配置为PWM模式,通过40Pin排针中的部分引脚来输出PWM信号…

c语言的文件操作与文件缓冲区

目录 C语言文件操作函数汇总 简单介绍文件 为什么使用文件 什么是文件 文件名 二进制文件和文本文件 流和标准流 流 标准流 文件指针 文件的打开和关闭 文件的顺序读写 顺序读写函数介绍 文件的随机读写 fseek ftell rewind 文件读取结束的判定 文件缓冲区 缓…