OWASP TOP 10 A01:2021 – 访问控制损坏

概述
从第五位上升,94% 的应用程序接受了某种形式的访问控制损坏测试,平均发生率为 3.81%,并且在贡献的数据集中出现的次数最多,超过 318,000。值得注意的常见弱点枚举 (CWE) 包括CWE-200:将敏感信息暴露给未经授权的参与者、CWE-201:将敏感信息插入发送数据和CWE-352:跨站点请求伪造。

描述
访问控制强制执行策略,以使用户不能在其预期权限之外进行操作。故障通常会导致未经授权的信息泄露、修改或破坏所有数据或执行超出用户限制的业务功能。常见的访问控制漏洞包括:

违反最小权限原则或默认拒绝,即只应授予特定功能、角色或用户访问权限,但任何人都可以使用。

通过修改 URL(参数篡改或强制浏览)、内部应用程序状态或 HTML 页面,或使用修改 API 请求的攻击工具来绕过访问控制检查。

通过提供其唯一标识符(不安全的直接对象引用)允许查看或编辑其他人的帐户

访问 API 时缺少对 POST、PUT 和 DELETE 的访问控制。

特权提升。在未登录的情况下充当用户或以用户身份登录时充当管理员。

元数据操作,例如重放或篡改 JSON Web 令牌 (JWT) 访问控制令牌,或为提升权限或滥用 JWT 失效而操作的 cookie 或隐藏字段。

CORS 错误配置允许从未经授权/不受信任的来源访问 API。

强制以未经身份验证的用户身份浏览经过身份验证的页面或以标准用户身份浏览特权页面。

如何预防
访问控制仅在受信任的服务器端代码或无服务器 API 中有效,攻击者无法修改访问控制检查或元数据。

除公共资源外,默认拒绝。

实施一次访问控制机制并在整个应用程序中重复使用它们,包括最大限度地减少跨域资源共享 (CORS) 的使用。

模型访问控制应该强制记录所有权,而不是接受用户可以创建、读取、更新或删除任何记录。

域模型应强制执行独特的应用程序业务限制要求。

禁用 Web 服务器目录列表并确保文件元数据(例如,.git)和备份文件不存在于 Web 根目录中。

记录访问控制失败,在适当的时候提醒管理员(例如,重复失败)。

速率限制 API 和控制器访问,以最大限度地减少自动化攻击工具的危害。

有状态的会话标识符应该在注销后在服务器上失效。无状态的 JWT 令牌应该是短暂的,以便最大限度地减少攻击者的机会之窗。对于寿命较长的 JWT,强烈建议遵循 OAuth 标准来撤销访问权限。

开发人员和 QA 人员应包括功能访问控制单元和集成测试。

示例攻击场景
场景 #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
如果未经身份验证的用户可以访问任一页面,这是一个缺陷。如果非管理员可以访问管理页面,这是一个缺陷。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值