缩略语 |
全称 |
CRLF |
\r\n回车换行 |
LDAP |
Lightweight Directory Access Protocol 轻量级目录访问协议 |
MML |
man-machine language 人机交互语言 |
SessionID |
标志会话的ID |
Web Service |
Web服务是一种面向服务的架构的技术,通过标准的Web协议提供服务,目的是保证不同平台的应用服务可以互操作。 |
SOAP |
Simple Object Access Protocol 简单对象访问协议 |
XFS |
Cross Frame Script 跨帧脚本 |
XSS |
Cross Site Script 跨站脚本 |
1 测试过程
测试主要包括主动模式和被动模式两种。在被动模式中,测试人员尽可能的了解应用逻辑:比如用工具分析所有的HTTP请求及响应,以便测试人员掌握应用程序所有的接入点(包括HTTP头,参数,cookies等);在主动模式中,测试人员对应用系统、后台等进行渗透测试,其可能造成的影响主要是数据破坏、拒绝服务等。一般测试人员需要先熟悉目标系统,即被动模式下的测试,然后再开展进一步的分析,即主动模式下的测试。
2 Web安全测试
2.1 Web漏洞扫描工具测试
自动化扫描工具只能检测到部分常见的漏洞(如跨站脚本、SQL注入等),不是针对用户代码的,也就是说不能理解业务逻辑,无法对这些漏洞做进一步业务上的判断。往往最严重的安全问题并不是常见的漏洞,而是通过这些漏洞针对业务逻辑和应用的攻击。
Web目前分为application和Web service两部分。Application指通常意义上的Web应用,而Web service是一种面向服务的架构的技术,通过标准的Web协议(如HTTP、XML、SOAP、WSDL)提供服务。
2.1.1 AppScan application扫描测试
测试用例名称 |
AppScan application 扫描测试 |
测试目的 |
利用自动化的Web安全扫描工具AppScan进行扫描,以发现Web应用中存在的常见漏洞 |
测试条件 |
1、 已知Web服务器域名或IP地址 2、 Web业务运行正常 3、 测试用机上安装了AppScan |
执行步骤 |
1、 双击运行AppScan,选择file—new新建扫描,选择扫描模板default 2、 弹出扫描配置对话框,选择扫描类型,默认为Web Application Scan,点击next 3、 在Starting URL中填入需扫描的目标服务器域名或IP地址,其他配置不需修改,点击next 4、 选择No Login,点击next 5、 不需修改任何参数,点击next 6、 不需修改参数,选择Start a full automatic scan,点击finish完成配置,开始扫描 7、 扫描完成,保存扫描结果,并对结果进行分析 |
预期结果 |
经过对扫描结果分析,确认不存在“中等等级”及以上级别的漏洞。 |
备注 |
注意:该用例的执行对被测系统的性能影响比较大,而且可能导致一些垃圾数据,建议只在测试环境执行。 由于自动化工具在很多情况下只是提示一种漏洞存在的可能,因此需要对所有的结果进行人工的分析判断。分析过程参考以下章节的测试项,使用辅助工具或者是手动验证。 业界常用的自动化扫描工具还有WebInspcet,NStalker,Acunetix Web Vulnerability Scanner。在有条件的情况下,可以综合使用。 |
测试结果 |
|
2.1.2 AppScan Web Service 扫描测试
测试用例名称 |
AppScan Web Service 扫描测试 |
测试目的 |
利用自动化的Web安全扫描工具AppScan进行扫描,以发现Web Service中存在的漏洞 |
测试条件 |
1、 已知Web服务器域名或IP地址 2、 Web业务运行正常 3、 目标系统使用了Web Service服务 4、 测试用机上安装了AppScan |
执行步骤 |
1、 双击运行AppScan,选择file—new新建扫描,选择扫描模板default 2、 弹出扫描配置对话框,选择扫描类型,默认为Web Service Scan,点击next 3、 在Starting URL中填入需扫描的目标服务器域名或IP地址,其他配置不需修改,点击next 4、 不需修改任何参数,点击next 5、 不需修改任何参数,点击Finish完成配置,开始扫描 6、 扫描完成,保存扫描结果,并对结果进行分析 |
预期结果 |
经过分析确认以后的扫描结果中不存在信息提示以上等级的漏洞。 |
备注 |
注意:该用例的执行对被测系统的性能影响比较大,而且可能导致一些垃圾数据,建议只在测试环境执行。 由于自动化工具在很多情况下只是提示一种漏洞存在的可能,因此需要对所有的结果进行人工的分析判断。 |
测试结果 |
|
2.2 服务器信息收集
2.2.1 运行帐号权限测试
测试用例名称 |
运行帐号权限测试 |
测试目的 |
运行Web服务器的操作系统帐号权限越高,那么Web遭到攻击产生的危害就越大。因此,不应使用“root”、“administrator”、等特权帐号或高级别权限的操作系统帐号来运行Web,应该尽可能地使用低级别权限的操作系统帐号。 |
测试条件 |
1、 已知Web网站IP地址和OS登陆帐号、密码 |
执行步骤 |
1、 登陆Web服务器操作系统 2、 查看运行Web服务器的操作系统帐号,不是“root”、“admin”等特权帐号或高级别权限帐号,如果是则存在漏洞。 Ÿ linux:使用“ps –ef|grep java”命令,返回结果第一列的操作系统用户就是运行Web服务器的帐号; |
预期结果 |
没有使用“root”、“admin”等特权操作系统帐号运行Web。 |
测试结果 |
|
2.2.2 Web服务器端口扫描
测试用例名称 |
Web服务器端口扫描 |
测试目的 |
有时Web应用服务器除业务端口外还会开放一些默认端口(如tomcat开放的8080),这些默认端口对最终用户是不需要开放的,而且也不会用于维护,容易被攻击,本测试目的在于发现服务器上未使用的Web端口。 |
测试条件 |
1、 已知Web服务器域名或IP地址,假设IP地址为192.168.1.1 2、 测试用机安装了nmap,假设路径为d:\nmap |
执行步骤 |
1、 打开命令提示符,切换到nmap路径下,输入cd /d d:\nmap 2、 运行nmap –n –P0 –sS –sV –p1-65535 –oX scan_report.xml 192.168.1.1 3、 使用浏览器打开scan_report.xml 4、 观察结果,看是否为必须开放的Web服务端口。 |
预期结果 |
系统未开放业务不需要使用的端口。 |
备注 |
各种参数扫描请参考《利用nmap进行端口扫描》 |
测试结果 |
|
2.2.3 HTTP方法测试
测试用例名称 |
开放HTTP方法测试 |
测试目的 |
有些Web服务器默认情况下开放了一些不必要的HTTP方法(如DELETE、PUT、TRACE、MOVE、COPY),这样就增加了受攻击面。 |
测试条件 |
1、 已知Web网站IP地址及Web访问端口 2、 Web业务正常运行 |
执行步骤 |
1、 点击“开始”-“运行”,输入cmd并回车,运行cmd.exe 2、 输入telnet IP 端口 (其中IP和端口按实际情况填写,用空格隔开) 3、 回车 4、 在新行中输入如下一行,并回车 OPTIONS / HTTP/1.1 5、 观察返回结果中的Allow的方法列表 返回结果样例: HTTP/1.1 200 OK Server: Apache-Coyote/1.1 X-Powered-By: Servlet 2.4; JBoss-4.0.5.GA (build: CVSTag=Branch_4_0 date=200610162339)/Tomcat-5.5 Allow: GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS Content-Length: 0 Date: Mon, 29 Jun 2009 08:02:47 GMT Connection: close 如果返回结果中包含不安全的HTTP方法(DELETE、PUT、TRACE、MOVE、COPY),则验证这些防范是否可用 6、 如果方法可用则说明存在漏洞,测试不通过。 |
预期结果 |
不包含不安全的HTTP方法(如DELETE、PUT、TRACE、MOVE、COPY) |
备注 |
由于不同的Web服务器支持的HTTP协议版本不同,如果系统不支持HTTP/1.0,那么步骤4返回 “HTTP/1.0 400 Bad Request”;这种情况下,应该更改步骤4的输入行为OPTIONS / HTTP/1.0 |
测试结果 |
|
2.2.4 HTTP PUT方法测试
测试用例名称 |
HTTP PUT方法测试 |
测试目的 |
有些Web服务器开放了PUT方法,攻击者能够通过该方法上传任意文件到Web服务器的一些目录中去。包括Web木马程序。 |
测试条件 |
1、 已知Web网站IP地址 2、 Web业务正常运行 3、 测试用机安装了IISPUTScanner测试工具 |
执行步骤 |
1、 运行IISPUTScanner.exe 2、 在Start IP和End IP输入框中输入Web服务器的IP地址,在Port输入框中输入对应的端口,选中“Try to upload file”和“Try on other systems”,如图: 3、 点击Scan按钮 4、 观察扫描结果 |
预期结果 |
工具的“PUT”栏的值不为“YES”,Web服务器上没有新创建的alert.txt文件 |
备注 |
本测试适用于所有的Web服务器,不仅仅是IIS。 |
测试结果 |
|
2.2.5 HTTP DELETE方法测试
测试用例名称 |
HTTP DELETE方法测试 |
测试目的 |
有些Web服务器开放了DELETE方法,攻击者能够通过该方法删除Web服务器上的文件。 |
测试条件 |
1、 已知Web网站IP地址 2、 Web业务正常运行 3、 Web网站存在/alert.txt文件(如果没有,手工创建) |
执行步骤 |
1、 点击“开始”-“运行”,输入cmd并回车,运行cmd.exe 2、 输入telnet IP 端口 (其中IP和端口按实际情况填写,用空格隔开,比如:telnet 192.168.4.86 80) 3、 回车 4、 在新行中输入如下一行,并回车 DELETE /alert.txt HTTP/1.0 5、 查看Web服务器上alert.txt是否被删除 |
预期结果 |
Web服务器上alert.txt文件依然存在 |
备注 |
由于不同的Web服务器支持的HTTP协议版本不同,如果系统不支持HTTP/1.0,那么步骤4返回 “HTTP/1.0 400 Bad Request”;这种情况下,应该更改步骤4的输入行为DELETE /index.jsp HTTP/1.0 |
测试结果 |
|
2.2.6 HTTP TRACE方法测试
测试用例名称 |
HTTP TRACE方法测试 |
测试目的 |
有些Web服务器开放了TRACE方法(主要是用于客户端通过向Web服务器提交TRACE请求来进行测试或获得诊断信息),攻击者能够通过该方法构造跨站攻击。 |
测试条件 |
1、 已知Web网站IP地址 2、 Web业务正常运行 |