开放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.”,意为之后需要时再手动保存会话;
    image.png
  • 打开的客户端中,界面中包含如下的6个功能区域;

    1. 菜单栏
    2. 工具栏
    3. 站点、脚本树状结构
    4. 工作区
    5. 信息窗口
    6. 状态栏

    image.png

  • 在Quick Start的标签页,点击Automated Scan按钮;
    image.png
  • 在文本框URL to attack中填入需要扫描的网站地址;
  • 安装所选择的浏览器(此处为Firefox),其他和上图保持一致;
  • 点击Attack按钮,开始扫描;
  • 扫描结束后进入以下报告页面。
    image.png

在前面的Quick Start的标签页中:

  • 您可以通过点击Manual Explore按钮,给扫描工作一个基于URL的站点地图指引,以提高扫描效率;
  • 点击Lean More可获得更多的帮助信息,如站点登录认证等方面的高级功能。

有了对ZAP基本功能的了解,接下来我们分享,如何在禅道ZTF中集成ZAP,开展安全漏洞的扫描工作。

  1. 参照以上步骤,创建一个ZAP安全扫描的Session会话,并保存;
  2. 完成需要的配置,如站点地图指引、登录认证、扫描规则等设置;
  3. 官网下载ZAP名为Cross Platform Package的跨平台JAR包;
  4. 使用以下命令启动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
  5. 执行下列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

专题目录


陈哥聊测试
158 声望3.3k 粉丝

资深敏捷测试顾问,国内知名项目管理软件禅道团队成员。