测试开发之安全篇-使用禅道ZTF执行OWASP安全扫描
原创- 2023-05-29 10:00:00
- 1578
开放Web应用程序安全项目(OWASP,Open Web Application Security Project)是一个开源、非盈利、全球性的安全组织,致力于应用软件的安全性方面的研究。OWASP安全标准被视为Web应用安全领域的权威参考。美国国家和国际立法、标准、准则、委员会和行业实务守则参考引用了OWASP,美国联邦贸易委员会(FTC)强烈建议所有企业需遵循OWASP十大WEB弱点防护守则,国际信用卡数据安全技术PCI标准更是将其列为必要组件。
OWAPS TOP 10是该组织定期发布的10项最严重Web应用安全风险列表,该列表总结并更新Web应用程序中最可能、最常见、最危险的十大漏洞。它是安全渗透测试工作的一个参考,成为IBM APPSCAN、HP WEBINSPECT等漏洞扫描器的主要标准。
ZAP(Zed Attack Proxy)是OWASP旗下的一款开源Web应用安全漏洞扫描工具。它通过代理的方式,拦截同被测系统间的请求和响应,进行模拟攻击和分析来寻找安全性漏洞。本文给大家分享,如何使用ZTF调用ZAP执行安全扫描,并将结果提交到禅道项目管理系统。
首先,我来简单了解下ZAP客户端工具的使用方法。
- 从 官网下载所需操作系统的、以Installer结尾的安装文件;
- 完成ZAP客户端软件的安装;
- 第一次打开ZAP应用,在弹出窗口中选择第3项“No, I do not want to persist this session at this moment in time.”,意为之后需要时再手动保存会话;
-
打开的客户端中,界面中包含如下的6个功能区域;
- 菜单栏
- 工具栏
- 站点、脚本树状结构
- 工作区
- 信息窗口
- 状态栏
- 在Quick Start的标签页,点击
Automated Scan按钮;
- 在文本框 URL to attack中填入需要扫描的网站地址;
- 安装所选择的浏览器(此处为Firefox),其他和上图保持一致;
- 点击 Attack按钮,开始扫描;
- 扫描结束后进入以下报告页面。
在前面的Quick Start的标签页中:
- 您可以通过点击 Manual Explore按钮,给扫描工作一个基于URL的站点地图指引,以提高扫描效率;
- 点击Lean More可获得更多的帮助信息,如站点登录认证等方面的高级功能。
有了对ZAP基本功能的了解,接下来我们分享,如何在禅道ZTF中集成ZAP,开展安全漏洞的扫描工作。
- 参照以上步骤,创建一个ZAP安全扫描的Session会话,并保存;
- 完成需要的配置,如站点地图指引、登录认证、扫描规则等设置;
- 从 官网下载ZAP名为 Cross Platform Package的跨平台JAR包;
-
使用以下命令启动ZAP服务,其中参数-daemon设置不显示客户端界面;
java -jar zap-2.12.0.jar -config api.key=my_api_key -daemon -session /Users/aaron/rd/project/testing/zap_deeptest.session
-
执行下列ZTF命令,使用上面创建的Session,启动安全扫描任务。
zap -p 1 -t task-zap --verbose -options server=http://localhost:8080,apiKey=api_key,site=https://httpbin.org/
其中参数:
-p: 禅道产品编号
-t: 禅道测试单编号
-options: 以逗号分隔字符串的方式,指定了ZAP的扫描参数- server:ZAP服务器的访问地址
- apiKey:ZAP服务访问凭证,同启动服务时参数一致
- site:所要扫描的站点URL,报告也会基于此URL过滤
ZTF会等待安全扫描的结束,获取扫描结果,并提交到禅道。
最后,给大家列一下本文相关的ZAP启动命令和API接口,具体Go语言的封装可以参考 这里。
# 启动ZAP服务 java -jar zap-2.12.0.jar -config api.key=my_api_key -daemon -session /Users/aaron/rd/project/testing/zap_deeptest.session # 执行扫描任务,该命令会返回一个唯一的识别号ScanId。 http://localhost:8080/JSON/core/view/alerts/?apikey=my_api_key&baseurl=https://httpbin.org/&start=0&count=10000 # 获取扫描任务进度 http://localhost:8080/JSON/spider/view/status/?apikey=my_api_key&scanId=1 # 获取扫描结果 http://localhost:8080/JSON/core/view/alerts/?apikey=my_api_key&baseurl=https://deeptest.org/&start=0&count=10000 # 停止指定扫描任务,ScanId来源于开始命令的返回。 http://localhost:8080/JSON/ascan/action/stop/?apikey=my_api_key&scanId=10 # 停止服务器上的所有扫描任务 http://localhost:8080/JSON/ascan/action/stopAllScans/?apikey=my_api_key