7个特性让ZAP成为应用安全测试中的重要工具 – 作者:Ultracoder

The Zed Attack Proxy (ZAP) 是一个开源工具,由 Open Web Application Security Project (OWASP) 维护,拥有庞大的开发人员社区,可快速提供新模块或附加组件。

ZAP的特性和功能有助于在web上执行手工渗透测试以及自动扫描。在本文中,我将介绍一些在任何安全测试中使 ZAP 成为首选工具的功能。

ZED Attack Proxy-1.png

AJAX 爬虫

在渗透测试期间,AJAX 爬虫可以发现丰富的基于 AJAX 的 web 资源,这是使用常规爬虫工具无法发现的。 AJAX 爬虫窗口可通过 ZAP -> Tools ->AJAX Spider (在 ZAP 的菜单栏) 访问。该工具支持参数配置,比如最大爬取深度,最大爬取状态,最长持续时间和其他选项,以防止无限爬取。

01_ajax_spidering.jpg

在我们的渗透测试中,我们首先使用常规的抓取工具来确定正在测试的应用程序的URL。在常规抓取后运行 AJAX 爬虫帮助我们获得了范围内所有应用程序资源的更精确的站点地图。 ZAP提供了使用 Selenium 通过浏览器自动打开应用程序的选项,并通过事件驱动的动态爬取引擎来探索应用程序。这减轻了手动遍历应用程序以捕获AJAX请求的需要。

Fuzzing

模糊测试工具是一种用于注入各种有效载荷以迫使应用程序进入不可预期状态的安全工具,可能会暴露出潜在的安全漏洞。在ZAP中,测试人员可以通过ZAP中内置的Dirbuster,FuzzDB和JbroFuzz等广泛的开源模糊负载列表中进行选择,这使得挖掘漏洞比以往更容易。

02_Fuzzing.png

渗透测试人员可以选择手动上传有效载荷列表或通过编写自己的自定义脚本来生成有效载荷。 ZAP 模糊测试工具 还可以通过对模糊测试位置(在请求中),并发线程数量,延迟模糊等多种控制方式进行高度自定义。模糊测试工具还可以根据每个请求重新生成 Token 时在应用中自动刷新 Anti-CSRF Token。 当检测到Anti-CSRF Token 时,ZAP会自动记录 Token 和相关的 URL,从而在必要时重新生成 Token,防止 Token 出现丢失或无效的错误。

Websocket 测试

在如今,Websockets 的测试对于跨应用程序的普遍实现非常重要。使用ZAP,拦截,分析或修改客户端和服务器之间的websocket流量不能再简单了! Websocket 消息编辑器可通过ZAP菜单下的 Tools>>WebSocket Message Editor 访问。 该编辑器可用于修改字节码,目标地址或信息并发送回服务器。ZAP 还提供了每条消息的字节码的详细信息 – Text,Binary,Close,Ping 或 Pong。然后可以根据字节码或通道过滤消息以供进一步仔细检查。 websocket 消息也可以发送给模糊测试工具以供后续的有效载荷注入。

03_webSockets.png

例如,我们曾经测试过一个客户的视觉协作平台,它是一个基于websockets的应用程序。 通过修改消息的目标并通过消息编辑器修改消息中的参数,我们能够鉴别出应用程序中的一个漏洞,可导致使用该应用程序接口的所有用户完全拒绝服务。

灵活的扫描策略管理

ZAP 提供了根据测试人员对每个应用程序的要求灵活组合扫描策略的功能。可以在菜单栏下的 Analyse>>Scan Policy Manager 中找到扫描策略管理器。

04_Scan_Policy.png

对于渗透测试人员来说,根据目标应用程序性能优化扫描器(而不导致DoS)至关重要。 因此,在设计扫描策略时考虑扫描人员的处理能力和带宽能力至关重要。

可以更改扫描策略以包含或排除要执行的测试类型。 诸如阈值(其定义了潜在的漏洞可能被标记的可能性)、强度(定义每个测试的请求数量)之类的参数可以在ZAP中配置。

很多时候,渗透测试人员需要测试他在目标应用程序中可能经常遇到的场景。 ZAP允许您设计自定义扫描策略,可以将其作为模板导出。 然后可以将此扫描策略模板导入ZAP并重新使用。

通过 REST API 以编程方式与 ZAP 进行交互

随着Web服务和微服务的增加,安全性从未如此重要。 ZAP 有一个定义和文档都非常好的 API,它可以通过各种工具,平台或自定义脚本以编程方式轻易的访问。ZAP API 可以直接通过浏览器或使用诸如Java,Python,Node JS,.NET,PHP和Go等编程语言使用。ZAP UI 可通过 http://zap 从浏览器中访问或通过 http://localhost:<proxy port> 从代理中访问。

05_ZAP_API.png

此功能特别有助于我们将ZAP的一些核心功能集成到我们的漏洞测试平台中。

ZAP Jenkins 插件

随着越来越多的公司转向 DevSecOps 或采用敏捷安全测试方法,将动态应用程序安全性测试工具集成到他们的持续集成/持续交付管道(如 Jenkins )中正成为一种常态。拥有插件对于这样的集成至关重要。

ZAP 的 Jenkins 插件 可以在 CI / CD pipeline 内集成安全测试。通过 Jenkins 插件,我们帮助客户将 ZAP 无缝集成到 DevOps pipeline 中,允许团队在每个版本中运行自动扫描。该插件可在流水线中启用多个 ZAP 操作,如 Spider Scans,AJAX Spidering,Active Scan,Managing Sessions,定义上下文和关联结果。

高度脚本化

许多安全测试可以通过脚本实现自动化,这可以减少花费在手动测试上的时间,同时让测试人员有更多时间专注于其他重要任务。

在支持允许 JSR 223 脚本的脚本语言的工具中,ZAP 是最具可扩展性/可脚本化的工具之一。ZAP 具有可以运行嵌入其中的脚本并通过 ZAP 脚本附加功能访问内部数据结构和功能的特性。它支持多种脚本语言,包括 Javascript,Zest,Python,Groovy 和 Ruby。脚本支持独立运行,通过主动扫描规则运行,通过代理规则运行等。我们使用 ZAP 的“录制脚本”功能创建 Zest 脚本,以执行应用程序的自动遍历,通过ZAP代理处理请求,运行扫描并导出结果以供后续 聚合和关联。

虽然这些功能可以在其他专用和公用的 DAST 工具中使用,但 ZAP 将这些功能(以及更多功能)封装在一个直观、高效的开源代码平台下,使其成为“即用型工具”以执行手动和自动安全扫描。

*参考来源:we45,Ultracoder编译,转载请注明来自FreeBuf.COM

来源:freebuf.com 2018-02-28 15:00:46 by: Ultracoder

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论