什么是越权访问漏洞?
越权访问(Broken Access Control,简称BAC)是Web应用程序中一种常见的漏洞,由于其存在范围广、危害大,被OWASP列为Web应用十大安全隐患的第二名。
该漏洞是指应用在检查授权时存在纰漏,使得攻击者在获得低权限用户账户后,利用一些方式绕过权限检查,访问或者操作其他用户或者更高权限。越权漏洞的成因主要是因为开发人员在对数据进行增、删、改、查询时对客户端请求的数据过分相信而遗漏了权限的判定。
漏洞分类
- 水平越权访问漏洞
水平越权访问是一种“基于数据的访问控制”设计缺陷引起的漏洞。由于服务器端在接收到请求数据进行操作时没有判断数据的所属人/所属部门而导致的越权数据访问漏洞。
有AB两个账户属于同级权限,A登入后可以使用一些方式例如传B得ID可以查到B得数据。就是水平越权访问
- 垂直越权访问漏洞
垂直越权是一种“基于URL的访问控制”设计缺陷引起的漏洞,又叫做权限提升攻击。
很多系统在做权限访问控制时仅仅做了展示层面得控制实际后端并未做权限校验,那么假设一个低权限账号登入后,可以通过猜测url得方式访问到他不具有权限得URL
开发层面理解
对于以上两种漏洞在开发层面得理解就可以划分为
水平越权==数据权限
垂直越权==菜单权限
水平权限设计时关键数据不能由前端传。
例如:例如根据订单号查询和用户id查询订单时,一定要加用户id校验并且用户id只能从后端获取,假如你得订单是有序得将会被人猜解,如果你没有用户id校验那么别人得订单信息也会被返回。(血得教训:曾经就有个同事因此被公司开除了)垂直权限,大部分管理系统基于RBAC权限管理,一定要严格按照权限控制体系进行权限分配。