代码审计——垂直越权详解

news2024/11/16 11:58:37

为方便您的阅读,可点击下方蓝色字体,进行跳转↓↓↓

    • 01 漏洞描述
    • 02 审计要点
    • 03 漏洞特征
    • 04 漏洞案例
    • 05 修复方案

01 漏洞描述


垂直越权,也称权限提升,是一种“基于URL的访问控制”设计缺陷引起的漏洞。

由于Web应用程序没有做权限控制或者仅在菜单上做了权限控制,导致的恶意用户只要猜测其他管理页面的URL,就可以访问或控制其他角色拥有的数据或页面,达到权限提升目的。

在这里插入图片描述



02 审计要点


垂直越权漏洞发生的根本原因是系统没有设置完善的权限控制机制,因此审计的重点在于 功能点是否设置了权限控制机制。


03 漏洞特征

垂直越权是一种URL的访问控制设计缺陷引起的漏洞,由于未对URL设定严格的用户访问控制策略,导致普通用户也可以通过发送请求的方式访问本应仅高权限用户才可访问的页面。

Java

@RequestMapping(value = "delete")
public String delete(HttpServletRequest request, @RequestParam Long id)
			throws Exception {
		try {
			userManager.delete(id);
			request.setAttribute("msg", "删除用户成功");
		} catch (ServiceException e) {
			// logger.error(e.getMessage(), e);
			request.setAttribute("msg", "删除用户失败");
		}
		return list(request);

上述代码是一段管理员删除用户操作的代码,若在操作时未对访问请求者的权限做判断,那么攻击者就可以构造请求“http://xxx.xxx.xxx/user/delete?id=1”来做只有管理员才有权限干的事情。

04 漏洞案例

在这里插入图片描述
代码层面观察对功能的判断是否存在校验机制或安全框架,若未存在明显校验代码,则存在垂直越权风险。

以下为3例垂直越权的功能点示例:

案例1:

登录到超级管理员用户,执行添加用户的操作,并且对过程进行抓包

在这里插入图片描述
切换到普通的管理员用户,并没有添加用户的权限,将其cookie替换到先前抓取的添加用户请求的cookie

在这里插入图片描述
发现新建了一个相同的用户,此为垂直越权

在这里插入图片描述


**案例2:**

使用高权限用户访问,可以获取所有用户的信息的权限
在这里插入图片描述

切换到普通用户,并没有查询所有用户的权限,将其cookie替换到先前抓取的请求包

在这里插入图片描述
发现成功查询所有用户信息,此为垂直越权

在这里插入图片描述

案例3:

某站点后台仅使用js跳转来限制未授权的用户访问

在这里插入图片描述

去掉js可以成功访问后台,且可以进行操作

在这里插入图片描述


05 修复方案


建议进行关键业务的操作时,应校验用户的会话然后根据会话获取对应的字段进行业务操作,切记不可以不校验会话的情况下允许用户操作关键性业务功能。

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

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

相关文章

2023开放原子全球开源峰会——Intel专题探访

浩瀚宇宙,有光,朝着未来之境;万物之始,有道,启示智慧共荣;在多维赋能的时空里,见微知著,开放共享 ,包罗万象;在抵达终点的路途中,彼此陪伴&#x…

《Java核心卷1》怎么样?读1,2章草记 | 第12版

文章目录 《Java核心技术卷 一》第一章 概述第二章 Java编程环境 图书推荐 《Java核心技术卷 一》 第一章 概述 前言:本书与一些”0基础入门“的书定位感觉是不太一样的,可能就像书名所说,是”核心技术“叭。书中经常将Java语言与 c 进行对比…

基于Java电子竞技管理平台设计实现(源码+lw+部署文档+讲解等)

博主介绍: ✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ 🍅 文末获取源码联系 🍅 👇🏻 精…

详解c++---红黑二叉树的原理和实现

什么是红黑二叉树树 avl树是通过控制平衡因子来控制二叉搜索树的平衡,当某个节点的平衡因子等于2或者-2的话我们就根据他所在的位置来进行旋转,如果这个节点位于右右的话就对其进行向左旋转,如果这个节点位于左左的话就对其进行向右旋转&…

【Android复习笔记】OkHttp核心原理

使用方法 调用流程 0kHttp请求过程中最少只需要接触OkHttpClient、Request、Call、 Response,但是框架内部进行大量的逻辑处理。 所有的逻辑大部分集中在拦截器中,但是在进入拦截器之前还需要依靠分发器来调配请求任务。 分发器:内部维护队列与线程池,完成请求调配;拦截…

chatgpt赋能python:Python中嵌套列表的访问方法

Python中嵌套列表的访问方法 在Python编程中,嵌套列表是一种很常见的数据类型。它可以存储多个列表,使得数据结构更加复杂灵活。然而,如何访问嵌套列表中的元素呢?本文将详细介绍Python中嵌套列表的访问方法。 嵌套列表的定义 …

ch8_2_CPU的指令周期

1.  指令周期 指令周期是指_ CPU从主存取出一条指令, 分析指令,加上执行这条指令的时间。 1.1指令周期 指令周期: 是指cpu,从内存中取出指令,并且执行一条指令所需要的全部时间。 比如 从内存单元中,取出操作数&…

【备战秋招】每日一题:4月29日美团春招第二题:题面+题目思路 + C++/python/js/Go/java带注释

为了更好的阅读体检,为了更好的阅读体检,,可以查看我的算法学习博客第二题-限行 在线评测链接:P1267 题目内容 塔子哥是一个富有的商人,他在一家大型贸易公司工作。他的公司位于城市的中心区,是一座高耸的摩天大楼。…

代码审计——SSRF详解

为方便您的阅读,可点击下方蓝色字体,进行跳转↓↓↓ 01 漏洞描述02 审计要点03 漏洞特征04 漏洞案例05 修复方案 01 漏洞描述 服务端请求伪造攻击(SSRF)也成为跨站点端口攻击,是由于一些应用在向第三方主机请求资源时提…

Linux 学习记录33(网络编程篇)

Linux 学习记录33(网络编程篇) 本文目录 Linux 学习记录33(网络编程篇)一、阻塞IO二、非阻塞IO三、信号驱动IO四、IO多路复用(重点)1. select (TCP服务器)TCP服务器代码TCP客户端代码 2. poll 一、阻塞IO 1. 最常用,最简单,效率最低的. 2. 创建套接字文…

WPF开发txt阅读器11:自定义控件更改音量语速

文章目录 自定义控件控件调用自定义事件更改音量和语速 txt阅读器系列: 需求分析和文件读写目录提取类💎列表控件与目录字体控件绑定💎前景/背景颜色书籍管理系统💎用树形图管理书籍语音播放💎播放进度显示&#x1f4…

【Java】Java核心要点总结 65:TreeSet 两种排序

文章目录 1. Comparable 和 Comparator区别比较2. TreeSet有两种实现指定排序规则的方式: 1. Comparable 和 Comparator区别比较 Comparable 是排序接口,若一个类实现了Comparable接口,就意味着“该类支持排序”。Comparator 是比较器&#x…

使用post请求建立长连接实现sse,接收后端主动发来的消息,实现chat-gpt的弹字效果,EventSource的应用

每日鸡汤:每个你想要学习的瞬间都是未来的你向自己求救 最近在做一个chat相关的功能,然后由于接口返回特别特别慢,所以需要搞一个慢慢等待的效果,就是接口一个单词一个单词的返回,然后前端收到一个展示一个&#xff0c…

Nucleo-F411RE (STM32F411)LL库体验 6 - EXTI外部中断的使用

Nucleo-F411RE (STM32F411)LL库体验 6 - EXTI外部中断的使用 1、简述 开发板蓝色按键连接PC13管脚,且断开时为高电平,闭合时低电平。我们将pc13设置为中断模式,低电平触发,当按键按下时,触发中…

Hadoop完全分布式运行环境的搭建

Hadoop完全分布式运行环境的搭建 文章目录 Hadoop完全分布式运行环境的搭建0. 写在前面1. 模板虚拟机环境准备安装模板虚拟机hadoop01虚拟机配置要求如下关闭防火墙,关闭防火墙开机自启创建普通用户配置新用户权限修改所属主和所属组卸载虚拟机自带的JDK重启虚拟机 …

【备战秋招】每日一题:4月23日美团春招第四题:题面+题目思路 + C++/python/js/Go/java带注释

为了更好的阅读体检,为了更好的阅读体检,,可以查看我的算法学习博客第四题-01串的代价 在线评测链接:P1248 题目内容 塔子哥是一个喜欢研究密码的人,他经常在网上寻找各种有趣的密码挑战。他最近发现了一个神秘的网站&#xff…

指定字符串数组中每个元素sn的长度L如果sn长度比L短,则补充空格,且sn居中如果sn长度比L长,则保留sn左侧L个字符

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 指定字符串数组中每个元素sn的长度L 如果sn长度比L短,则补充空格,且sn居中 如果sn长度比L长,则保留sn左侧L个字符 [太阳]选择题 下列代码最后输出的结果是&#xff1f…

基于Java在线购物系统设计实现(源码+lw+部署文档+讲解等)

博主介绍: ✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ 🍅 文末获取源码联系 🍅 👇🏻 精…

MindFusion.Java Swing Pack 2023.R1 Crack

MindFusion.Java Swing Pack 2023.R1 改进了图表、电子表格和虚拟键盘。 6月 15, 2023 - 16:06 新版本 特征 MindFusion.Diagramming 的新功能 空间索引 - 创建项目位置索引,以便更快地进行命中测试和视口裁剪查询。这极大地提高了包含数…

ch8_1_CPU的结构和功能

1. cpu的结构 1.1CPU 的功能 控制器的功能 控制器的功能具体作用取指令指令控制分析指令操作控制执行指令, 发出各种操作命令控制程序输入与结果的输出时间控制总线管理处理中断处理异常情况和特殊请求数据加工 运算器的功能 实现算术运算 和 逻辑运算&#x…