访问控制漏洞
- 访问控制定义:访问控制(或授权)是应用对谁(或什么)可以执行尝试的操作或访问他们请求的资源的约束。在Web应用程序的上下文中,访问控制依赖于身份验证和会话管理。
- 访问控制类型:从用户的角度来看,访问控制可以分为以下几类:垂直访问控制、水平访问控制和上下文依赖的访问控制。
- 访问控制漏洞:访问控制漏洞存在于用户实际上可以访问他们不应该能够访问的某些资源或执行某些操作的情况下。这包括垂直权限升级(用户可以获得他们不被允许访问的功能的访问权限),水平权限升级(用户能够访问属于其他用户的资源),以及不安全的直接对象引用(IDOR)。
- 防止访问控制漏洞:访问控制漏洞通常可以通过采取深度防御的方法并应用以下原则来防止:永远不要仅依赖于混淆来进行访问控制;除非资源是公开可访问的,否则默认拒绝访问;尽可能使用单一的应用程序范围内的机制来执行访问控制;在代码级别,要求开发人员声明每个资源允许的访问,并默认拒绝访问;彻底审计和测试访问控制,以确保它们按设计工作。
https://portswigger.net/web-security/access-control
访问控制漏洞实战和技巧的总结:
- 访问控制的定义:访问控制(或授权)是对谁(或什么)可以执行尝试的操作或访问他们请求的资源应用的约束。在Web应用程序的上下文中,访问控制依赖于身份验证和会话管理。
- 访问控制的分类:访问控制可以分为垂直访问控制、水平访问控制和上下文依赖的访问控制。垂直访问控制是限制对其他类型用户不可用的敏感功能的访问的机制。水平访问控制是限制对资源的访问的机制,只有特定允许访问这些资源的用户才能访问。上下文依赖的访问控制基于应用程序的状态或用户与其的交互来限制对功能和资源的访问。
- 访问控制的漏洞:访问控制的漏洞存在于用户实际上可以访问他们不应该能够访问的某些资源或执行某些操作的地方。这包括垂直权限升级(用户可以获得他们不被允许访问的功能的访问权限)、未受保护的功能(应用程序不对敏感功能执行任何保护)等。
- 防止访问控制的漏洞:实施安全的设计和默认原则,确保软件对每个请求执行身份验证和授权检查,这些请求修改、删除和访问敏感数据。使用自动化工具进行代码审查,以识别和修复IDOR和其他漏洞。使用间接引用映射,确保在URL中不暴露ID、名称和密钥,用加密强度高、随机的值替换它们。
- 实战技巧:定期进行主动的漏洞扫描和渗透测试,以确保面向互联网的Web应用程序和网络边界是安全的。在选择Web应用程序时进行尽职调查,遵循供应链风险管理的最佳实践,只从信誉良好的供应商那里获取资源。尽快应用Web应用程序的软件补丁。