访问控制漏洞和特权升级(Access control vulnerabilities and privilege escalation)学习笔记

本文是关于访问控制漏洞和特权升级的学习笔记,详细介绍了访问控制的种类、安全模型以及各种类型的安全漏洞,如垂直、水平特权升级、不安全的直接对象引用等,并给出了实例和防范措施。内容涵盖Web应用程序的安全性,强调了正确实施访问控制的重要性。

笔者burpsuite的在线安全学院的Access control vulnerabilities and privilege escalation学习笔记。笔者认为这这个的覆盖面比国内俗称的越权要广,所以就直译了。限于本人水平,笔记质量不是很高,假如有看到的大佬轻喷,很多地方是Google翻译的。

文章目录

访问控制漏洞和特权升级

在本节中,我们将讨论什么是访问控制安全性,描述特权升级以及访问控制可能引起的漏洞类型,并概述如何防止这些漏洞。

什么是访问控制?

访问控制(或授权)是对谁(或什么)可以执行尝试的操作或访问他们所请求的资源的约束条件的应用。在Web应用程序的上下文中,访问控制取决于身份验证和会话管理:

  • 身份验证可以识别用户并确认他们就是他们所说的身份。
  • 会话管理标识该同一用户正在发出哪些后续HTTP请求。
  • 访问控制确定是否允许用户执行他们尝试执行的操作。
    损坏的访问控制是一个经常遇到且通常很关键的安全漏洞。访问控制的设计和管理是一个复杂而动态的问题,将业务,组织和法律约束应用于技术实施。访问控制设计决策必须由人决定,而不是技术决定,而且出错的可能性很高。
    从用户的角度来看,访问控制可以分为以下几类:
  • 垂直访问控制
  • 水平访问控制
  • 上下文相关的访问控制在这里插入图片描述

访问控制安全模型

什么是访问控制安全模型?

访问控制安全模型是一组独立于技术或实现平台的访问控制规则的正式定义。访问控制安全模型是在操作系统,网络,数据库管理系统以及后台,应用程序和Web服务器软件中实现的。这些年来,已经设计了各种访问控制安全模型,以使访问控制策略与业务或组织规则以及技术变化相匹配。

程序访问控制

使用程序化访问控制,用户权限矩阵存储在数据库或类似数据库中,并且参考该矩阵以编程方式应用访问控制。这种访问控制方法可以包括角色或组或单个用户,流程的集合或工作流,并且可以非常精细。

自由访问控制(DAC)

使用任意访问控制,将根据用户或指定的用户组来限制对资源或功能的访问。资源或功能的所有者可以为用户分配或委派访问权限。该模型非常精细,具有对单个资源或功能以及用户的访问权限。因此,模型的设计和管理可能变得非常复杂。

强制访问控制(MAC)

强制访问控制是一种访问控制的集中控制系统,其中,对象对某些对象(文件或其他资源)的访问受到限制。值得注意的是,与DAC不同,资源的用户和所有者不具备委派或修改其资源访问权限的能力。该模型通常与基于军事许可的系统相关联。

基于角色的访问控制(RBAC)

使用基于角色的访问控制,可以定义命名角色,并为其分配访问权限。然后,将用户分配给单个或多个角色。RBAC提供了对其他访问控制模型的增强管理,如果设计得当,则可以提供足够的粒度以在复杂应用程序中提供可管理的访问控制。例如,采购员可以定义为对采购分类帐功能和资源的子集具有访问权限的角色。当员工离开或加入组织时,访问控制管理将简化为定义或撤销采购员角色的成员资格。
当有足够的角色来适当地调用访问控制,但又没有太多的角色使模型过于复杂和难以管理时,RBAC最为有效。

垂直访问控制

垂直访问控制是一种机制,用于限制对其他类型的用户不可用的敏感功能的访问。

使用垂直访问控制,不同类型的用户可以访问不同的应用程序功能。例如,管理员可能能够修改或删除任何用户的帐户,而普通用户无权访问这些操作。垂直访问控制可以是安全模型的更细粒度的实现,这些模型旨在实施业务策略,例如职责分离和最低特权。

水平访问控制

水平访问控制是一种机制,用于将资源的访问限制为专门允许访问这些资源的用户。

使用水平访问控制,不同的用户可以访问同一类型的资源的子集。例如,银行业务应用程序将允许用户查看交易并从自己的帐户进行付款,但不能查看其他任何用户的帐户。

上下文相关的访问控制

上下文相关的访问控制根据应用程序的状态或用户与应用程序的交互来限制对功能和资源的访问。
上下文相关的访问控制可防止用户以错误的顺序执行操作。例如,零售网站可能会阻止用户在付款后修改购物车中的内容。

损坏的访问控制示例

当用户实际上可以访问某些资源或执行某些他们不应该访问的资源时,存在断开的访问控制漏洞。

垂直特权升级

如果用户可以访问他们被禁止访问的功能,那么这就是垂直特权升级。例如,如果非管理用户实际上可以访问可以删除用户帐户的管理页面,则这是垂直特权升级。

未受保护的功能

在最基本的情况下,如果应用程序不对敏感功能实施任何保护,则会出现垂直特权升级。例如,管理功能可能是从管理员的欢迎页面链接的,而不是从用户的欢迎页面链接的。但是,用户可能直接通过直接浏览到相关的管理URL就能访问管理功能。
例如,一个网站可能在以下URL上托管敏感功能:https://insecure-website.com/admin
实际上,任何用户都可以访问此目录,不仅是在其用户界面中具有指向该功能链接的管理用户。在某些情况下,管理URL可能会在其他位置公开,例如robots.txt文件:https://insecure-website.com/robots.txt
即使未在任何地方公开该URL,攻击者也可能能够使用单词列表对敏感功能的位置进行暴力破解。

Lab: Unprotected admin functionality

  1. burp会自动爬取robot.txt,Target-sitemap-找到对应网站-robot.txt在这里插入图片描述
  2. burp请求,看到对应页面,然后在浏览器删除即可在这里插入图片描述
    在某些情况下,敏感功能没有得到严格的保护,而是通过给它提供了较不可预测的URL来隐藏起来:所谓的“默默无闻的安全性”。仅隐藏敏感功能无法提供有效的访问控制,因为用户可能仍会以各种方式发现混淆的URL。
    例如,考虑一个在以下URL上承载管理功能的应用程序:https://insecure-website.com/administrator-panel-yb556
    攻击者可能无法直接猜测到这一点。但是,该应用程序仍可能会将URL泄露给用户。例如,URL可能会在JavaScript中公开,该JavaScript根据用户的角色构造用户界面:
<script>
var isAdmin = false
<think>好的,我现在需要回答用户关于如何防止访问控制漏洞的问题。首先,我需要理解访问控制漏洞是什么,通常这类漏洞是由于权限管理不当导致的,比如未经授权的用户访问了敏感资源。根据用户提供的引用,特别是引用[1]引用[4],里面提到了访问控制、RBAC等概念,这应该问题相关。 首先,我应该回顾这些引用内容。引用[1]提到“创建访问控制合规性”,引用[4]详细说明了实施基于角色的访问控制(RBAC),分配明确的角色权限。这些都是预防访问控制漏洞的关键措施。 接下来,我需要整理最佳实践。可能包括以下几点: 1. **实施RBAC模型**:根据用户角色分配权限,确保最小权限原则。引用[4]中的RBAC实施方法可以作为基础。 2. **权限验证**:在每个访问点进行权限检查,避免只在前端验证,后端也要加强验证。引用[2]中提到的避免使用危险方法可能也相关,比如防止XSS,但这里重点在访问控制。 3. **定期审查测试**:定期审计权限设置,进行渗透测试。引用[1]中的缓解策略可能包括这些内容。 4. **日志监控**:记录访问日志,实时监控异常行为。引用[3]中的限流检查可能属于监控的一部分。 5. **使用安全框架工具**:引用[1]提到使用云安全工具,可能可以推荐一些现有的安全框架来帮助实施访问控制。 然后,我需要将这些点组织成结构清晰的回答,分步骤说明。同时,要确保引用正确的来源,比如引用[1][4]中的内容。可能还需要考虑其他引用,比如引用[2]虽然主要讲XSS,但如果访问控制涉及前端,可能需要注意避免前端的安全漏洞,但用户的问题更侧重于访问控制本身。 另外,用户可能想知道具体的技术实现,比如代码层面的权限检查,或者如何配置RBAC。引用[4]提到了Druid监控漏洞的解决,其中RBAC的实施是一个例子,可以举类似的例子说明。 需要确保回答覆盖以下几个方面: - 角色权限的定义 - 最小权限原则 - 前后端权限验证 - 定期审计测试 - 日志监控 - 使用安全工具 最后,生成相关问题,比如如何设计RBAC系统,或者如何审计权限设置等。</think>### 如何防止访问控制漏洞访问控制漏洞通常由权限管理缺陷导致,例如未授权访问敏感数据或功能。以下是预防此类漏洞的最佳实践解决方案: --- #### 一、实施基于角色的访问控制(RBBAAC) 1. **明确定义角色与权限** 根据业务需求划分角色(如管理员、普通用户、审计员等),并为每个角色分配最小必要权限[^4]。例如,普通用户不应具备删除数据库的权限。 2. **动态权限检查** 在每次请求时验证用户权限,而非仅在登录时验证。例如,在后端接口中添加权限校验逻辑: ```java // 示例:Spring Security权限注解 @PreAuthorize("hasRole('ADMIN')") public void deleteResource(String resourceId) { // 删除操作 } ``` 3. **最小权限原则** 避免赋予用户超出其职责范围的权限。例如,数据录入员只能修改特定字段,不能访问系统配置[^4]。 --- #### 二、前后端双重验证 - **前端验证**:隐藏无权访问的UI元素(如按钮、菜单),但不可依赖前端作为唯一防线[^2]。 - **后端强制验证**:所有API请求必须在服务端校验用户权限,防止绕过前端直接调用接口[^1]。 --- #### 三、定期审计与渗透测试 1. **权限配置审查** 定期检查角色权限分配是否合理,例如使用自动化工具扫描冗余权限。 2. **模拟攻击测试** 通过渗透测试工具(如OWASP ZAP)模拟越权操作,验证系统防御能力。 --- #### 四、日志与实时监控 - **记录关键操作**:如用户登录、权限变更、敏感数据访问等,需记录操作者、时间IP地址。 - **异常行为告警**:监控高频失败登录、非常规时间访问等行为,及时触发告警[^3]。 --- #### 五、使用安全框架与工具 - **集成成熟框架**:如Spring Security、Apache Shiro,提供开箱即用的权限管理模块。 - **云安全工具**:利用AWS IAM、Azure RBAC等云服务商提供的访问控制工具。 --- ### 示例场景 假设一个医疗系统中,医生角色可以查看患者病历,但护士角色仅能录入基础数据。通过RBAC配置,护士无法通过修改URL参数访问医生接口,因为后端会校验角色权限。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值