安全测试--AppScan
目录
一、测试工具
AppScan,即 AppScan standard edition。其安装在 Windows 操作系统上,可以对网站等 Web 应用进行自动化的应用安全扫描和测试。
简单理解,就是AppScan工具先抓取出所有的接口,接着利用自身的安全用例库,对接口传各种参数,验证接口是否有安全漏洞。
二、测试步骤
1、打开AppScan,文件--新建--扫描Web应用程序
2、填写起始URL地址
这里有个坑:填写登录页面的地址,最好是未登录之前,因为有的页面没有做重定向处理,后续测试的时候会一直提示登录。
比如登录页面的地址是https://XXX/Login,最好别填登录进去后的某个地址例如:https://XXX/Login/index
注意:第一次启动时,会询问是否使用代理,选择不使用代理,点击下一步,下次不会再询问。
3、填写登录管理信息
登录系统的方式,有三个选项:
1)记录:点击“记录”按钮,进行录制登录操作。操作类似于用LR做脚本录制,适用于没有验证码的场景。
2)自动:输入用户名和密码,扫描时会自动根据这个凭证登录应用程序,推荐没有验证码时,使用该场景。
3)提示:根据扫描地址,每次需要登录时会弹出相应登录页面,如遇后台登录有验证码时推荐使用此场景。
记录和自动的差别不大,都是适用于没有验证码的场景,而且都只需要输入一次用户名和密码,不同之处在于 「记录 」是在浏览器登录页面输入密码,「自动 」是直接在AppScan的页面输入密码。
4、测试策略
在实际测试过程中,要完整的测试就选「完成」策略,一般情况下选「缺省值」策略。
简单介绍下7种测试策略:
1)缺省值:包含多有测试,但不包含侵入式和端口侦听器
2)仅应用程序:包含所有应用程序级别的测试,但不包含侵入式和端口侦听器
3)仅基础结构:包含所有基础结构级别的测试,但不包含侵入式和端口侦听器
4)侵入式:包含所有侵入式测试(可能影响服务器稳定性的测试)
5)完成:包含所有的AppScan测试
6)关键的少数:包含一些成功可能性较高的测试精选,在时间有限时对站点评估可能有用
7)开发者精要:包含一些成功可能性极高的应用程序测试的精选,在时间有限时对站点评估可能有用
5、测试优化
自主选择即可
6、完成
1)启动全面自动扫描:会自动探索URL,而且边探索边扫描页面,也就是边扫描边测试
2)仅使用自动“探索”启动:自动探索URL,不做扫描,只是探索出所有的接口,不对接口进行任何操作
3)使用“手动探索”:手动去访问页面,AppScan会自动记录你访问页面的url
4)我将稍后启动扫描:AppScan不做任何操作,需要自己手动去启动扫描
7、保存文件
8、进行第一遍的探索结果
9、扫描结束点击工具栏的“扫描”中的“仅测试”,查看测试结果
10、导出报告
三、AppScan使用特别注意事项
【1】AppScan扫描过程中,会向服务器发送较多请求,会占用一定的正常请求访问的资源,可能导致一些垃圾数据,建议只在本地测试环境执行
【2】使用AppScan之前,请提前备份好数据库的数据,假若扫描致使服务器异常关闭,则需重启服务;若扫描产生的请求数据过多,或Web程序出现异常,可能需要从备份数据恢复还原。一般情况下,正常扫描Web程序很少可能出现Web服务异常的情形
【3】AppScan扫描配置时,有区分为Web Application(Web应用程序)和Web Service(Web服务)的扫描方向。若只对Web程序本身的漏洞检测,就选Web Application扫描即可;
若选择Web Service扫描,则需提前告知服务器维护的负责人,建立异常情况发生的处理机制,最好避开访问请求的高峰or办公人员集中使用的时间,比如下班后自动扫描
【4】AppScan扫描的结果并不代表完全真实的情况,受限于所用扫描器版本的漏洞规则库的规则,以及操作者的配置策略,扫描过程中有可能会使得扫描器出现误判or漏测。
如有必要,还需对扫描的结果进行人工校验,可对同一Web应用分次进行扫描对比差异性
【5】扫描配置时,一般按照默认的测试策略-WASC威胁分类即可;若服务器本身所能承受的性能压力不强,or存在较多漏洞的时候,不宜选择“侵入式”策略,该策略存在着可能会入侵服务器、关闭服务、破坏数据库等风险
【6】使用破解版的AppScan扫描Web应用时,若Web网站本身结构比较复杂、模块众多、涉及的url数目巨大(几万-十多万),
则不宜一次性全站扫描,有可能连续扫描几个小时都不能探索完网站的所有结构。持续时间过长还可能造成AppScan出现卡顿,显示“正在扫描中”,但实际上已经没有继续再扫描。
因此,当第一次探索了大概的网站结构和容量之后,若容量巨大,最好分而治之,按模块结构分批进行扫描测试
【7】结果分析(Analysis)
在APPScan扫描结果基础上,根据不同的严重级别进行排序、手工+工具验证的方式对漏洞验证可靠性,排除误报的情况,并尽可能找出漏报的情况,把本次扫描结果汇总,对以上已验证存在的安全漏洞排列优先级、漏洞威胁程度,并提出每个漏洞的修复建议
然后,再把此次安全漏洞整理的报告提交给项目负责人,由负责人决定哪些漏洞转给开发工程师修复,而后再由安全测试工程师进行回归验证修复的状况