文档名称 文档密级
3.5.4 注销时会话信息是否清除测试
编号 测试用例名称 测试目的 SEC_Web_ SESSION_04 注销时(logout),会话信息是否清除 由于网站程序在编写上考虑不周,用户注销后会话信息没有清除,导致用户在点击注销按钮之后还能继续访问注销之前(也就是登陆之后)才能访问的页面。我们需要经过测试来判断是否存在此类问题。 用例级别 测试条件 1 1、 已知Web网站地址 2、 Web业务正常运行 3、 存在注销功能的页面 执行步骤 1、 使用合法的账户口令登陆。 2、 开启WebScarab,配置对GET和POST请求进行拦截 3、 在浏览器中配置代理服务器IP为127.0.0.1,端口为8008 4、 在Web页面中进行一些操作(比如修改个人信息),这些操作都会被WebScarab拦截,不修改,在弹出的WebScarab界面中点击“Accept Changes”按钮。这样请求就被WebScarab记录下来。 5、 然后在Web页面中点击注销/退出(logout)。 6、 点击WebScarab的“Manual Request”TAB页,在Previous Requests的下拉列表框中选择“步骤4”所产生的URL请求,然后点击“Fetch Response”,重新发送“步骤4”的URL请求。 7、 在WebScarab的Response的“Raw”Tab页中观察返回结果,如果还能够正常完成“步骤4”的操作,则存在安全漏洞。 预期结果 在WebScarab的Response的“Raw”Tab页中显示“HTTP/1.1 302 Moved Temporarily”,不能够访问只有登陆才能访问的页面,不能完成只有登陆后才能完成的操作。 备注 测试结果 如果存在多个注销功能的页面,要重复测试过程把所有有注销功能的页面测试完。 3.5.5 会话超时时间测试
编号 测试用例名称 测试目的 SEC_Web_ SESSION_05 会话超时时间测试 查看是否存在浏览器窗口闲置超时后需重新登录的机制 2013-8-9
华为机密,未经许可不得扩散 第36页, 共63页
用例级别 测试条件 文档名称 文档密级
1 1、 已知Web网站地址 2、 Web业务运行正常 3、 Web业务存在登陆认证模块 4、 已知正确的用户名、口令 执行步骤 1、 使用正常的用户、口令登录系统。 2、 将浏览器窗口闲置11分钟。 3、 刷新浏览器,查看是否需要重新登录。 备注:也可以登陆后台Web服务器,查看对应的web.xml文件中的session-timeout参数值,该值表示会话的超时时间。 预期结果 备注 测试结果 会话超时时间不大于10分钟,刷新浏览器之后需要重新登录。 3.5.6 会话定置测试
编号 测试用例名称 测试目的 SEC_Web_ SESSION_06 会话定置(session fixation)测试 查看登录成功后会话标识是否变更。如果未变更,那么攻击者就可以通过一些手段(如构造URL)为受害着确定一个会话标识,当受害者登录成功后,攻击者也可以利用这个会话标识冒充受害者访问系统。 用例级别 测试条件 3 1、 已知Web网站地址 2、 Web业务运行正常 3、 Web业务存在登陆认证模块 4、 已知正确的用户名、口令 执行步骤 1、 访问登录页面 2、 开启WebScarab,配置对GET和POST请求进行拦截;并在浏览器中配置代理服务器IP为127.0.0.1,端口为8008 3、 填入正确的用户名和口令,填入正确的验证码,登录 4、 WebScarab跳出拦截界面,点击“RAW”TAB页,查看会话标识(例如JSP的会话标识为JSESSIONID)的值。 5、 点击“Accept Changes”,登录成功。 6、 成功登录后,点击系统提供的链接,请求任意功能页面。 7、 WebScarab再次跳出拦截界面,点击“RAW”TAB页,查看(例如JSP的会话标识为JSESSIONID)的值。 2013-8-9
华为机密,未经许可不得扩散
第37页, 共63页
文档名称 文档密级
8、 如果步骤4和步骤7查看到的会话标识的值一样,说明登录前后会话标识没有变更,存在会话定置的安全漏洞。 预期结果 备注 步骤4和步骤7(登录前后)查看到的会话标识的值不一样 虽然会话定置的危害比较大,但由于要事先为受害者确定会话标识,并且让受害者根据此会话标识登录系统,其发生的概率很小,所以综合风险不高,测试时根据被测系统安全要求的高低,来确定是否执行该用例。 测试结果 3.6 权限管理测试
目前存在着两种越权操作类型:横向越权操作和纵向越权操作。前者指的是攻击者尝试访问与他拥有相同权限的用户的资源;而后者指的是一个低级别攻击者尝试访问高级别用户的资源。下图能够比较清晰的描绘出它们之间的关系: 超级管理员E 纵向越权 普通管理员C 普通管理员D 普通用户A 普通用户B 横向越权
权限管理测试更多的是进行人工分析,自动化工具无法了解页面的具体应用场景以及逻辑判断过程。因此这里的测试需要首先测试人员理解测试业务系统的逻辑处理流程,并在此基础上进行如下测试。
这里有几个测试的参考依据: ? 页面是否进行权限判断;
? 页面提交的资源标志是否与已登陆的用户身份进行匹配比对;
? 用户登陆后,服务器端不应再以客户端提交的用户身份信息为依据,而应以会话中
2013-8-9
华为机密,未经许可不得扩散
第38页, 共63页
文档名称 文档密级
保存的已登陆的用户身份信息为准;
? 必须在服务器端对每个请求URL进行鉴权,而不能仅仅通过客户端的菜单屏蔽或者
按钮Disable来限制。
3.6.1 横向测试
编号 测试用例名称 测试目的 用例级别 测试条件 SEC_Web_PRIVI_01 基于用户身份处理的横向越权操作测试 发现页面中存在的横向越权操作。 1 1、 Web业务运行正常 2、 Web业务存在身份级别控制 3、 已知某页面(假设为http://www.example.com/abc.jsp).提交的参数中存在着代表用户(假设为userA)身份的标志(假设为operator), 4、 与userA同级别权限的用户userB 5、 测试用机安装了WebScarab软件(本测试基于20070504版本来描述) 执行步骤 1、 运行WebScarab 2、 点击Proxy标签页->Manual Edit标签页 3、 选中Intercept requests 4、 打开浏览器,在代理地址中配置host为127.0.0.1,port为8008 5、 使用userA的身份登陆到Web应用 6、 进入http://www.example.com/abc.jsp页面,提交数据 7、 在弹出的对话框中的URLEncoded页面中,更改operator参数的值为userB,再点击Accept Changes按钮提交 8、 观察服务器处理 预期结果 备注 服务器返回操作失败或者以userA的用户身份操作。 如果参数是基于GET方式的URL传递,则不需要通过WebScarab工具,直接在URL中进行修改提交即可。 参考资料
编号 测试用例名称 测试目的 SEC_Web_ PRIVI_02 基于资源ID处理的横向越权操作测试 发现页面中存在的横向越权操作。 2013-8-9
华为机密,未经许可不得扩散 第39页, 共63页
用例级别 测试条件 文档名称 文档密级
1 1、 Web业务运行正常 2、 Web业务存在身份级别控制 3、 Web业务存在相同级别的两个用户,假设分别为userA和userB 4、 已知某页面(假设为http://www.example.com/abc.jsp).提交的参数中存在着代表资源的标志(假设为resource_id) 5、 测试用机安装了WebScarab软件(本测试基于20070504版本来描述) 执行步骤 1、 运行WebScarab 2、 点击Proxy标签页->Manual Edit标签页 3、 选中Intercept requests 4、 打开浏览器,在代理地址中配置host为127.0.0.1,port为8008 5、 使用userA的身份登陆到Web应用 6、 进入http://www.example.com/abc.jsp页面,提交数据 7、 在弹出的对话框中的URLEncoded页面中,更改resource_id参数的值为userB所属的资源id,再点击Accept Changes按钮提交 8、 观察服务器处理 预期结果 备注 服务器返回操作失败。 如果参数是基于GET方式的URL传递,则不需要通过WebScarab工具,直接在URL中进行修改提交即可。 参考资料 3.6.2 纵向测试
横向测试的两个用例在本测试类别中同样使用,只需要对用户身份进行测试时使用上下级权限即可。
在下面的测试中,我们更偏向于使用白盒测试。这样对于测试人员来说节约了非常多的时间。而且也能够全面覆盖所有的页面。
编号 测试用例名称 测试目的 用例级别 测试条件 SEC_Web_ PRIVI_03 基于菜单URL的测试 发现应用中存在的URL纵向越权操作。 1 1、 Web业务运行正常 2、 Web业务存在身份级别控制 3、 拥有超级管理员及普通用户的帐号和密码 2013-8-9
华为机密,未经许可不得扩散 第40页, 共63页