阅读文本大概需要3分钟。
小编最近在公司送审的后台接口发现了严重的越权漏洞,今天就和大家谈下为何越权漏洞。
0x01:越权漏洞的产生
越权漏洞是Web应用程序中一种常见的安全漏洞。它的威胁在于一个账户即可控制全站用户数据。当然这些数据仅限于存在漏洞功能对应的数据。越权漏洞的成因主要是因为开发人员在对数据进行增、删、改、查询时对客户端请求的数据过分相信而遗漏了权限的判定。所以测试越权就是和开发人员拼细心的过程
如何演示一个越权问题可以参考
https://blog.csdn.net/weixin_43915842/article/details/90612553
0x02:越权漏洞的分类
横向越权(水平越权):横向越权指的是攻击者尝试访问与他拥有相同权限的用户的资源。例如,两个不同的公司A和B,通过修改请求,公司A可以任意修改B公司的员工、部门、考勤等信息。
纵向越权(垂直越权):纵向越权指的是一个低级别攻击者尝试访问高级别用户的资源。例如,同一个公司不同权限的管理员A和B,通过修改请求,管理员A可以修改不在他管辖范围内的员工的部门、考勤、工资等信息。
交叉越权:同时存在横向越权和纵向越权
0x03:如何查找是否存在越权漏洞
与服务器进行数据交互时客户端携带着标识用户的身份的cookie,当服务端的session与cookie中的身份匹配成功后,才能允许该用户进行相关操作。除了cookie之外,在请求中可能会携带一些参数,细览一下可能存在辨别信息的唯一值,来进行测试。这里要说一点,传输的参数并不一定在请求参数中,也有可能存在于链接等位置。当拦截一个请求后分析是否有参数。
0x04:越权访问漏洞的防范
横向越权:可通过建立用户和可操作资源的绑定关系,用户对任何资源进行操作时,通过该绑定关系确保该资源是属于该用户所有的;对请求中的关键参数进行间接映射,避免使用原始关键参数名。
纵向越权:建议使用基于角色访问控制机制来防止纵向越权攻击,即预先定义不同的权限角色,为每个角色分配不同的权限,每个用户都属于特定的角色,即拥有固定的权限,当用户执行某个动作或产生某种行为时,通过用户所在的角色判定该动作或者行为是否允许。
一个不错解析越权的PPT
https://cloud.tencent.com/developer/news/153635