####################
免责声明:工具本身并无好坏,希望大家以遵守《网络安全法》相关法律为前提来使用该工具,支持研究学习,切勿用于非法犯罪活动,对于恶意使用该工具造成的损失,和本人及开发者无关。
####################
脚本 zap-api-scan.py 包含在Weekly和 Live ZAP Docker 镜像中,它也将包含在下一个 稳定镜像中。
要使用 API 扫描脚本,您只需使用以下命令:
docker pull owasp/zap2docker-weekly
docker run -t owasp/zap2docker-weekly zap-api-scan.py -t
https://www.example.com/openapi.json -f openapi
复制
默认情况下,脚本:
-
导入提供的 API 定义
-
使用针对 API 调整的自定义扫描配置文件主动扫描 API
-
向命令行报告发现的任何问题
如果没有报告任何问题,那么这并不意味着您的 API 是安全的。 如果您的 API 特别重要或敏感,那么在扫描之后进行手动渗透测试是明智的。您还应该测试使用 API 的应用程序,因为通过 API 返回的数据如果不能适当地转义最初通过用户输入的数据,仍然可以用来攻击应用程序。
命令行选项
该脚本有许多命令行选项,可以根据您的要求对其进行调整:
Usage: zap-api-scan.py -t <target> -f <format> [options]
-t target target API definition, OpenAPI or SOAP, local file or URL, e.g. https://www.example.com/openapi.json
-f format either openapi or soap
Options:
-c config_file config file to use to INFO, IGNORE or FAIL warnings
-u config_url URL of config file to use to INFO, IGNORE or FAIL warnings
-g gen_file generate default config file(all rules set to WARN)
-r report_html file to write the full ZAP HTML report
-w report_md file to write the full ZAP Wiki(Markdown) report
-x report_xml file to write the full ZAP XML report
-a include the alpha passive scan rules as well
-d show debug messages
-P specify listen port
-D delay in seconds to wait for passive scanning
-i default rules not in the config file to INFO
-l level minimum level to show: PASS, IGNORE, INFO, WARN or FAIL, use with -s to hide example URLs
-n context_file context file which will be loaded prior to scanning the target
-p progress_file progress file which specifies issues that are being addressed
-s short output format - don't show PASSes or example URLs
-z zap_options ZAP command line options e.g. -z "-config aaa=bbb -config ccc=ddd"
复制
扫描规则
默认情况下,该脚本将使用针对 API 调整的扫描策略。 这将禁用专注于客户端(例如浏览器)问题的规则,例如用于检测跨站脚本的规则,并且还添加了 2 个作为脚本实现的附加规则:
-
Alert_on_HTTP_Response_Code_Errors.js
-
Alert_on_Unexpected_Content_Types.js
您可以使用配置文件更改运行哪些规则以及如何报告故障。这允许您调整扫描脚本以满足您对每个 API 的要求。 要生成配置文件,请使用“-g”选项。这将创建一个文件,其中包含所有可用的主动和被动扫描规则。有关详细信息,请参阅配置文件。您可以使用文本编辑器编辑此文件。 更改被动规则只会影响报告失败的方式,但将主动规则更改为 IGNORE 会阻止规则运行。这是为了减少整体扫描时间 - 被动规则非常快,而主动规则可能需要大量时间。
指定值
ZAP 将在导入 API 时使用一组默认值。在某些情况下,这些值对于特定应用程序来说不是合适的值,因此不会对代码进行足够的练习。例如,用户名“test”可能不会导致创建新用户,因为它不是有效的电子邮件地址。 对于使用 OpenAPI/Swagger 定义的 API,您可以通过 ZAP 命令行选项指定希望 ZAP 使用的值。 例如选项:
-config formhandler.fields.field\(0\).fieldId=username
-config formhandler.fields.field\(0\).value=test@example.com
-config formhandler.fields.field\(0\).enabled=true
-config formhandler.fields.field\(1\).fieldId=phone
-config formhandler.fields.field\(1\).value=012345678
-config formhandler.fields.field\(1\).enabled=true
复制
将为命名字段提供以下值: username
-> [email protected]
phone
->012345678
还计划支持为使用 SOAP 定义的 API 指定值 - 如果您需要,请与 ZAP 开发团队联系,我们将尽最大努力优先考虑。
请注意,由于这些是 ZAP 命令行选项,您需要使用 -z 脚本选项将它们指定给脚本。 如果您需要指定很多选项,那么您可以将它们全部放在一个属性文件中,例如称为 options.prop 然后您可以使用如下命令运行 API 扫描:
docker run -v $(pwd):/zap/wrk/:rw -t owasp/zap2docker-weekly zap-api-scan.py
-t https://www.example.com/openapi.json -f openapi
-z "-configfile /zap/wrk/options.prop"
复制
这"-v $(pwd):/zap/wrk/:rw"
是一个 Docker 选项,它将当前工作目录映射到 Docker 实例中名为 /zap/wrk 的文件夹。
验证
您的某些 API 可能会使用身份验证机制进行保护。 对于使用标头值的机制,我们建议您使用任何适当的方式为您的应用程序获取合适的令牌,然后通过另一组命令行选项告诉 ZAP 使用它们。 例如选项:
-config replacer.full_list\(0\).description=auth1
-config replacer.full_list\(0\).enabled=true
-config replacer.full_list\(0\).matchtype=REQ_HEADER
-config replacer.full_list\(0\).matchstr=Authorization
-config replacer.full_list\(0\).regex=false
-config replacer.full_list\(0\).replacement=123456789
-config replacer.full_list\(1\).description=auth2
-config replacer.full_list\(1\).enabled=true
-config replacer.full_list\(1\).matchtype=REQ_HEADER
-config replacer.full_list\(1\).matchstr=AnotherHeader
-config replacer.full_list\(1\).regex=false
-config replacer.full_list\(1\).replacement=abcdefghi
复制
将导致以下标头添加到 ZAP 发出的每个请求中: Authorization: 123456789
AnotherHeader: abcdefghi
您可以使用递增索引指定任意数量的标头。
此功能由 ZAP 默认包含的Replacer插件提供。它非常强大,可以做的不仅仅是注入新的标头值,因此如果您需要以其他方式操作 ZAP 发出的请求,那么这对您来说可能是一个非常好的选择。
原文始发于微信公众号(菜鸟小新):使用 ZAP 扫描 API
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论