Web网站安全测试用例指南
1.1. 自动化Web漏洞扫描工具测试
自动化扫描工具只能检测到部分常见的漏洞(如跨站脚本、SQL注入等),不是针对用户代码的,也就是说不能理解业务逻辑,无法对这些漏洞做进一步业务上的判断。自动化工具测试可以为手工测试提供一些线索方便下一步的手工测试。
编号 | SEC_WEB_001 |
---|---|
测试用例名称 | APPScan appication 扫描测试 |
测试目的 | 用自动化的Web安全扫描工具AppScan进行扫描,以发现Web应用中存在的常见漏 |
用例级别 | 高 |
测试条件 | 1、已知Web服务器域名或IP地址 2、Web业务运行正常 3、测试用机上安装了AppScan |
执行步骤 | 1、双击运行AppScan,选择file—new新建扫描,选择扫描模板default |
预期结果 | 经过对扫描结果分析,确认不存在“中等等级”及以上级别的漏洞。 |
备注 | 注意:该用例的执行对被测系统的性能影响比较大,而且可能导致一些垃圾数据,建议只在测试环境执行。 由于自动化工具在很多情况下只是提示一种漏洞存在的可能,因此需要对所有的结果进行人工的分析判断。分析过程参考以下章节的测试项,使用辅助工具或者是手动验证。 |
编号 | SEC_WEB_002 |
---|---|
测试用例名称 | GET方式跨站脚本测试 |
测试目的 | 由于跨站脚本会导致会话被劫持、敏感信息泄漏、账户被盗,严重时甚至造成数据修改、删除,从而导致业务中断,因此需检测跨站脚本是否存在 |
用例级别 | 高 |
测试条件 | 1、Web业务运行正常 2、已知待测目标URL,假设为http://www.exmaple.com/page.xxx 3、待测目标存在参数输入,假设为name=value 4、在某种情况下,用户输入被重新显示在网页上,包括名字、帐号、检索结果等等(说明目标网站服务器并没有对用户提交数据检测 |
执行步骤 | 1、在输入的参数后逐条添加以下语句,以第一条为例,输入http://www.exmaple.com/page.xxx?name=<script>alert(123456)</script>只要其中一条弹出显示123456的告警框,就说明存在跨站漏洞,记录漏洞,停止测试。 |
预期结果 | 不存在跨站脚本漏洞 |
备注 | 需要对页面上所有可以提交参数的地方进行测试。具体跨站脚本的测试语句根据实际情况的不同而不同,这里列出了一些最常见构造语句。 AppScan可以找出扫描到的页面的绝大部分跨站脚本漏洞,但对没有扫描到的网页就无能为力了。 |
编号 | SEC_WEB_003 |
---|---|
测试用例名称 | POST方式跨站脚本测试 |
测试目的 | 由于跨站脚本会导致会话被劫持、敏感信息泄漏、账户被盗,严重时甚至造成数据修改、删除,从而导致业务中断,因此需检测跨站脚本是否存在 |
用例级别 | 高 |
测试条件 | 1、Web业务运行正常 2、已知待测目标URL,假设为http://www.exmaple.com/page.xxx 3、待测目标以POST方式提交参数,显示为表单方式 在某种情况下,用户输入被重新显示在网页上,包括名字、帐号、检索结果等等(说明目标网站服务器并没有对用户提交数据检测) |
执行步骤 | 1、在POST表单中逐条输入以下语句,只要其中一条弹出显示123456的对话框,就说明存在跨站漏洞,记录漏洞,停止测试。 <script>alert(123456)</script> |
预期结果 | 不会弹出显示123456的对话框。 |
备注 | 需要对页面上所有可以提交参数的地方进行测试 |
编号 | SEC_WEB_004 |
---|---|
测试用例名称 | 手工SQL注入测试 |
测试目的 | 由于SQL注入有可能造成信息泄漏,在严重情况下(根据使用的数据库而定)甚至可能造成数据修改、删除,从而导致业务中断。因此必须发现所有存在的注入点。 |
用例级别 | 高 |
测试条件 | 1、Web业务运行正常 2、已知待测目标URL,假设为http://www.exmaple.com/page.xxx 3、待测目标存在参数输入,假设为name=value |
执行步骤 | 1、观察参数的值value是否为数字型。如果是数字型进行数字型测试,否则跳到第4步进行字符型测试(例如如果出现a那说明是字符型,如果出现2则将其当做数字型测试) 2、将被测参数后加上测试语句“and 1=1”,即:地址栏中填入“http://www.exmaple.com/page.xxx?name=value and 1=1”, 如果返回正确页面则进行下一步操作,否则跳到第4步。 3、将被测参数后加上测试语句“and 1=2”(这里以第n个参数为例),其他参数保持不变,即:地址栏中填入“http://www.exmaple.com/page.xxx? name=value and 1=2”, 如果返回正确页面则进行下一步操作,否则该参数存在注入漏洞,完成测试 4、将被测参数后加上测试语句“’ and ‘1’=’1”,即:地址栏中填入“http://www.exmaple.com/page.xxx? name=value’ and ‘1’=’1”, 如果返回正确页面则进行下一步操作,否则该参数存在注入漏洞,完成测试 将被测参数后加上测试语句“’ and ‘1’=’2”,即:地址栏中填入“http://www.exmaple.com/page.xxx? name=value’ and ‘1’=’2”, 如果返回正确页面则不存在漏洞,否则该参数存在注入漏洞,完成测试 |
预期结果 | 不存在注入点 |
备注 | 1、页面可能接受多个参数,需对每个参数都进行测试 2、如果客户端script对输入数据进行合法行校验,阻止非法数据,通过WebScarab拦截并修改参数值,绕过客户端数据校验。 3、POST、AJAX以及隐藏域提交参数也需要测试(方法是通过WebScarab拦截HTTP请求,找到提交的参数并参照上面的方法修改参数值) 本测试包含了现有最常见的两种测试方法 |
编号 | SEC_WEB_005 |
---|---|
测试用例名称 | 自动化工具SQL注入测试get方式 |
测试目的 | 由于SQL注入有可能造成信息泄漏,在严重情况下(根据使用的数据库而定)甚至可能造成数据修改、删除,从而导致业务中断。因此必须发现所有存在的注入点。 |
用例级别 | 高 |
测试条件 | 1、Web业务运行正常 2、已知待测目标URL,假设为http://www.exmaple.com/page.xxx 3、待测目标存在参数输入,假设为name=value 4、测试用机安装了sqlmap测试工具 |
执行步骤 | 1、运行sqlmap 2、输入测试地址执行http://www.exmaple.com/page.xxx?name=value 3、观察结果 |
预期结果 | 可得到目标服务器的注入类型和数据库类型。 |
备注 | 页面可能接受多个参数,需对每个参数都进行测试 |
编号 | SEC_WEB_006 |
---|---|
测试用例名称 | |
测试目的 | |
用例级别 | |
测试条件 | |
执行步骤 | |
预期结果 | |
备注 |
==========================未完待续==================================