【渗透测试专栏】1.2认证和授权类-越权访问(水平/垂直越权)

2024-09-06 15:20

本文主要是介绍【渗透测试专栏】1.2认证和授权类-越权访问(水平/垂直越权),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

该系列专栏旨在让漏洞检测变得更简单,只用于学习用途

靶机环境请看专栏前言专栏前言-WooYun漏洞库环境搭建-CSDN博客

目录

该系列专栏旨在让漏洞检测变得更简单,只用于学习用途

一、漏洞描述

1、水平越权

2、垂直越权

二、漏洞级别

三、漏洞检测方法

漏洞修复


一、漏洞描述

偏业务漏洞

1、水平越权

水平越权指的是在同一权限级别下,用户可以访问其他用户的资源或执行其他用户的操作。例如,在一个在线购物系统中,用户 A 和用户 B 都是普通用户,他们应该只能访问自己的订单信息、个人资料等。但如果存在水平越权漏洞,用户 A 可能能够访问用户 B 的订单信息,或者修改用户 B 的个人资料。

产生水平越权的原因通常是系统在进行权限校验时不够严格,没有正确地识别用户的身份和权限范围。比如,仅仅依靠用户的 ID 来确定资源的访问权限,而没有对用户的角色或其他标识进行充分的验证。

2、垂直越权

垂直越权则是低权限的用户能够访问高权限用户的资源或执行高权限的操作。例如,在一个企业管理系统中,普通员工通常只能查看自己的工作任务和提交工作报告。而管理员则可以管理用户账号、审批重要文件等。如果存在垂直越权漏洞,普通员工可能能够执行管理员的操作,如删除用户账号或修改系统设置。

垂直越权的出现可能是由于系统在权限管理的层次划分上不清晰,或者在权限校验的过程中存在漏洞。比如,没有对用户的权限进行严格的分层管理,或者在某些关键操作的权限校验中没有考虑到用户的实际权限级别。

越权访问漏洞可能会导致严重的安全问题,如用户隐私泄露、数据被篡改、系统被恶意控制等。为了防止越权访问漏洞的出现,开发人员应该在系统设计和开发过程中,采用严格的权限管理机制,对用户的身份和权限进行充分的验证和授权,确保用户只能访问和操作自己有权限的资源。

二、漏洞级别

高危

三、漏洞检测方法

1、  以超管 admin(高权限用户) 身份登录系统

2、  找到一个只有超管(高权限)才有的功能的链接,比如说:"http://localhost/mywebappname/userManage/userList.do" , 显示出所有的user,并复制此链接.

3、  以普通用户登陆进系统,在地址栏输入: userManage/userList.do ,如果可以查看到其所有的user,则就造成了,普通用户的越权访问

漏洞修复

对用户操作进行权限校验,防止通过修改参数进入未授权页面及进行非法操作,建议在服务端对请求的数据和当前用户身份做一个校验检查。

流程描述:在服务器接收到用户发送的页面访问请求时,根据预设的识别策略,从用户的页面访问请求中提取该用户对应的用户唯一标识信息,同时提取所述页面访问请求对应的应答页面中的表单及该表单中不可修改参数,将所述表单及不可修改参数与所述用户唯一标识信息绑定后记录到参数列表中;检测到用户提交请求页面的表单时,将所述请求页面的表单及不可修改参数与该用户对应的所述参数列表中记录的表单及不可修改参数进行比对,控制该用户的访问。

例如:
登陆时将用户名存入session
session.setAttribute("username",username);
在相关页面判断
if((String)session.getAttribute("username")!=admin){
(response.sendRedirect("XXX.jsp")};
注意: xxx.jsp为自定义的错误页面。

这篇关于【渗透测试专栏】1.2认证和授权类-越权访问(水平/垂直越权)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1142378

相关文章

浅析Spring Security认证过程

类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

字节面试 | 如何测试RocketMQ、RocketMQ?

字节面试:RocketMQ是怎么测试的呢? 答: 首先保证消息的消费正确、设计逆向用例,在验证消息内容为空等情况时的消费正确性; 推送大批量MQ,通过Admin控制台查看MQ消费的情况,是否出现消费假死、TPS是否正常等等问题。(上述都是临场发挥,但是RocketMQ真正的测试点,还真的需要探讨) 01 先了解RocketMQ 作为测试也是要简单了解RocketMQ。简单来说,就是一个分

安卓链接正常显示,ios#符被转义%23导致链接访问404

原因分析: url中含有特殊字符 中文未编码 都有可能导致URL转换失败,所以需要对url编码处理  如下: guard let allowUrl = webUrl.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) else {return} 后面发现当url中有#号时,会被误伤转义为%23,导致链接无法访问

usaco 1.2 Palindromic Squares(进制转化)

考察进制转化 注意一些细节就可以了 直接上代码: /*ID: who jayLANG: C++TASK: palsquare*/#include<stdio.h>int x[20],xlen,y[20],ylen,B;void change(int n){int m;m=n;xlen=0;while(m){x[++xlen]=m%B;m/=B;}m=n*n;ylen=0;whi

usaco 1.2 Name That Number(数字字母转化)

巧妙的利用code[b[0]-'A'] 将字符ABC...Z转换为数字 需要注意的是重新开一个数组 c [ ] 存储字符串 应人为的在末尾附上 ‘ \ 0 ’ 详见代码: /*ID: who jayLANG: C++TASK: namenum*/#include<stdio.h>#include<string.h>int main(){FILE *fin = fopen (

usaco 1.2 Milking Cows(类hash表)

第一种思路被卡了时间 到第二种思路的时候就觉得第一种思路太坑爹了 代码又长又臭还超时!! 第一种思路:我不知道为什么最后一组数据会被卡 超时超了0.2s左右 大概想法是 快排加一个遍历 先将开始时间按升序排好 然后开始遍历比较 1 若 下一个开始beg[i] 小于 tem_end 则说明本组数据与上组数据是在连续的一个区间 取max( ed[i],tem_end ) 2 反之 这个

usaco 1.2 Transformations(模拟)

我的做法就是一个一个情况枚举出来 注意计算公式: ( 变换后的矩阵记为C) 顺时针旋转90°:C[i] [j]=A[n-j-1] [i] (旋转180°和270° 可以多转几个九十度来推) 对称:C[i] [n-j-1]=A[i] [j] 代码有点长 。。。 /*ID: who jayLANG: C++TASK: transform*/#include<

【测试】输入正确用户名和密码,点击登录没有响应的可能性原因

目录 一、前端问题 1. 界面交互问题 2. 输入数据校验问题 二、网络问题 1. 网络连接中断 2. 代理设置问题 三、后端问题 1. 服务器故障 2. 数据库问题 3. 权限问题: 四、其他问题 1. 缓存问题 2. 第三方服务问题 3. 配置问题 一、前端问题 1. 界面交互问题 登录按钮的点击事件未正确绑定,导致点击后无法触发登录操作。 页面可能存在

业务中14个需要进行A/B测试的时刻[信息图]

在本指南中,我们将全面了解有关 A/B测试 的所有内容。 我们将介绍不同类型的A/B测试,如何有效地规划和启动测试,如何评估测试是否成功,您应该关注哪些指标,多年来我们发现的常见错误等等。 什么是A/B测试? A/B测试(有时称为“分割测试”)是一种实验类型,其中您创建两种或多种内容变体——如登录页面、电子邮件或广告——并将它们显示给不同的受众群体,以查看哪一种效果最好。 本质上,A/B测