页面是否进行权限判断;
页面提交的资源标志是否与已登录的用户身份进行匹配比对;
用户登录后,服务器端不应再以客户端提交的用户身份信息为依据,而应以会话中保存的已登录的用户身份信息为准;
必须在服务器端对每个请求URL 进行鉴权,而不能仅仅通过客户端的菜单屏蔽或者Disable 按钮来限制。
横向越权测试:
横向越权测试包括两个方面:一是基于用户身份处理的横向越权操作测试;二是基于资源ID处理的横向越权操作测试。
Web 系统正常运行时,系统存在一个身份级别的控制,如某个页面(http://www.testingba.com/abc.html)提交的参数中是否有一个代表用户身份的标志(如operator)或有一个代表资源的标志(如resource_id)。具体的测试步骤如下:
-
步骤1:运行WebScarab,选中Intercept requests。
-
步骤2:打开浏览器,在代理服务器地址中配置地址为127.0.0.1,端口为8008。
-
步骤3:使用用户A 的身份进行登录。
-
步骤4:进入http://www.testingba.com/abc.html 页面,提交数据。
-
步骤5:在弹出的对话框中的URLEncoded 页面中,更改用户身份标志(如operator)或更改资源标志(resource_id)参数,更改值为用户B 所属的用户身份标志或资源标志,再单击Accept Changes 按钮提交。
-
步骤6:观察服务器处理,服务器返回登录失败。
说明:如果参数是基于GET 方式的URL 传递,则不需要通过WebScarab 工具,直接在URL 中修改相关信息提交即可。
纵向越权测试:
使用横向越权的测试方法同样可以对纵向越权进行测试,如果从代码的角度来测试,也可以对该功能进行全面的覆盖测试。主要包括三个方面:基于菜单URL 测试、基于源代码测试和漏洞扫描。
1)基于菜单URL 测试主要是发现应用中是否存在URL 纵向越权操作,测试步骤如下:
步骤1:以超级管理员身份登录Web 系统。
步骤2:单击右键,在弹出菜单中选择“查看源文件”。
步骤3:在源文件中查找管理菜单(如用户管理)的URL 链接,并拷贝该URL 链接地址。
步骤4:退出登录,再使用普通用户身份登录该Web 系统。
步骤5:在浏览器地址栏中输入步骤3 中拷贝的URL 链接地址,并访问该URL。
步骤6:观察普通用户是否能登录“用户管理”页面,并进行用户管理操作。正常的是普通用户不能访问“用户管理”的URL 地址。