介绍 ZAP
Zed Attack Proxy(ZAP)是一个免费的开源渗透测试工具,在 软件安全项目 (SSP)。ZAP 专为测试 Web 应用程序而设计,既灵活又可扩展。
ZAP的核心是所谓的“中间人代理”。它位于测试人员的浏览器和Web应用程序之间,以便它可以拦截和检查浏览器和Web应用程序之间发送的消息,根据需要修改内容,然后将这些数据包转发到目的地。它可以用作独立应用程序和守护进程。
如果已在使用另一个网络代理(如在许多企业环境中),则可以将 ZAP 配置为连接到该代理。
ZAP 为各种技能水平提供功能,从开发人员到刚接触安全测试的测试人员,再到安全测试专家。ZAP 具有每个主要操作系统和 Docker 的版本,因此您不必绑定到单个操作系统。 其他功能可从 ZAP 市场中的各种附加组件免费获得,可从 ZAP 客户端中访问。
由于 ZAP 是开源的,因此可以检查源代码以准确了解功能是如何实现的。任何人都可以自愿从事 ZAP 工作、修复错误、添加功能、创建拉取请求以将修复程序拉入项目,以及编写附加组件以支持特殊情况。
安装和配置 ZAP
ZAP 有适用于 Windows、Linux 和 macOS 的安装程序。下面列出的下载站点上还提供了 Docker 映像。
安装 ZAP
首先要做的是在要对其执行渗透测试的系统上安装 ZAP。从下载页面下载相应的安装程序。
请注意,ZAP 需要 Java 11+ 才能运行。macOS 安装程序包含相应版本的 Java,但您必须为 Windows、Linux 和跨平台版本单独安装 Java 11+。Docker 版本不需要您安装 Java。
windows 版JDK使用exe安装后即可。
windows安装ZAP,直接双击exe文件安装即可。
持久化会话
首次启动 ZAP 时,系统将询问您是否要保留 ZAP 会话。默认情况下,ZAP 会话始终记录到具有默认名称和位置的 HSQLDB 数据库中的磁盘。如果不保留会话,则在退出 ZAP 时将删除这些文件。
如果选择保留会话,则会话信息将保存在本地数据库中,以便以后可以访问它,并且您将能够提供用于保存文件的自定义名称和位置。
现在,选择“否,我不想在此时保留此会话”,然后单击“开始”。ZAP 会话暂时不会持久化。
ZAP 桌面用户界面
ZAP 桌面 UI 由以下元素组成:
- 菜单栏 – 提供对许多自动和手动工具的访问。
- 工具栏 – 包括可轻松访问最常用功能的按钮。
- 树窗口 – 显示站点树和脚本树。
- 工作区窗口 – 显示请求、响应和脚本,并允许您对其进行编辑。
- 信息窗口 – 显示自动和手动工具的详细信息。
- 页脚 – 显示找到的警报的摘要以及主要自动化工具的状态。
使用 ZAP 时,可以单击菜单栏上的“帮助”或按 F1 访问《ZAP 桌面用户指南》中的上下文相关帮助。它也可以在线获得。
有关 UI 的详细信息,请参阅 ZAP 联机文档中的 ZAP UI 概述。
重要说明:您应该只使用 ZAP 攻击您有权测试的应用程序,并进行主动攻击。由于这是一个模拟,其作用类似于真实攻击,因此可能会对站点的功能,数据等造成实际损害。如果您担心使用 ZAP,可以通过切换到安全模式来防止它造成伤害(尽管 ZAP 的功能会显着降低)。
若要将 ZAP 切换到安全模式,请单击主工具栏上模式下拉列表中的箭头以展开下拉列表并选择“安全模式”。
快速开始-自动扫描
开始使用 ZAP 的最简单方法是通过“快速入门”选项卡。 快速入门是安装 ZAP 时自动包含的 ZAP 加载项。
要运行快速入门自动扫描:
- 启动 ZAP,然后单击工作区窗口的快速启动选项卡。
- 单击大的自动扫描按钮。
- 在“要攻击的 URL”文本框中,输入要攻击的 Web 应用程序的完整 URL。
- 点击攻击
勾选传统爬虫,点击攻击,ZAP会自动攻击填写的网站。
ZAP 将继续使用蜘蛛抓取 Web 应用程序,并被动扫描它找到的每个页面。然后,ZAP 将使用活动扫描程序攻击所有发现的页面、功能和参数。
2种爬虫
ZAP 提供 2 个爬虫用于爬网 Web 应用程序,您可以从此屏幕使用其中一个或两个。
传统的 ZAP 蜘蛛,通过检查来自 Web 应用程序的响应中的 HTML 来发现链接。这种蜘蛛速度很快,但在探索使用 JavaScript 生成链接的 AJAX Web 应用程序时并不总是有效的。
对于AJAX应用程序,ZAP的AJAX蜘蛛可能更有效。该蜘蛛通过调用浏览器来探索Web应用程序,然后跟踪已生成的链接。AJAX 蜘蛛比传统蜘蛛慢,需要额外的配置才能在“无头”环境中使用。
ZAP 将被动扫描通过它代理的所有请求和响应。到目前为止,ZAP 只对您的 Web 应用程序进行了被动扫描。被动扫描不会以任何方式改变响应,被认为是安全的。扫描也在后台线程中执行,以免减慢探索速度。被动扫描擅长发现一些漏洞,并作为一种了解 Web 应用程序的基本安全状态并找到可能需要进行更多调查的地方的方法。
但是,主动扫描会尝试通过使用针对所选目标的已知攻击来查找其他漏洞。主动扫描是对这些目标的真正攻击,可能会使目标面临风险,因此不要对您无权测试的目标使用主动扫描。
解释您的测试结果
当 ZAP 抓取您的 Web 应用程序时,它会构建 Web 应用程序页面以及用于呈现这些页面的资源的映射。然后,它会记录发送到每个页面的请求和响应,并在请求或响应出现潜在问题时创建警报。
查看浏览的页面
要检查浏览页面的树视图,请单击树窗口中的站点选项卡。您可以展开节点以查看访问的各个 URL。
查看警报和警报详细信息
页脚的左侧包含测试期间发现的警报计数,这些警报按风险类别细分。这些风险类别是:
警报
点击警报详情,可以看到详细信息
历史
在历史页面可以看到执行过扫描的历史记录。
spider
可以看到执行进度。
主动扫描
可以看到爬虫发出的请求。可以看到爬虫一共发出2141个请求。
生成报告
选中站点,点击生成报告,可以生成html格式的测试报告,报告包含扫描出的警报信息内容。
手动浏览应用程序
被动扫描和自动攻击功能是开始对 Web 应用程序进行漏洞评估的好方法,但它有一些限制。其中包括:
- 被动扫描期间无法发现受登录页保护的任何页面,因为除非已配置 ZAP 的身份验证功能,否则 ZAP 将不会处理所需的身份验证。
- 您无法很好地控制被动扫描中的探索顺序或自动攻击中执行的攻击类型。ZAP 确实提供了许多其他选项,用于被动扫描之外的探索和攻击。
蜘蛛是探索基本站点的好方法,但它们应该与手动探索相结合,以更有效。例如,蜘蛛只会在Web应用程序的表单中输入基本的默认数据,但用户可以输入更多相关信息,这些信息反过来又可以将更多的Web应用程序暴露给ZAP中。对于需要有效电子邮件地址的注册表等内容尤其如此。蜘蛛可能会输入一个随机字符串,这将导致错误。用户将能够对该错误做出反应并提供格式正确的字符串,这可能会导致在提交和接受表单时公开更多应用程序。
被动扫描是ZAP自动对网站进行扫描,手动浏览是用户在网站进行操作,ZAP先记录下用户操作,然后基于这些操作再进行攻击,发现漏洞。手动浏览时,操作应该遍历每一个页面。
手动浏览
要手动探索您的应用程序,请执行以下操作:
- 启动 ZAP,然后单击工作区窗口的快速启动选项卡。
- 单击大的手动探索按钮。
- 在“要浏览的 URL”文本框中,输入要浏览的 Web 应用程序的完整 URL。
- 选择您要使用的浏览器
- 单击启动浏览器
ZAP会启动浏览器,显示如图。
如果要将任何浏览器与现有配置文件一起使用,例如安装其他浏览器加载项,则需要手动将浏览器配置为通过 ZAP 代理,并导入并信任 ZAP 根 CA 证书。有关更多详细信息,请参阅 ZAP 桌面用户指南。
默认情况下,将启用 ZAP 平视显示器 (HUD)。在启动浏览器之前取消选中此屏幕上的相关选项将禁用HUD。