本章节主要讲解“软件的权限管理测试”的内容,目前存在着两种越权操作类型:横向越权操作和纵向越权操作。前者指的是攻击者尝试访问与其拥有相同权限的用户的资源;而后者指的是一个低级别攻击者尝试访问高级别用户的资源。如图12-18 所示。
图12-18 越权操作类型
权限管理测试更多的是进行人工分析,自动化工具无法了解页面的具体应用场景及逻辑判断过程。因此这里的软件测试需要首先测试人员理解测试业务系统的逻辑处理流程,并在此基础上进行如下测试:
页面是否进行权限判断;
页面提交的资源标志是否与已登录的用户身份进行匹配比对;
用户登录后,服务器端不应再以客户端提交的用户身份信息为依据,而应以会话中保存的已登录的用户身份信息为准;
必须在服务器端对每个请求URL 进行鉴权,而不能仅仅通过客户端的菜单屏蔽或者Disable 按钮来限制。
(1)横向越权测试。
横向越权测试包括两个方面:一是基于用户身份处理的横向越权操作测试;二是基于资源ID处理的横向越权操作测试。
Web 系统正常运行时,系统存在一个身份级别的控制,如某个页面(www.testingba.com/abc.html)提交的参数中是否有一个代表用户身份的标志(如operator)或有一个代表资源的标志(如resource_id)。
具体的测试步骤如下:
步骤1:运行WebScarab,选中Intercept requests。
步骤2:打开浏览器,在代理服务器地址中配置地址为127.0.0.1,端口为8008。
步骤3:使用用户A 的身份进行登录。
步骤4:进入www.testingba.com/abc.html 页面,提交数据。
步骤5:在弹出的对话框中的URLEncoded 页面中,更改用户身份标志(如operator)或更改资源标志(resource_id)参数,更改值为用户B 所属的用户身份标志或资源标志,再单击AcceptChanges 按钮提交。
步骤6:观察服务器处理,服务器返回登录失败。
如果参数是基于GET 方式的URL 传递,则不需要通过WebScarab 工具,直接在URL 中修改相关信息提交即可。
(2)纵向越权测试。
使用横向越权的测试方法同样可以对纵向越权进行测试,如果从代码的角度来测试,也可以对该功能进行全面的覆盖测试。主要包括三个方面:基于菜单URL 测试、基于源代码测试和漏洞扫描。
1)基于菜单URL 测试主要是发现应用中是否存在URL 纵向越权操作,测试步骤如下:
步骤1:以超级管理员身份登录Web 系统。
步骤2:单击右键,在弹出菜单中选择“查看源文件”。
步骤3:在源文件中查找管理菜单(如用户管理)的URL 链接,并拷贝该URL 链接地址。
步骤4:退出登录,再使用普通用户身份登录该Web 系统。
步骤5:在浏览器地址栏中输入步骤3 中拷贝的URL 链接地址,并访问该URL。
步骤6:观察普通用户是否能登录“用户管理”页面,并进行用户管理操作。正常的是普通用户不能访问“用户管理”的URL 地址。
2)基于源代码测试主要是发现页面中是否存在纵向越权操作。假设源代码存放的目录为c:\webtest,页面为JSP。
测试步骤如下:
步骤1:在“开始”→“运行”中输入cmd 命令,运行cmd 应用程序。
步骤2:切换到源代码所在的目录。
步骤3:输入命令dir /B *.jsp>test.html。
步骤4:使用UltraEdit 编辑器打开test.html 文件。
步骤5:将^p 的内容替换为">test^p< a href="http://192.168.1.1/webapp/,并保存修改。
步骤6:使用浏览器打开test.html 文件。
步骤7:依次单击页面中的test 链接,观察访问结果,并进行记录。
步骤8:使用低级别的用户身份登录Web 系统,保持浏览器窗口,重复步骤7 的操作。
步骤9:观察结果,结果应该是不能访问页面,系统提示相关信息。
3)漏洞扫描主要是使用扫描工具来测试页面中是否存在纵向越权操作,测试步骤如下:
步骤1:安装AppScan 扫描工具。
步骤2:选择File→New 选项,新建扫描,扫描的模板设置为Default,并单击Next 按钮。
步骤3:在Starting URL 中输入待扫描的目标服务器域名或IP 地址,不修改其他项配置,单击Next 按钮。
步骤4:设置Recorded Login 的值为默认值(recommended method),单击Next 按钮。
步骤5:在弹出的页面中,用权限较高的用户身份登录(如管理员admin 等)。
步骤6:关闭页面,弹出如图12-19 所示的对话框,单击OK 按钮。
步骤7:不修改任何参数,单击Next 按钮。
步骤8:不修改参数,选择Start a full automatic scan,单击Finish 按钮完成设置,并开始扫描。
步骤9:扫描完成后,保存扫描结果,如user.scan。
步骤10:重新开始再扫描一次,重复步骤1~3。
步骤11:在步骤4 中选择用户身份时,选择NoLogin 单选项,如图12-20 所示,单击Next按钮。
步骤12:在弹出的配置对话框中(即步骤7 的对话框)中单击Advanced Test Settings 按钮,弹出如图12-21 所示的对话框,单击Configure 按钮。
步骤13:弹出如图12-22 所示的窗口,单击Add 按钮,添加已扫描的结果文件,在此步骤中添加步骤9 保存的结果文件。
图12-19 Session Information 对话框
图12-20 选择用户身份
图12-21 Advanced 对话框
图12-22 Privilege Escalation 窗口
步骤14:单击OK 按钮返回扫描配置对话框(即步骤7 的对话框),单击Next 按钮。
步骤15:在步骤8 所示对话框中,不需修改参数,单击Finish 按钮开始进行越权扫描。
步骤16:扫描完成后保存结果,并对结果进行分析,扫描的结果文件中不应提示存在漏洞。
本章节关于“软件的权限管理测试”的内容就学习到这里,大家觉得文章有用的话记得每天来这里和小编一起学习涨薪技能哦。