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

一、前言

越权访问是当前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. 二次身份验证:对敏感操作和管理员权限实行二次身份验证(例如,短信验证码、邮箱验证)。

文章首发公众号

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值