随着因特网的不断发展,人们对网络的利用越来越频繁,通过网络进行购物、支付等其他业务操作。而一个潜在的问题是网络的安全性如何担保,一些黑客利用站点安全性的漏洞来盗取用户的信息,利用户的个人信息泄露,以是站点的安全性变得很主要。
Web 系统的安全性测试包括以下内容:
(1)Web 漏洞扫描
(2)做事器端信息测试
(3)文件和目录测试
(4)认证测试
(5)会话管理测试
(6)权限管理测试
(7)文件上传下载测试
(8)信息泄露测试
(9)输入数据测试
(10)跨站脚本攻击测试
(11)逻辑测试
(12)搜索引擎信息测试
(13)Web Service 测试
(14)其他测试
本章节紧张给大家先容第(9)点——输入数据测试
对付客户端输入的数据,不能仅仅通过客户真个脚本进行合法性考验,还必须在做事器中对输入的数据进行考验,这样才能真精确保输入数据的合法性。如果仅仅通过客户真个脚本进行考验,是无法起到安全浸染的,很随意马虎利用HTTP 代码绕过考验。
测试紧张包括以下内容:
>> SQL 注入测试
>>MML 语法注入测试
>> 命令实行测试
(1)SQL 注入测试
SQL 注入测试紧张是针对数据库安全性考验的测试,并不是针对网页代码安全性考验进行测试。这种情形在任何数据库查询环境下都可能存在,常见的数据库包括Oracle、MSSQL、Infomix、DB2、Sybase 等,针对不同的数据库系统,利用的函数有所不同,但从测试的角度来说,一样平常只须要判断几个最基本的语句即可。SQL 注入测试分为手工注入和自动化注入两种。
1)手工SQL 注入测试步骤如下(http://192.168.1.9/page.xxx?name=value):
步骤1:确定value 值的类型,如果该值为数字型,即进行步骤2 操作,否则进行步骤4 操作。
步骤2: 在被测参数后加上测试语句“ and 1=1 ”, 在地址栏中输入http://192.168.1.9/page.xxx?name=value and 1=1,不雅观察返回的结果。如果能精确地访问该页面,那么进行下一步操作,否则直接进行步骤4 操作。
步骤3: 在被测参数后加上测试语句“ and 2=3 ”, 在地址栏中输入http://192.168.1.9/page.xxx?name=value and 2=3,不雅观察返回的结果。如果能精确地访问该页面,那么进行下一步操作,否则该参数存在注入漏洞,测试完成。
步骤4: 在被测参数后加上测试语句“'and '1'='1' ”,在地址栏中输入http://192.168.1.9/page.xxx?name=value 'and '1'='1',不雅观察返回的结果。如果能精确地访问该页面,那么进行下一步操作,否则该参数存在注入漏洞,测试完成。
步骤5: 在被测参数后加上测试语句“'and '2'='3' ”,在地址栏中输入http://192.168.1.9/page.xxx?name=value 'and '2'='3',不雅观察返回的结果。如果能精确地访问该页面,解释该参数不存在漏洞,否则该参数存在注入漏洞,测试完成。
解释:如果存在多个参数,那么须要对每个参数都进行测试
2)利用自动化工具也可对SQL 注入进行测试,常用工具为pangolin,测试步骤如下:
步骤1:运行pangolin 工具。
步骤2:在URL 中输入待测试的URL(如http://192.168.1.9/page.xxx?name=value)。
步骤3:单击Check 按钮,实行扫描操作。
预期结果为pangolin 工具不能得到目标做事器的注入类型和数据库类型。
(2)MML 语法注入测试
MML(Man-Machine Language,人机措辞)实现了人机对话,人机对话是打算机的一种事情办法,多用于电信行业,打算机用户与打算机之间通过掌握台或终端显示屏幕,以对话办法进行事情。
MML 语法也可能存在注入漏洞,MML 语句通过分号(;)可以实行多语句,如命令“DSP CELL:DSPT=BYCELL, CELLID=1111;”,在短缺对输入参数进行严格掌握的情形下,攻击者能够实行任意的MML 语句。但是由于在预期结果方面无法给出准确的判断规则,以是测试时无法给出详细的、详细的测试步骤,一样平常分为以下几步进行测试:
步骤1:找出提交给MML 处理的参数
步骤2:在参数后面加入分号(;),提交要求
步骤3:不雅观察返回结果
如果结果返回正常,可能就存在该漏洞。但是有一种分外情形须要把稳,如果参数并不是MML实行语句的参数值,结果也可能是精确的,此时就须要测试工程师再进行判断。
(3)命令实行测试
有些页面可以接管类似于文件名的参数用于下载或者显示内容,测试时可以将参数更换成命令进行测试,不雅观察返回的测试结果。
假设测试的URL 为http://192.168.1.9/test.jsp,可接管参数,并且接管的参数可以是类似于系统命令的字符(如cmd、ls 等)。
如net user 命令输出如下内容:
假设测试URL 为http://192.168.1.9/net user,不雅观察返回的信息,返回的信息中不包括类似于系统命令返回的信息