A7 - 功能级访问控制缺失
功能级的保护是通过系统配置管理的,当系统配置错误时,开发人员必须做相应的代码检查,否则应用程序不能正确的保护页面请求。攻击者就是利用这种漏洞访问未经授权的功能模块。
很多系统的权限控制是通过页面灰化或隐藏URL实现的,没有在服务器端进行身份确认和权限验证,导致攻击者通过修改页面样式或获取隐藏URL,进而获取特权页面来对系统进行攻击,或者在匿名状态下对他人的页面进行攻击,从而获取用户数据或提升权限。
此类问题主要是系统在开发或者设计阶段,没有考虑攻击场景,以为看不到就是安全的,这种系统说白了是服务端没有进行权限控制和身份校验,才给了攻击者可乘之机。
那么应对此类问题的方法主要有如下几个点:
1、设计严格的权限控制系统,对于每个请求和URL都要进行校验和权限确认,防止非法请求被执行;
2、默认情况下,应该拒绝执行所有访问权限,也就是说缺省不给用户任何权限,防止攻击者利用缺省权限执行攻击等;
3、对于每个功能的访问,都要有明确的角色授权,采用过滤器的方式校验每个请求的合法性,针对非法攻击要能够及时识别出来并锁定该攻击者IP;
4、实现Web访问的IP白名单列表,禁止不可信的IP访问Web系统,能够极大降低此类问题的发生;
好了,权限管理是很复杂的,每个系统都有自己的实现方式,但归根结底就是要确保正确的用户做自己该做的事情,只要基于这个目标去实现就可以防止越权问题的出现。