2.Web渗透测试的流程
Web渗透测试人员可以在Web系统的不同位置利用各种合法手段进行测试,以期发现和挖掘系统中存在的漏洞,然后输出渗透测试报告、提出修补建议,并提交给甲方(网络所有者)。甲方根据所提供的渗透测试报告,可以清晰知晓目前系统中存在的安全隐患和问题,若甲方完成漏洞修补后提出复测,Web渗透测试人员需要再对更新后的系统进行测试。Web渗透测试流程如图1.1所示。
图1.1 Web渗透测试流程
(1)明确目标
在进行Web渗透测试之前,需要与甲方签订授权书,并共同确认此次测试的目标,包括确定测试需求(针对哪种类型的漏洞)、测试范围(划出范围以免越界)、测试规则(包括测试时间段、测试程度,以免影响甲方正常的业务活动)、测试方法或使用的工具等。
(2)信息收集
信息收集是Web渗透测试过程的第一步,也是非常重要的一步。在此阶段,我们需要尽可能多地收集关于Web系统的各种信息,信息收集的内容越丰富,攻击的成功率也会越高。
信息收集分为主动收集(也叫主动扫描)和被动收集两种方式,主动收集是通过直接访问、扫描等方法收集需要的信息,采用这种方式收集的信息比较多,但是测试人员的操作行为会被目标主机记录下来;被动收集是利用第三方服务收集目标信息,采用这种方式收集的信息相对较少,但目标主机不会发现访问者的行为。
收集的信息主要包括系统信息、版本信息、服务信息(中间件、插件信息)、基础信息(IP地址、网段、域名、端口等信息)、应用信息(各端口的应用信息)、人员和防护信息(域名注册人员信息、防护设备信息)等。
(3)漏洞扫描
漏洞扫描,是基于信息收集阶段收集到的各种信息,借助扫描工具对目标程序进行扫描,查找Web系统中存在的漏洞。网站漏洞扫描的工具有很多,如AppScan、OWASP-ZAP、Nessus等,常见的Web安全漏洞除了任务1.2列出的OWASP TOP 10,还包括XSS漏洞、CSRF漏洞、文件上传漏洞、文件包含漏洞、远程代码执行漏洞、越权访问漏洞、下载漏洞、XXE(XML External Entity Injection,XML外部实体注入)漏洞等。
(4)漏洞验证
在漏洞扫描阶段,Web渗透测试人员会得到很多关于目标Web系统的安全漏洞,但渗透测试人员不会直接将发现的所有漏洞当成渗透测试的结果。这些漏洞有时有误报的情况,需要测试人员结合实际情况搭建模拟测试环境来对这些漏洞进行验证,只有被确认的安全漏洞才能被利用来执行攻击。漏洞验证的方法有自动化验证(结合自动化扫描工具)、手动验证(使用公开的资源手动验证)和试验验证(搭建模拟环境验证)等。
(5)信息分析
经过漏洞验证的各种Web安全漏洞就可以被利用起来向目标程序发起攻击。但是不同的漏洞对应不同的攻击机制和方法,这就需要进一步分析这些漏洞的特点,包括漏洞原理、可利用的工具、目标程序检测机制、攻击是否可以绕过检测和防护机制、定制攻击路径等,这样才能保证下一步的Web渗透攻击顺利执行。
(6)渗透攻击
根据步骤(1)~步骤(5)的结果开始对目标程序发起真正的Web渗透攻击,达到渗透测试的目的,如获取网站的用户账号和密码、截取传输数据、控制目标主机等。一般,Web渗透测试是一次性测试,攻击完成之后要进行清理工作,如删除相关访问和操作日志、上传的文件等,擦除测试人员进入系统的痕迹,防止被黑客利用踪迹实行入侵。
(7)信息整理
渗透攻击完成之后,需要对Web渗透测试过程中的各种信息进行整理,包括用到了哪些渗透测试工具、收集到了哪些信息、获得了哪些漏洞等,为后面编写测试报告提供依据。
(8)编写报告
测试完成之后需要编写Web渗透测试报告,测试报告需列出以下内容:测试目标、信息收集方式、使用的漏洞扫描工具、漏洞情况、攻击过程、实际攻击结果及测试过程中遇到的问题等。此外,还要对存在的漏洞进行分析(包括等级及危害等),并提出合理、安全、有效的修补建议。
(9)复测
在漏洞修补完成后,甲方有可能会提出复测的要求,这时需要按照步骤(1)~步骤(8)对更新后的系统重新执行Web渗透测试。