漏洞描述:
越权访问,这类漏洞是指应用在检查授权(Authorization)时存在纰漏,使得攻击者在获得低权限用户帐后后,可以利用一些方式绕过权限检查,访问或者操作到原本无权访问的高权限功能。在实际的代码安全审查中,这类漏洞往往很难通过工具进行自动化检测,因此在实际应用中危害很大。其与未授权访问有一定差别。
越权分为水平越权和垂直越权。
水平越权即,A和B都是同一级别的普通用户,但A可以通过越权查看B的个人信息。
垂直越权即,a是超级管理员,b是普通用户,但b可以看到访问一些或全部只有a才能访问的页面。
测试方法:
1、以超管 admin(高权限用户) 身份登录系统
2、找到一个只有超管(高权限)才有的功能的链接,比如:"http://localhost/mywebappname/userManage/userList.do" , 显示出所有的user,并复制此链接。
3、以普通用户登陆进系统,在地址栏输入: userManage/userList.do,如果可以查看到其所有的user,则就造成了,普通用户的越权访问。
检测说明:权限管理测试更多的是进行人工分析,自动化工具无法了解页面的具体应用场景以及逻辑判断过程。因此这里的测试需要首先测试人员理解测试业务系统的逻辑处理流程,并在此基础上进行如下测试。这里有几个测试的参考依据:
1.页面是否进行权限判断;
2.页面提交的资源标志是否与已登陆的用户身份进行匹配比对;
3.用户登陆后,服务器端不应再以客户端提交的用户身份信息为依据,而应以会话中保存的已登陆的用户身份信息为准;
4.必须在服务器端对每个请求URL进行鉴权,而不能仅仅通过客户端的菜单屏蔽或者按钮Disable来限制。
风险分析:目前存在着两种越权操作类型:横向越权操作和纵向越权操作。前者指的是攻击者尝试访问与他拥有相同权限的用户的资源;而后者指的是一个低级别攻击者尝试访问高级别用户的资源,如图所示的情况。
漏洞等级:
【高危】:任意水平或垂直越权
修复方案:
对用户操作进行权限校验,防止通过修改参数进入未授权页面及进行非法操作,建议在服务端对请求的数据和当前用户身份做校验检查。
流程描述:在服务器接收到用户发送的页面访问请求时,根据预设的识别策略,从用户的页面访问请求中提取该用户对应的用户唯一标识信息,同时提取所述页面访问请求对应的应答页面中的表单及该表单中不可修改参数,将所述表单及不可修改参数与所述用户唯一标识信息绑定后记录到参数列表中;检测到用户提交请求页面的表单时,将所述请求页面的表单及不可修改参数与该用户对应的所述参数列表中记录的表单及不可修改参数进行比对,控制该用户的访问。