目录
一、概述
相较于OWASP Top 10:2017,访问控制中断从第五位上升,94% 的应用程序接受了某种形式的访问控制中断测试,平均发生率为 3.81%,在贡献的数据集中出现次数最多,超过 318k。值得注意的常见弱点枚举 (CWE) 包括CWE-200:将敏感信息暴露给未经授权的参与者、CWE-201:通过发送的数据暴露敏感信息和CWE-352:跨站点请求伪造。
二、描述
访问控制强制执行策略,使用户不能在其预期权限之外采取行动。故障通常会导致未经授权的信息泄露、修改或破坏所有数据或执行超出用户限制的业务功能。常见的访问控制漏洞包括:
-
违反最小特权原则或默认拒绝,其中仅应授予特定能力、角色或用户访问权限,但任何人都可以访问。
-
通过修改 URL(参数篡改或强制浏览)、内部应用程序状态或 HTML 页面,或使用攻击工具修改 API 请求来绕过访问控制检查。
-
通过提供其唯一标识符(不安全的直接对象引用)来允许查看或编辑其他人的帐户
-
访问 API 时缺少对 POST、PUT 和 DELETE 的访问控制。
-
特权提升。在未登录的情况下充当用户或以用户身份登录时充当管理员。
-
元数据操作,例如重放或篡改 JSON Web 令牌 (JWT) 访问控制令牌,或用于提升权限或滥用 JWT 失效的 cookie 或隐藏字段。
-
CORS 错误配置允许来自未经授权/不受信任的来源的 API 访问。
-
强制以未经身份验证的用户身份浏览经过身份验证的页面或以标准用户身份浏览特权页面
三、攻击场景示例
场景 #1:应用程序在访问帐户信息的 SQL 调用中使用未经验证的数据:
pstmt.setString(1, request.getParameter("acct")); ResultSet results = pstmt.executeQuery( );
攻击者只需修改浏览器的“acct”参数即可发送他们想要的任何帐号。如果没有正确验证,攻击者可以访问任何用户的帐户。
https://example.com/app/accountInfo?acct=notmyacct
场景#2:攻击者只是强制浏览到目标 URL。访问管理页面需要管理员权限。
https://example.com/app/getappInfo https://example.com/app/admin_getappInfo
如果未经身份验证的用户可以访问任一页面,那就是一个缺陷。如果非管理员可以访问管理页面,这就是一个缺陷。