从今天开始网工知识角将更新以最新owasp提供的top10为核心的安全类科普,喜欢的小伙伴点个关注持续更新。话不多说,今天要介绍的是A1 权限控制失效。
在更新前A1的位置曾属于注入攻击,就是大家都熟悉的SQL注入等,但随着安全技术的发展,有安全意识的厂商都会对代码进行实体化,避免此类漏洞出现,并且更新后的top10也对其在更广的意义上进行了覆盖,并命名为权限控制失效(Broken Access Control)
与之前大不相同,权限控制失效更像是我们所说的越权,攻击者会通过各种手段去提升自己的权限。越过访问控制后冒充管理员或其他用户,并对目标计算机系统进行增删改查等操作。这一操作过程分为垂直越权和水平越权,垂直越权是指攻击者将普通用户的权限提升至管理员用户权限对系统进行越权操作;而水平越权是指攻击者在拥有用户A权限的情况下,水平获取到用户B的权限进行越权操作。
常见的权限控制失效漏洞利用方法有一下几种:
- 违反最小权限原则,将本应仅负于特定功能角色或用户的访问权限变为任何人都可以使用
- 通过修改URL、应用程序状态、HTML页面或使用自定义API攻击工具来绕过存取控制的检查
- 通过直接引用其唯一标识符,查看或编辑其他人的账户
- 网站缺少在访问API时的post、put、delete的控制
- 提权,在未登录的情况下充当用户,或以用户身份登录时充当管理员
- CORS的错误配置导致允许从不信任的来源访问API
- 未经身份验证的用户浏览身份验证的页面或以标准用户身份浏览特权页面
- 元数据操作,例如重放或篡改json web token(JWT)访问控制令牌,或滥用JWT、cokkie、隐藏字段实现提权
常见的防御手段有以下几种
- 除了公共资源外默认拒绝
- 最大限度减少跨域资源共享的使用,且实施访问控制并要在应用程序中多次使用
- 访问控制模块应强制记录所有权
- 域模块应该强制执行应用程序业务限制需求
- 禁用web服务器目录,并且不要将元数据和备份文件存于web根目录
- 记录失败的访问控制,并向管理员提示告警
- 限制API访问速率,尽可能减少自动化攻击工具的危害
- 有状态会话标识符应在注销后失效,无状态的JWT应短暂使用,尽可能减少攻击窗口,对于长时JWT,建议遵循OAuth标准撤销其权限