如何自动化 OWASP ZAP

本文介绍了如何使用OWASP ZAP,一个流行的开源Web应用程序安全扫描工具,进行自动化安全测试。ZAP可以模拟恶意黑客攻击,检测应用程序的安全漏洞。文章详细讲解了ZAP的使用方式,包括从命令行运行、通过桌面应用设置自动化扫描、使用API导入、创建自动化框架计划以及生成报告。此外,还涵盖了不同类型的蜘蛛扫描和主动扫描,以及在CI/CD中运行ZAP的步骤。
摘要由CSDN通过智能技术生成

介绍 ZAP
OWASP ZAP是世界上最受欢迎的 Web 应用程序扫描仪,现在每月收到超过 400 万次“检查更新”调用(今年早些时候只有 100 万次)。

它是免费的、开源的,可供具有广泛安全经验的人使用,从新手到经验丰富的安全专家,以更好地了解 Web 应用程序安全状况。OWASP ZAP的工作方式是以类似于恶意黑客的方式攻击您的网络应用程序,它会在您的应用程序运行时对其进行攻击,并向您展示攻击者在攻击您的应用程序时能够找到的内容。

ZAP 桌面
ZAP 是为灵活性和采用而构建的,因此可以按照您喜欢的工作方式以多种方式运行它:

从命令行
作为桌面应用程序
作为后台守护进程
在本文中,我将向您展示如何从命令行自动化 ZAP,以及如何使用 ZAP 桌面应用程序对其进行设置。ZAP 桌面应用程序允许您准确查看 ZAP 的功能,并调整 ZAP 以尽可能有效地处理您的应用程序。

ZAP 需要Java 8+才能在本地运行,但您也可以在 Docker 中运行 ZAP并使用Webswing通过浏览器访问它。我们不会在这里深入探讨此设置,但欢迎您参考文档以开始使用。

请注意,如果您使用 docker 选项,那么您需要确保使用映射本地驱动器的选项启动 docker,以便您可以在停止 docker 映像后访问将要生成的文件。在 *nix 系统上,docker 选项是-v $(pwd):/zap/wrk/:rw- 在 Windows 上,您需要替换$(pwd)为合适目录的完整路径。

自动化框架
自动化框架(AF) 允许您使用一个 yaml 文件来控制 ZAP。还有其他方法可以使 ZAP 自动化,但 AF 是大多数用户推荐的方法。
您可以在文本编辑器中创建 yaml 文件,但也可以使用 ZAP 桌面创建它,因为这样您可以随时测试计划,这是我们将在此处使用的选项。

使用蜘蛛探索您的应用
首先要做的是探索您的应用程序。为人类设计的应用程序通常最好由人类探索,但这不是自动化和最终扩展的好选择。但是,我们将首先进行一些手动探索,以确保我们可以连接到该应用程序。

在 ZAP 桌面点击“Manual Explore”按钮。在下一个表格中,填写目标应用程序的 URL,取消选中“启用 HUD”框并单击“启动浏览器”。


应启动一个浏览器并显示您的目标应用程序——为了这个示例,我们将使用 Firefox,但如果您安装的是 Chrome 浏览器,它也应该可以正常工作。

现在查看站点树 — 您应该至少看到一个来自目标应用程序的 URL,可能还有更多。在本例中,我使用OWASP Juice Shop作为我的目标。

现在我们可以看到 2 个蜘蛛中的每一个如何处理我们的应用程序。

右键单击站点树中应用程序的顶部节点,然后选择“攻击 -> 蜘蛛…”


然后单击“开始扫描”。


这个蜘蛛应该运行得非常快,它会告诉你有多少 URL 被找到,有多少被添加到站点树:


如果您的目标应用是更传统的应用,那么这就足够了。但是,如果它是大量使用 JavaScript 的更现代的 Web 应用程序,那么您将需要使用 AJAX 蜘蛛。

右键单击站点树中应用程序的顶部节点,然后选择“攻击 -> AJAX 蜘蛛…”


然后单击“开始扫描”。


此蜘蛛程序将花费更长的时间,因为它会启动浏览器以单击 UI 元素。它还会告诉您它找到了多少个 URL:


通过导入 API 定义探索您的应用
如果您的应用程序只定义了一个 API,那么您将无法手动或使用任何一个 ZAP 蜘蛛探索它。

如果您有 API 定义,则可以通过“导入”菜单项导入它。ZAP 支持导入以下定义:

开放API
图形QL
WSDL
哈尔
定义上下文
如果您只是手动使用 ZAP,则不需要定义上下文,但在使用 Automation Framework 时需要定义上下文。幸运的是,这很容易做到——只需右键单击站点树中应用程序的顶部节点,然后选择“包含在上下文中 -> 新上下文:”


并可选地给它一个有意义的名字:


在桌面上创建计划
我们现在准备好创建计划了。

首先,您需要找到“自动化”选项卡。ZAP 有很多选项卡,因此默认情况下,除了最重要的选项卡外,所有选项卡都是隐藏的。单击底部面板中的绿色加号选项卡并选择“自动化:”


在新的自动化面板中单击“新计划...”按钮:

图片说明

选择您在上面定义的上下文,然后选择以下配置文件之一:

基线——如果你只是想被动地扫描你的应用程序而不是攻击它
GraphQL - 如果您有 GraphQL API 定义
OpenAPI - 如果您有 OpenAPI / Swagger API 定义
SOAP - 如果您有 SOAP 定义
全面扫描 - 如果您想攻击您的应用程序(并且没有 API 定义)

现在将显示您的计划摘要:


计划可以比这些配置文件灵活得多,但它们是您入门时使用的最佳选择。

Baseline 和 Full 扫描将包括spider和spiderAjax——如果您发现不需要,可以删除其中一个。不要同时删除两者,否则该计划将根本不会探索您的应用程序!

如果除了抓取之外还想导入 API 定义,则添加相关作业。

您可以在 ZAP 桌面中编辑计划:

双击任何作业将弹出一个对话框,允许您对其进行配置
“添加工作...”按钮将允许您向现有计划添加工作
“删除作业...”按钮将删除选定的作业
“Move Job Up”按钮会将所选作业向上移动一个位置
“向下移动作业”按钮会将所选作业向下移动一个位置
被动扫描
ZAP 将被动扫描由 ZAP 发起或通过它代理的每个请求。
这些配置文件都会添加两个相关的工作:

passiveScan-config - 这允许您微调被动扫描仪
passiveScan-wait - 等待所有请求被被动扫描,它应该总是在探索你的应用程序的任何作业之后运行
主动扫描
activeScan作业运行主动扫描器——这执行实际的攻击。

除非您只想被动扫描您的应用程序,否则您应该始终包含此作业。

双击作业将允许您微调活动扫描规则。

生成报告
毫无疑问,报告作业的任务是生成报告——有多种模板可供您选择,并提供不同的选项。请参阅https://www.zaproxy.org/docs/desktop/addons/report-generation/templates/以获取包含每个示例的最新列表。

验证
身份验证很难,而且绝对超出了这篇博文的范围(但我们将在未来尽最大努力对此进行深入探讨)。但是,ZAP 几乎可以处理任何身份验证机制——更多详细信息,请访问 ZAP 网站。好消息是,您可以在 ZAP 桌面上测试身份验证处理,您可以在其中准确查看正在发生的事情,并且当您使用该上下文创建计划时,所有身份验证配置都将导入计划中。

在本地测试您的计划
您可以使用“运行计划...”按钮运行您在 ZAP 中创建的身份验证计划。然后,您将在计划运行时看到作业的状态:


如果任何作业失败,您可以在 ZAP 桌面中调查它们。

然而,工作可能看似成功,但仍未达到您的预期。
这就是 AF 支持工作结果测试的原因——这些测试可以添加到任何工作中,并且可以执行以下操作:

检查任何ZAP 统计数据
检查特定警报是否存在
检查是否找到了特定的 URL 并可选择检查其内容
统计测试默认添加到蜘蛛作业中,但您可以使用“添加测试...”按钮(还有一个“删除测试...”按钮)向任何作业添加更多测试,并且不要忘记您可以加倍单击计划中的任何测试以对其进行编辑。

在 CI/CD 中运行
您可以使用如下命令从命令行运行 AF 测试:

zap.sh -cmd -autorun plan.yaml

您也可以在 docker 中运行它们。如果您使用的是稳定映像,那么我们建议使用单独的命令更新 ZAP:

docker run -v $(pwd):/zap/wrk/:rw -t owasp/zap2docker-stable bash -c "zap.sh -cmd -addonupdate; zap.sh -cmd -autorun /zap/wrk/plan.yaml"

该$(pwd):/zap/wrk/:rw命令的一部分将您的本地 CWD 映射到/zap/wrkdocker 容器中的目录。

如果您在计划中使用任何脚本,那么您将需要确保它们位于或低于您的本地 CWD 并更改您的计划,以便通过它们在 docker 容器中出现的位置(即在 下/zap/wrk)引用它们。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

千源万码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值