软件测试学习笔记丨安全测试工具OWASP ZAP与Burp Suite

232 阅读18分钟

本文转自测试人社区,原文链接:ceshiren.com/t/topic/319…

注意:未经授权扫描第三方网站是违法的,请不要随意发起对第三方网站的安全扫描。

OWASP ZAP(Zed Attack Proxy)是一款流行的开源Web应用程序安全测试工具。它可以帮助识别Web应用程序中的安全漏洞,适用于开发人员和安全测试人员。以下是一个全面的中文教程,涵盖ZAP的安装、配置、使用和自动化。

目录

  1. 安装ZAP
  2. 基本配置
  3. 使用ZAP进行被动扫描
  4. 使用ZAP进行主动扫描
  5. 生成报告
  6. 自动化测试
  7. 常见问题与解决

1. 安装ZAP

下载和安装

  • 官网:从OWASP ZAP官网下载适用于操作系统的安装包。
  • 安装:按照安装向导进行安装。对于Windows用户,下载.exe文件并运行。对于Mac用户,下载.dmg文件并安装。对于Linux用户,可以使用包管理器进行安装。

启动ZAP

  • 安装完成后,启动ZAP应用程序。首次启动时,ZAP会提示是否保存会话,可以选择保存以便后续使用。

2. 基本配置

配置代理

  • 设置代理:ZAP默认监听本地端口8080。需要配置浏览器使用ZAP作为代理。
    • 打开浏览器的代理设置,设置HTTP代理为localhost,端口为8080

导入证书

  • 导入证书:为了捕获HTTPS流量,需要将ZAP的证书导入浏览器。
    • 在ZAP中,导航到“工具” > “选项” > “证书” > “生成证书”。
    • 生成后,导出证书并在浏览器中导入。

3. 使用ZAP进行被动扫描

捕获流量

  • 访问应用程序:在配置了代理的浏览器中访问目标Web应用程序,ZAP会自动捕获所有流量。
  • 记录流量:ZAP会自动记录所有访问的请求和响应。

查看被动扫描结果

  • 查看警报:在ZAP的“Alerts”标签中,可以看到所有被动扫描发现的漏洞。
  • 详细信息:点击每个警报,可以查看详细信息,包括漏洞描述、风险等级、证据和修复建议。

4. 使用ZAP进行主动扫描

Spider爬取

  • 启动Spider
    • 在ZAP的“Sites”标签中右键点击目标站点,选择“Attack” > “Spider…”,配置起始URL和其他选项,然后点击“Start Scan”开始Spider。
  • 查看结果
    • 在“Sites”标签中,可以看到Spider发现的所有链接和页面。

主动扫描

  • 启动主动扫描
    • 在“Sites”标签中右键点击目标站点,选择“Attack” > “Active Scan…”,配置扫描选项,然后点击“Start Scan”开始主动扫描。
  • 查看扫描结果
    • 在“Alerts”标签中查看所有主动扫描发现的漏洞。点击每个警报查看详细信息。

5. 生成报告

生成HTML报告

  • 生成报告
    • 在ZAP的菜单栏中选择“Report” > “Generate HTML Report…”,选择保存位置并生成报告。
  • 查看报告
    • 打开生成的HTML报告,可以看到详细的扫描结果和漏洞描述。

6. 自动化测试

命令行接口

  • 启动ZAP
    • 可以使用命令行启动ZAP,指定监听端口和API密钥:zap.sh -daemon -port 8090 -config api.key=<your_api_key>
  • 执行自动化扫描
    • 使用ZAP的API执行自动化扫描。以下是一个使用Python的示例:
import time
from zapv2 import ZAPv2

zap = ZAPv2(apikey='your_api_key')

target = 'http://your_target_site.com'
zap.urlopen(target)
time.sleep(2)  # 等待URL加载

print('正在Spider目标 {}'.format(target))
scanid = zap.spider.scan(target)
time.sleep(2)

while int(zap.spider.status(scanid)) < 100:
    print('Spider进度 %: {}'.format(zap.spider.status(scanid)))
    time.sleep(2)

print('Spider完成')
print('正在主动扫描目标 {}'.format(target))
scanid = zap.ascan.scan(target)
while int(zap.ascan.status(scanid)) < 100:
    print('扫描进度 %: {}'.format(zap.ascan.status(scanid)))
    time.sleep(5)

print('扫描完成')
print('警报: ')
print(zap.core.alerts(baseurl=target))

集成到CI/CD管道

  • 使用Jenkins
    • 在Jenkins中,可以使用ZAP的命令行工具或API进行安全测试。设置Jenkins任务,添加执行ZAP扫描的步骤,并在每次构建中运行。

7. 常见问题与解决

问题:ZAP无法捕获HTTPS流量

  • 解决方案:确保正确导入ZAP证书,并配置浏览器信任该证书。

问题:扫描时间过长

  • 解决方案:优化扫描配置,限制Spider和主动扫描的深度和广度。可以在ZAP的“选项”中进行配置。

问题:扫描结果误报

  • 解决方案:手动验证扫描结果,排除误报。可以在ZAP中标记警报状态,如“False Positive”。

警报信息结构

每个ZAP警报通常包括以下信息:

  1. 标题:警报的名称,描述了发现的漏洞类型。
  2. URL:触发警报的资源路径。
  3. 风险级别:漏洞的严重程度(高、中、低)。
  4. 置信度:ZAP对该警报的置信度(高、中、低)。
  5. 描述:详细说明了漏洞的性质和影响。
  6. 解决方案:建议的修复措施。
  7. 参考:与该漏洞相关的外部文档和资源链接。

示例警报解读

我们通过一个示例来具体解读一个ZAP警报:

示例警报

标题: 跨站脚本 (XSS)
URL: http://example.com/search?query=test
风险级别: 高
置信度: 高
描述: 发现跨站脚本 (XSS) 漏洞。攻击者可以通过在URL参数中插入恶意脚本,从而在用户浏览器中执行任意代码。
解决方案: 对所有用户输入进行适当的验证和转义。
参考: https://owasp.org/www-community/attacks/xss/

解读

1、标题: 跨站脚本 (XSS)

  • 说明:该警报发现了跨站脚本漏洞,即攻击者可以在受害者的浏览器中执行恶意脚本。

2、URL:example.com/search?quer…

  • 说明:漏洞出现在该URL中,通过query参数可以触发漏洞。

3、风险级别: 高

  • 说明:该漏洞的严重性很高,可能导致严重的安全问题,如用户数据泄露、会话劫持等。

4、置信度: 高

  • 说明:ZAP对该警报的置信度很高,表明该漏洞的发现非常可靠。

5、描述: 发现跨站脚本 (XSS) 漏洞。攻击者可以通过在URL参数中插入恶意脚本,从而在用户浏览器中执行任意代码。

  • 说明:详细描述了该漏洞的性质和潜在影响,解释了如何通过URL参数插入恶意脚本。

6、解决方案: 对所有用户输入进行适当的验证和转义。

  • 说明:提供了修复建议,建议对用户输入进行验证和转义,以防止恶意脚本执行。

7、参考: owasp.org/www-communi…

  • 说明:提供了一个外部链接,指向更多关于XSS攻击的详细信息。

如何处理ZAP警报

1、确认漏洞

  • 手动验证:手动测试以确认漏洞是否真实存在。例如,可以尝试在输入字段中插入简单的脚本标签,如<script>alert('XSS')</script>,看是否会弹出警报框。
  • 查看日志和响应:检查相关的HTTP请求和响应,验证是否存在安全问题。

2、修复漏洞

  • 应用修复建议:按照警报中的建议进行修复,例如对用户输入进行验证和转义。
  • 更新依赖:如果警报涉及易受攻击的库或框架,确保将其更新到最新的安全版本。

3、重新测试

  • 重新扫描:修复漏洞后,使用ZAP重新扫描应用程序,确认漏洞已被修复。

学习资源

  1. OWASP ZAP官方文档:ZAP的官方文档提供了详细的使用指南和示例,非常适合初学者阅读。
  2. OWASP Top Ten:了解最常见的Web应用安全风险及其防护措施。
  3. OWASP安全编码实践:学习如何编写安全的代码,避免常见的安全漏洞。

Burp Suite全面指南

Burp Suite是由PortSwigger开发的一款强大的Web应用程序安全测试工具。它被广泛用于渗透测试和安全评估,帮助测试人员发现和利用Web应用程序中的安全漏洞。

定义

Burp Suite:是一款集成的Web应用程序安全测试平台,包含一系列工具,用于全面测试Web应用程序的安全性。它包括诸如代理、扫描器、爬虫、入侵、回放、解码和比对等模块。

优势

  1. 功能强大:Burp Suite提供了广泛的功能,包括拦截代理、爬虫、扫描器、入侵工具、会话回放、比对、解码等,覆盖了Web应用安全测试的各个方面。

  2. 易于使用:直观的用户界面,使得新手和有经验的测试人员都能快速上手和高效使用。

  3. 可扩展性:支持自定义扩展,可以通过Burp Extender API编写自定义插件,以满足特定需求。

  4. 集成性:可以与其他工具和平台集成,如CI/CD管道、Jenkins等,实现自动化安全测试。

  5. 实时分析:实时捕获和分析HTTP/HTTPS流量,帮助测试人员实时发现和分析安全漏洞。

使用场景

  1. 渗透测试:通过Burp Suite的各种工具(如Proxy、Scanner、Intruder)进行手动和自动化的渗透测试。

  2. 安全评估:使用Scanner进行全面的安全评估,发现潜在的安全漏洞。

  3. 漏洞验证:通过Repeater和Intruder模块,手动测试和验证发现的漏洞。

  4. 漏洞利用:通过Burp Intruder模块进行漏洞利用,测试应用程序的安全性。

  5. 开发和调试:开发人员可以使用Burp Suite来调试和分析应用程序的HTTP/HTTPS流量,发现和修复安全问题。

使用方法

1. 安装Burp Suite

  • 下载:从PortSwigger官网下载Burp Suite Community Edition(免费)或Burp Suite Professional(付费)。
  • 安装:根据操作系统(Windows、macOS、Linux)的不同,按照下载页面提供的指引进行安装。

2. 配置代理

  • 启动Burp Suite:打开Burp Suite应用程序。
  • 配置代理:Burp Suite默认监听本地端口8080。需要配置浏览器使用Burp Suite作为代理:
    • 打开浏览器的代理设置,设置HTTP代理为localhost,端口为8080

3. 拦截和分析流量

  • 启用代理:在Burp Suite中,确保代理模块(Proxy)处于启用状态。
  • 访问应用程序:在配置了代理的浏览器中访问目标Web应用程序。Burp Suite将拦截并记录所有HTTP/HTTPS请求和响应。
  • 查看和修改请求:在Proxy > Intercept选项卡中,可以查看和修改拦截的请求,然后将其发送到服务器。

4. 扫描应用程序

  • 设置目标:在Target选项卡中,定义扫描范围,添加目标URL。
  • 启动扫描:在Scanner模块中,启动扫描以发现Web应用程序中的安全漏洞。

5. 使用Intruder模块

  • 配置攻击:在Intruder模块中,配置目标URL、参数位置和有效负载。
  • 启动攻击:启动Intruder攻击,测试应用程序的安全性。例如,可以使用字典攻击测试登录页面的弱密码。

6. 使用Repeater模块

  • 手动测试:在Repeater模块中,将请求发送到Repeater,手动修改请求参数并发送,观察响应,验证漏洞。

7. 使用Sequencer模块

  • 分析令牌:在Sequencer模块中,捕获和分析令牌的随机性,评估会话管理的安全性。

8. 生成报告

  • 生成报告:在Burp Suite中,选择“Report” > “Generate HTML Report…”或“Generate XML Report…”以生成扫描报告。

Burp Suite的具体模块介绍

  1. Proxy:拦截和修改HTTP/HTTPS请求和响应。
  2. Spider:自动爬取Web应用程序,发现所有链接和页面。
  3. Scanner:自动扫描Web应用程序,发现常见的安全漏洞。
  4. Intruder:进行自动化攻击,如暴力破解和字典攻击。
  5. Repeater:手动发送和修改HTTP/HTTPS请求,用于漏洞验证。
  6. Sequencer:分析令牌随机性,评估会话管理的安全性。
  7. Decoder:对数据进行编码和解码,便于分析和测试。
  8. Comparer:对比HTTP请求和响应,找出差异。

ZAP和Burp Suite结合使用

ZAP和Burp Suite可以结合使用,因为它们各自具有独特的功能和优势,能够互补。结合使用它们可以提高Web应用程序安全测试的覆盖范围和深度。例如,可以使用ZAP进行自动化扫描和被动分析,同时使用Burp Suite进行手动测试和漏洞验证。

Excel描述

以下是用Excel描述ZAP和Burp Suite的共同点和区别的表格:

功能/特性ZAPBurp Suite共同点
基本功能拦截代理、自动化扫描、爬虫、入侵拦截代理、自动化扫描、爬虫、入侵提供了拦截代理、自动化扫描和爬虫等功能
用户界面图形用户界面(GUI)图形用户界面(GUI)提供直观的图形用户界面
价格免费(开源)免费(社区版),付费(专业版)都有免费版本
扩展性插件扩展支持插件扩展支持都支持插件扩展
自动化测试支持命令行和API支持命令行和API都支持命令行和API
被动扫描支持支持都支持被动扫描
主动扫描支持支持都支持主动扫描
漏洞报告支持生成报告(HTML、XML等)支持生成报告(HTML、XML等)都支持生成多种格式的报告
爬虫(Spider)支持支持都支持爬虫功能
Intruder(入侵)有类似功能(Fuzzer)支持都有入侵功能
Repeater(重放)不支持(可以使用其他功能模拟)支持-
Sequencer(序列分析)不支持支持-
Decoder(解码器)支持支持都支持解码和编码功能
Comparer(比较器)不支持支持-
目标用户初学者、专业安全测试人员初学者、专业安全测试人员都适合初学者和专业安全测试人员
社区支持强大(OWASP社区)强大(PortSwigger社区)都有广泛的社区支持

详细解释

共同点

  1. 基本功能:ZAP和Burp Suite都提供了拦截代理、自动化扫描、爬虫、入侵等基本功能,帮助识别和测试Web应用程序中的安全漏洞。
  2. 用户界面:两者都有直观的图形用户界面,方便用户操作和管理。
  3. 扩展性:两者都支持插件扩展,可以通过自定义插件来扩展其功能。
  4. 自动化测试:ZAP和Burp Suite都支持命令行和API,可以集成到CI/CD管道中进行自动化安全测试。
  5. 被动扫描和主动扫描:两者都支持被动和主动扫描,全面检测Web应用程序的安全性。
  6. 漏洞报告:两者都可以生成多种格式的漏洞报告,便于分析和分享。

区别

  1. 价格:ZAP是完全免费的开源工具,而Burp Suite有免费社区版和付费专业版,专业版提供了更多高级功能。
  2. Intruder(入侵) :Burp Suite的Intruder功能非常强大,可以进行复杂的攻击测试,而ZAP的类似功能(Fuzzer)相对简单。
  3. Repeater(重放) :Burp Suite提供Repeater功能,方便手动修改和重放请求,验证漏洞,而ZAP需要使用其他功能来模拟这一过程。
  4. Sequencer(序列分析) :Burp Suite支持Sequencer模块,用于分析令牌的随机性,评估会话管理的安全性,ZAP不具备此功能。
  5. Decoder(解码器)和Comparer(比较器) :Burp Suite提供独立的Decoder和Comparer模块,而ZAP在这方面的功能较少。

选择使用ZAP还是Burp Suite,或者结合使用这两者,取决于项目具体需求、预算、团队技术水平和项目要求。

选择ZAP的原因

  1. 预算限制:ZAP是完全免费的开源工具,非常适合预算有限的小型团队和个人使用。

  2. 开源社区支持:作为OWASP项目的一部分,ZAP拥有广泛的社区支持和大量的文档、教程和示例,可以帮助快速上手和解决问题。

  3. 自动化集成:ZAP提供丰富的命令行工具和API接口,方便与CI/CD管道集成,实现自动化安全测试。

  4. 易用性:ZAP的界面友好,适合初学者使用,同时也提供了足够的功能供高级用户使用。

  5. 被动扫描和快速测试:ZAP在被动扫描方面表现出色,适合进行快速的安全测试和初步的漏洞发现。

选择Burp Suite的原因

  1. 高级功能:Burp Suite Professional版提供了许多高级功能,如强大的Intruder、Repeater、Sequencer、Comparer等,可以进行更复杂和深入的安全测试。

  2. 精细化测试:Burp Suite的工具更适合手动和精细化的测试,帮助发现深层次和复杂的漏洞。

  3. 企业级支持:对于需要企业级支持和更高级功能的团队,Burp Suite Professional版是一个更好的选择。

  4. 用户界面和工作流优化:Burp Suite的用户界面和工作流优化设计,使得安全测试更加高效和便捷。

结合使用ZAP和Burp Suite的原因

  1. 综合利用各自优势:结合使用ZAP和Burp Suite,可以利用两者的优势。ZAP可以用于初步的自动化扫描和被动分析,而Burp Suite可以用于手动验证和精细化测试。

  2. 多层次安全测试:使用ZAP进行快速的安全扫描,发现初步的漏洞,然后使用Burp Suite进行深入的手动测试,确保没有遗漏重要的安全问题。

  3. 不同阶段的测试:在开发早期和持续集成过程中使用ZAP进行自动化测试,在功能测试和最终发布前使用Burp Suite进行详细的手动测试。

结论

  • 如果预算有限且主要进行自动化测试:选择ZAP。
  • 如果需要高级功能和手动精细化测试:选择Burp Suite Professional。
  • 如果希望全面覆盖并利用两者的优势:结合使用ZAP和Burp Suite。

具体使用场景的建议

  1. 开发早期和持续集成:使用ZAP进行自动化扫描,确保代码改动没有引入新的安全漏洞。

  2. 功能测试和回归测试:使用Burp Suite进行详细的手动测试,验证发现的漏洞,并进行更深入的安全评估。

  3. 发布前安全评估:结合使用ZAP和Burp Suite,进行全面的安全扫描和手动验证,确保发布版本的安全性。

示例工作流

  1. 使用ZAP进行自动化扫描:在每次代码提交和构建过程中,使用ZAP的命令行工具或API进行自动化扫描,发现初步的安全问题。
  2. 手动验证和深入测试:使用Burp Suite的Proxy、Repeater和Intruder模块,手动验证ZAP发现的漏洞,并进行更深入的测试。
  3. 生成报告和修复漏洞:在两者的扫描和测试结果基础上,生成详细的漏洞报告,提交给开发团队进行修复。

推荐学习

【霍格沃兹测试开发】7天软件测试快速入门带你从零基础/转行/小白/就业/测试用例设计实战

【霍格沃兹测试开发】最新版!Web 自动化测试从入门到精通/ 电子商务产品实战/Selenium (上集)

【霍格沃兹测试开发】最新版!Web 自动化测试从入门到精通/ 电子商务产品实战/Selenium (下集)

【霍格沃兹测试开发】明星讲师精心打造最新Python 教程软件测试开发从业者必学(上集)

【霍格沃兹测试开发】明星讲师精心打造最新Python 教程软件测试开发从业者必学(下集)

【霍格沃兹测试开发】精品课合集/ 自动化测试/ 性能测试/ 精准测试/ 测试左移/ 测试右移/ 人工智能测试

【霍格沃兹测试开发】腾讯/ 百度/ 阿里/ 字节测试专家技术沙龙分享合集/ 精准化测试/ 流量回放/Diff

【霍格沃兹测试开发】Pytest 用例结构/ 编写规范 / 免费分享

【霍格沃兹测试开发】JMeter 实时性能监控平台/ 数据分析展示系统Grafana/Docker 安装

【霍格沃兹测试开发】接口自动化测试的场景有哪些?为什么要做接口自动化测试?如何一键生成测试报告?

【霍格沃兹测试开发】面试技巧指导/ 测试开发能力评级/1V1 模拟面试实战/ 冲刺年薪百万!

【霍格沃兹测试开发】腾讯软件测试能力评级标准/ 要评级表格的联系我

【霍格沃兹测试开发】Pytest 与Allure2 一键生成测试报告/ 测试用例断言/ 数据驱动/ 参数化

【霍格沃兹测试开发】App 功能测试实战快速入门/adb 常用命令/adb 压力测试

【霍格沃兹测试开发】阿里/ 百度/ 腾讯/ 滴滴/ 字节/ 一线大厂面试真题讲解,卷完拿高薪Offer !

【霍格沃兹测试开发】App自动化测试零基础快速入门/Appium/自动化用例录制/参数配置

【霍格沃兹测试开发】如何用Postman 做接口测试,从入门到实战/ 接口抓包(最新最全教程)