Web安全系列——越权访问(权限控制失效)

news2025/1/16 14:41:30

一、前言

越权访问是当前Web应用中最常见的安全风险之一。

本文将介绍越权访问的原理、风险以及典型攻击场景,并为开发者提供有效的防范措施,帮助构建安全的Web应用。

二、什么是越权访问

越权访问,是指用户在不具备相应权限(或者说业务逻辑上不应该具备相应权限)的情况下访问了受限制的资源或执行了不允许的操作。

出现越权访问一般是因为Web应用系统为建立合理的权限控制机制,或者权限控制机制失效。

三、越权访问(权限控制失效)的危害

权限控制失效的直接危害体现在两个方面

  • 数据泄漏: 攻击者可能通过越权访问获取敏感数据,比如获取用户个人信息、财务数据、家庭监控视频等。
  • 数据被恶意篡改: 攻击者可能通过越权访问修改,比如修改账户余额。

在直接危害的基础上,还会引申出更多的间接危害,比如

  1. 侵犯隐私: 获取他人的个人身份信息,从而侵犯他人隐私。
  2. 实施诈骗: 获取他人个人信息后转卖给诈骗集团实施诈骗。
  3. 法律责任与声誉损害: Web应用用户的个人信息数据被攻击者非法获取后篡改,导致用户利益损,Web应用提供商也可能面临法律责任,且企业的声誉也会受损。

四、越权的分类

  • 未授权: 用户未经授权就可以访问特定的对象或功能。
    • 对象级别:文件、数据库记录、页面组件等。如攻击者可以不经过鉴权通过篡改URL参数或直接访问数据库记录。
    • 功能级别:指用户访问未被授权的功能。 如普通用户不具备删除记录的权限, 攻击者通过技术手段绕过限制,实现了删除记录的操作
  • 水平越权(越界访问): 水平越权是指用户在同一权限等级下,访问与自己相同权限但归属于其他用户的资源或数据。例如,在企业OA系统中,一名普通员工在系统中看到了其同事的薪酬单。
  • 垂直越权(权限升级): 低权限用户执行高权限操作的情况,突破原有限制,进入受保护的资源和功能。例如,普通用户成功访问管理员控制面板或查看选定数据的情况。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

五、越权访问的典型案例

未授权访问案例:Capital One数据泄露事件

背景:

2019年,美国大型金融服务提供商Capital One遭受了一起数据泄露事件,泄露了约1亿名美国客户和约600万名加拿大客户的个人信息,包括姓名、社会保险号、地址、信用评分等。

实现缺陷:

Capital One在其AWS云基础设施中存在配置错误。攻击者通过服务器端请求伪造(SSRF)漏洞访问到了公司的AWS元数据服务密钥。

攻击者如何实现越权访问:

泄露事件中的攻击者利用漏洞获取了AWS元数据服务密钥,并进一步访问到存储在S3存储桶中的大量敏感信息。

水平越权案例: 2016年Gitlab任意文件读取漏洞:CVE-2016-9086 Detail

背景:

2016年,代码托管平台GitLab出现了一个权限控制漏洞,该漏洞允许任意已注册用户访问到其他组织的代码库。

实现缺陷:

GitLab未对代码库访问请求进行严格的权限检查。当用户创建一个属于已有的其他组织的代码库的导出请求时,GitLab没有正确验证请求者是否具有相应的访问权限。

攻击者如何实现越权访问:

攻击者可以通过创建一个属于其他组织的代码库的导出请求,利用这个漏洞实现越权访问其他组织的代码库,获取敏感信息。

垂直越权案例:某网络教育平台管理员权限漏洞

背景: 某网络教育平台的普通用户通过垂直越权漏洞,获得了管理员权限,导致学生个人信息被查看和下载。

实现缺陷: 该平台管理员控制台URL可被普通用户直接访问,并且未实施必要的权限验证来保护数据。

攻击者如何实现越权访问: 普通用户可能会在浏览器地址栏尝试修改URL,直接访问管理员控制台。在本案例中,平台未对请求者身份进行验证,导致攻击者获得了更高权限,访问了敏感数据。

六、越权访问的防护措施

通用防护策略与原则

  1. 最小权限原则:为用户分配最少权限,仅提供执行任务所需的功能和数据访问权。
  2. 统一身份认证和授权:实现统一的身份认证和授权,以便对所有访问请求进行权限检查。
  3. 访问控制列表(ACL):建立访问控制列表,明确指定谁可以访问哪些资源和执行哪些操作。
  4. 输入校验:验证用户提供的输入,防止恶意请求的注入。
  5. 日志和监视:记录用户活动及访问请求,并监视潜在的越权访问行为。
  6. 应用程序更新和安全补丁:定期更新应用程序,库和操作系统,及时修复已知漏洞。

未授权访问防护策略

  1. 密钥管理:将敏感信息(如API密钥、数据库连接字符串)保存在安全的密钥管理系统中,而不是直接保存在代码或配置文件中。
  2. 限制访问范围:配置访问控制列表和安全组,限制对访问受限资源的IP范围。
  3. 数据加密:对存储和传输的数据进行加密,保护数据的机密性。

水平越权防护策略

  1. 访问边界限制:在服务端实施限制,阻止用户访问属于其他用户的数据,尤其是在使用用户ID等参数查询数据时。
  2. 随机化资源标识符:使用难以猜测的随机资源标识符,避免攻击者通过简单的参数修改获取其他用户的数据。
  3. 对象级访问控制:在数据访问时检查请求者是否有权使用特定的数据对象,防止进一步的越权访问。

垂直越权防护策略

  1. 角色权限管理:使用基于角色的访问控制系统,明确定义用户和管理员可以访问的资源和操作。
  2. 严格访问控制策略:对管理员界面、功能和敏感操作实行严格的访问控制策略,确保仅具有适当权限的用户可以访问。
  3. 二次身份验证:对敏感操作和管理员权限实行二次身份验证(例如,短信验证码、邮箱验证)。

文章首发公众号

在这里插入图片描述

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

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

相关文章

DevOps2023现状报告|注重文化、以用户为中心是成功的关键

Google Cloud DORA 团队的一份新研究报告强调了企业文化和关注用户作为成功软件交付支柱的重要性。 2023 DevOps 状况报告分析了过去 9 年来通过此类最大规模调查收集的全球 36,000 多名 IT 专业人员的数据。今年的报告是继 2022 年调查之后发布的,该调查发现越来…

使用RCurl和R来爬虫视频

以下是一个使用RCurl和R来爬虫视频的示例代码&#xff0c;代码中使用了https://www.duoip.cn/get_proxy来获取代理IP&#xff1a; # 引入必要的库 library(RCurl) library(rjson)# 获取代理IP proxy_url <- "https://www.duoip.cn/get_proxy" proxy <- getURL…

【Pycharm中python调用另一个文件类或者函数】

Pycharm中python调用另一个文件类或者函数 本文主要介绍了Pycharm中python调用另一个文件类或者函数&#xff0c;文中通过示例代码介绍的非常详细&#xff0c;对大家的学习或者工作具有一定的参考学习价值&#xff0c;需要的朋友们下面随着小编来一起学习学习吧 文章目录 Pycha…

云HIS-医院信息化的核心

基于云计算技术的 B/S 架构的 HIS 系统&#xff0c;为基层医疗机构提供标准化的、信息化的、可共享的医疗信息管理系统&#xff0c;实现医患事务管理和临床诊疗管理等标准医疗管理信息系统的功能。系统利用云计算平台的技术优势&#xff0c;建立统一的健康档案存储平台&#xf…

纽交所上市公司埃森哲宣布已收购英国创意管理咨询公司

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 猛兽财经获悉&#xff0c;纽交所上市公司埃森哲(ACN)今日宣布已收购英国创意管理咨询公司The Storytellers。 这笔交易的金额没有披露。 此次收购将增强埃森哲在转型变革方面的能力&#xff0c;并进一步帮助客户阐明和激活…

请求转发和重定向区别

两者区别&#xff1a; 1.转发在一次请求中完成&#xff0c;重定向是两次请求 2.转发操作发生在服务器内部&#xff0c;重定向是在浏览器执行操作 3.转发地址栏不变&#xff0c;重定向地址栏变化&#xff08;两次请求&#xff0c;两个地址&#xff09; 4.转发可以在一次请求中共…

如何实现前端懒加载图像?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

SAP FICO案例教程简介

内容简介 本教程内容包括&#xff0c;erplabs编写的MTS、MTO 1、MTO 2案例教程FICO模块内容&#xff0c;案例业务在虚拟机全部实现&#xff0c;还包括若干案例专题。案例内容实用全面、图文表丰富&#xff0c;数据严谨前后关联衔接&#xff0c;可作为实际工作参考资料。本书适合…

基础课4——语音识别技术

ASR 是自动语音识别&#xff08;Automatic Speech Recognition&#xff09;的缩写&#xff0c;是一种将人类语音转换为文本的技术。ASR 系统可以处理实时音频流或已录制的音频文件&#xff0c;并将其转换为文本。它是一种自然语言处理技术&#xff0c;广泛应用于许多领域&#…

SPI总线及其demo

SPI总线是微处理器和外设之间进行数据交互的常用串行总线接口。本文主要介绍了SPI的接口类型、数据传输&#xff08;时钟极性、时钟相位&#xff09;、读、写操作的具体代码&#xff0c;最后是一个完整的xpt2046实现ADC的代码实现及注意事项。 1 、接口简介 串行外设接口&…

全流程TOUGH系列软件实践技术应用

TOUGH系列软件是由美国劳伦斯伯克利实验室开发的&#xff0c;旨在解决非饱和带中地下水、热运移的通用模拟软件。和传统地下水模拟软件Feflow和Modflow不同&#xff0c;TOUGH系列软件采用模块化设计和有限积分差网格剖分方法&#xff0c;通过配合不同状态方程&#xff08;EOS模…

c/c++语言算法技巧汇总/大复习[未完结]

目录 最简单的hash表子串变位词 排序最简单的桶排序字典序快排练习1 &#xff1a;0-1交换练习2&#xff1a;交换星号 最简单的去重最简单的队列template模版双端队列vector or listvector 队列结构存在于两种算法广度优先搜索贝尔曼福特算法&#xff08;Bellman-Ford&#xff0…

华为荣耀手机,开启开发者选项,hbuilder调试依然找不到

我的手机是华为荣耀50&#xff0c;其他华为手机不知道是不是这个问题哦 解决办法&#xff1a;usb配置&#xff0c;选择音频来源 然后就可以了

QGIS选择某一个元素,并生成新的图层

第一步&#xff1a;选择元素 第二步&#xff1a;编辑 —> 复制 第三步&#xff1a;Edit —> paste features as —> new vector layer 输入文件名&#xff1a; 生成新图层

【计算机网络笔记】计算机网络性能(1)——速率、带宽、延迟

系列文章目录 什么是计算机网络&#xff1f; 什么是网络协议&#xff1f; 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 分组交换 vs 电路交换 系列文章目录速率带宽延迟/时延(delay或latency) 下面介绍一些计算机网络中常用的性能指标。在本篇中涉及速…

iPhone怎么滚动截长图?分享3个截图技巧!

苹果手机虽然深受大家喜爱&#xff0c;但是有一些功能确实没有安卓方便。就像今天小编要讲的长截图功能&#xff0c;苹果手机本身并不具备。 但是&#xff0c;我们可以借助其他外力来实现长截图&#xff0c;这些方法往往容易被大家忽视。那么&#xff0c;iphone怎么滚动截长图…

零代码编程:用ChatGPT根据excel表格数据来批量修改文件标题名

文件夹里面有很多个mp文件&#xff0c;没有顺序&#xff0c;很乱&#xff1a; 这些文件其实都是有顺序的&#xff0c;Excel表格中前面的数字就是序号&#xff1a; 现在&#xff0c;希望根据Excel表格中的标题名来对文件夹里的mp4文件进行批量重命名&#xff0c;在ChatGPT中输入…

studio one6值不值得下载?好用吗

零基础学混音&#xff0c;持之以恒才能有所收获。首先要明确自己的学习目标&#xff0c;然后选择适合自己的教程。这套教程适用于后期制作和直播&#xff0c;同样适用。我切换到了桌面屏幕。 在这个基础上运行&#xff0c;它提供了适合零基础的模板&#xff0c;适合直播唱歌或…

React函数式写法和类式写法的区别(以一个计数器功能为例子)

函数式写法更加简洁和函数式编程思维导向&#xff0c;适用于无状态、UI纯粹的组件&#xff0c;且可以使用Hooks处理副作用。而类式写法适用于有内部状态、生命周期方法和复杂交互逻辑的组件&#xff0c;提供了更多的灵活性和控制力。 文章目录 一、计数器功能演示 1.函数式写法…

List.of() Vs Arrays.asList()

java中list.of和Arrays.asList方法有什么区别&#xff1f; 简介 Java 提供了几种用于创建列表的方便方法&#xff0c;包括 List.of 和 Arrays.aslist。尽管这两种方法都可以很简单的创建集合对象&#xff0c;但它们实际上是有一些显著差异的。本文将介绍 Java 中的 List.of()…