Web安全测试—03输入数据测试

SQL注入测试

  SQL注入是针对一种数据库而言的,而不是针对网页语言。在任何使用了数据库查询环境下都可能存在。常见的数据库包括:MSSQL、Oracle、Informix、Db2、Access、Sybase等。

  所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。

  SQL注入受到的威胁,(但不限于)以下几种情况:

  • 据泄漏
  • 修改现有数据
  • 插入新数据
  • 任意的文件系统访问
  • 任意的网络访问
  • 系统泄漏

  针对不同的数据库系统使用的一些函数会有所不同,不过从测试是否存在SQL注入的角度考虑,只需要进行几个最基本的判断语句就可以了。

编号

Web_ 01

测试用例名称

手工SQL注入测试

测试目的

由于SQL注入有可能造成信息泄漏,在严重情况下(根据使用的数据库而定)甚至可能造成数据修改、删除,从而导致业务中断。因此必须发现所有存在的注入点。

用例级别

一级

测试条件

  1. Web业务运行正常
  2. 已知待测目标URL,假设为http://www.example.com/page.xxx
  3. 待测目标存在参数输入,假设为name=value

执行步骤

  1. 观察参数的值value是否为数字型。如果是数字型进行数字型测试,否则跳到第4步进行字符型测试(例如如果出现a那说明是字符型,如果出现2则将其当做数字型测试)
  2. 将被测参数后加上测试语句“and 1=1”,即:地址栏中填入“http://www.example.com/page.xxx?name=value and 1=1”, 如果返回正确页面则进行下一步操作,否则跳到第4步。
  3. 将被测参数后加上测试语句“and 1=2”(这里以第n个参数为例),其他参数保持不变,即:地址栏中填入“http://www.example.com/page.xxx? name=value and 1=2”, 如果返回正确页面则进行下一步操作,否则该参数存在注入漏洞,完成测试
  4. 将被测参数后加上测试语句“’ and ‘1’=’1”,即:地址栏中填入“http://www.example.com/page.xxx? name=value’ and ‘1’=’1”, 如果返回正确页面则进行下一步操作,否则该参数存在注入漏洞,完成测试
  5. 将被测参数后加上测试语句“’ and ‘1’=’2”,即:地址栏中填入“http://www.example.com/page.xxx? name=value’ and ‘1’=’2”, 如果返回正确页面则不存在漏洞,否则该参数存在注入漏洞,完成测试

预期结果

不存在注入点

备注

  1. 页面可能接受多个参数,需对每个参数都进行测试
  2. 如果客户端脚本对输入数据进行合法行校验,阻止非法数据,可以通过方法(通过WebScarab拦截并修改参数值),绕过客户端数据校验。
  3. POST、AJAX以及隐藏域提交参数也需要测试(方法是通过WebScarab拦截HTTP请求,找到提交的参数并参照上面的方法修改参数值)
  4. 本测试包含了现有最常见的两种测试方法

测试结果

编号

Web _02

测试用例名称

自动化工具SQL注入测试

测试目的

由于SQL注入有可能造成信息泄漏,在严重情况下(根据使用的数据库而定)甚至可能造成数据修改、删除,从而导致业务中断。因此必须发现所有存在的注入点。

用例级别

一级

测试条件

  1. Web业务运行正常
  2. 已知待测目标URL,假设为http://www.example.com/page.xxx
  3. 待测目标存在参数输入,假设为name=value
  4. 测试用机安装了pangolin测试工具

执行步骤

  1. 运行pangolin
  2. 在URL输入框中输入http://www.example.com/page.xxx?name=value
  3. 点击Check按钮执行扫描操作
  4. 观察结果

预期结果

Pangolin工具不能得到目标服务器的注入类型和数据库类型。

备注

页面可能接受多个参数,需对每个参数都进行测试

测试结果

命令执行测试

编号

Web _03

测试用例名称

命令执行测试

测试目的

某些页面可能接受类似于文件名的参数用于下载或者显示内容。

用例级别

一级

测试条件

  1. Web业务运行正常
  2. 已知某页面URL(假设为http://www.example.com/abc.jsp)接收参数,且参数中接收类似于系统命令的字符(假设为cmd=ls)

执行步骤

  1. 更改参数的值为其他命令,可以尝试以下一些字符串:
    net user
    ipconfig
    cat /etc/passwd
  2. 观察页面返回信息。比如使用net user命令的话,页面中可能包含类似于如下的字符串:
    \\host 的用户帐户
    Administrator           

预期结果

页面的源代码中不包含类似于系统命令的返回信息。

  • 6
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

虚空劫灰往事书@布耶尔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值