Part9:越权访问-认证和授权类

漏洞分类:

认证和授权类

漏洞名称:

越权访问

漏洞描述:

越权访问,这类漏洞是指应用在检查授权(Authorization)时存在纰漏,使得攻击者在获得低权限用户帐后后,可以利用一些方式绕过权限检查,访问或者操作到原本无权访问的高权限功能。在实际的代码安全审查中,这类漏洞往往很难通过工具进行自动化检测,因此在实际应用中危害很大。其与未授权访问有一定差别。目前存在着两种越权操作类型:横向越权操作和纵向越权操作。前者指的是攻击者尝试访问与他拥有相同权限的用户的资源;而后者指的是一个低级别攻击者尝试访问高级别用户的资源,如图所示的情况:

风险等级:

通常视业务重要性定为中危高危,因为这种漏洞会使低权限用户执行高权限操作,与其他漏洞组合利用可能会危及服务器安全。

检测条件:

① Web业务存在不同级别的权限(角色);

② 拥有高、低权限的用户名和密码。

测试方法:

1、以admin(高权限用户)身份登录系统;

2、找到一个只有admin(高权限用户)才有的功能的链接,比如说:"http://localhost/mywebappname/userManage/userList.do" , 显示出所有的user,并复制此链接;

3、以普通用户(低权限用户)登陆进系统,在地址栏输入: userManage/userList.do ,如果可以查看到其所有的user,则就造成了低权限用户的纵向越权。

检测说明:

权限管理测试更多的是进行人工分析,自动化工具无法了解页面的具体应用场景以及逻辑判断过程。因此这里的测试需要首先测试人员理解测试业务系统的逻辑处理流程,并在此基础上进行如下测试。这里有几个测试的参考依据:

①页面是否进行权限判断;

②页面提交的资源标志是否与已登陆的用户身份进行匹配比对;

③用户登陆后,服务器端不应再以客户端提交的用户身份信息为依据,而应以会话中保存的已登陆的用户身份信息为准;

④必须在服务器端对每个请求URL进行鉴权,而不能仅仅通过客户端的菜单屏蔽或者按钮Disable来限制。

修复方案:

对用户操作进行权限校验,防止通过修改参数进入未授权页面及进行非法操作,建议在服务端对请求的数据和当前用户身份做一个校验检查。

流程描述:在服务器接收到用户发送的页面访问请求时,根据预设的识别策略,从用户的页面访问请求中提取该用户对应的用户唯一标识信息,同时提取所述页面访问请求对应的应答页面中的表单及该表单中不可修改参数,将所述表单及不可修改参数与所述用户唯一标识信息绑定后记录到参数列表中;检测到用户提交请求页面的表单时,将所述请求页面的表单及不可修改参数与该用户对应的所述参数列表中记录的表单及不可修改参数进行比对,控制该用户的访问。例如:

登陆时将用户名存入session

session.setAttribute("username",username);

在相关页面判断

if((String)session.getAttribute("username")!=admin){

(response.sendRedirect("xxx.jsp")};

注意: xxx.jsp为自定义的错误页面。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181009G0FCEY00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券