浅谈越权漏洞
越权漏洞是一种很常见的逻辑安全漏洞。是由于服务器端对客户提出的数据操作请求过分信任,忽略了对该用户操作权限的判定,导致修改相关参数就可以拥有了其他账户的增、删、查、改功能,从而导致越权漏洞。
1、 分类
根据对数据库的操作进行分类,可以分为以下几类:越权查询、越权删除、越权修改、越权添加等。
根据维度进行分类,可分为:平行越权、垂直越权、交叉越权。
平行越权:权限类型不变,权限ID改变;如:同是普通用户,其中一个用户可查看其它用户信息。常见的就是通过修改某一个ID参数来查看其他用户的信息,比如你查看自己的信息时,发现URL连接中,或者http请求头中有一个userID的参数,然后你修改这个参数就可以查看那个人信息了!
垂直越权:权限ID不变,权限类型改变;如普通用户可使用管理员权限进行操作。如你登录时,发现cookie中有一个roleID的角色参数,那么可以通过修改该ID为1或者0,根据具体情况来定,就可以使用管理员权限了!
交叉越权:权限类型改变,权限ID也改变。
2、 越权漏洞危害
越权漏洞的危害与影响主要是与对应业务的重要性相关,比如说某一页面服务器端响应(不局限于页面返回的信息,有时信息在响应包中,页面不一定能看见)中返回登录名、登录密码、手机号、×××等敏感信息,如果存在平行越权,通过对用户ID的遍历,就可以查看所有用户的敏感信息,这也是一种变相的***,而且很难被防火墙发现,因为这和正常的访问请求没有什么区别,也不会包含特殊字符,具有十足的隐秘性。
3、如何检测越权漏洞
最简单的一种检测方式是,首先是通过定位鉴权参数,然后替换为其他账户鉴权参数的方法来发现越权漏洞。
4、 越权漏洞修复方案
1、基础安全架构,完善用户权限体系。要知道哪些数据对于哪些用户,哪些数据不应该由哪些用户操作;
2、鉴权,服务端对请求的数据和当前用户身份做校验;
3、不要直接使用对象的实名或关键字。
4、对于可控参数进行严格的检查与过滤!