Owasp Zap 测试 rest api
Posted
技术标签:
【中文标题】Owasp Zap 测试 rest api【英文标题】:Owasp Zap Testing rest api 【发布时间】:2019-01-13 08:02:08 【问题描述】:可以通过 OWASP ZAP 测试 rest-api 吗? 攻击 URL 仅适用于 GET 请求。
例如,我的 api 控制器仅使用令牌。我有 TokenController,这个控制器需要通过 JSON 数据的 POST 数据,包括密码和登录名。我可以通过 OWASP 测试这个控制器吗?
【问题讨论】:
您最终是如何发现这一点的?在 docker env 中使用 owasp zap,如下面的答案? 【参考方案1】:可以使用 OWASP ZAP 自动化 API 测试,但要执行测试,我看到两个选项: 提供一些使用模式,例如 OpenAPI for ZAP 考虑提取信息。第二种选择是运行自动化测试以将 ZAP 捕获为被动扫描信息,然后您可以测试会话信息。
我们建议使用 OpenAPI 文档。 黄瓜测试如下所示:
Feature: Security
This feature is to test pokemon service security
Scenario: Validate passive and active scan
Given I import context from open API specification "/v2/api-docs"
And I remove alerts
| url |
| http://.*/v2/api-docs* |
And I import scan policy "javaclean" from file "javaclean.policy"
When I run active scan
And I generate security test html report with name "java-clean-security-report"
Then the number of risks per category should not be greater than
| low | medium | high | informational |
| 0 | 0 | 0 | 0 |
我正在为 ZAP 开发步骤,在 GitHub 中查看:https://github.com/osvaldjr/easy-cucumber/wiki/Security-steps
导入 OpenAPI 文档的示例步骤:
@Given("^I import context from open API specification \"([^\"]*)\"$")
public void iImportContextFromOpenAPISpecification(String path)
throws ClientApiException, InterruptedException
String url = getTargetUrl() + path;
log.info("Import Open API from url: " + url);
zapProxyApi.openapi.importUrl(url, null);
waitPassiveScanRunning();
verifyThatTheProxyHasCapturedHostInformation();
查看其他步骤:https://github.com/osvaldjr/easy-cucumber/blob/master/src/main/java/io/github/osvaldjr/stepdefinitions/steps/SecuritySteps.java
【讨论】:
【参考方案2】:简短的回答是肯定的。长答案 - 这很复杂:)
测试 REST API 比测试 Web API 更难一些——你必须提供关于你的 API 的 Zap 信息——它有哪些端点、参数等。你能分享更多关于你的 API 的信息吗?它有 OpenAPI/Swagger 文档吗?你有现有的测试吗?您可以使用其中任何一种来完成此任务。
我讲了如何实现这一点 - 你可以找到录音here。
【讨论】:
是不是说自动测试是不可能的? 您的 API 有定义吗?如果是这样,那么看看github.com/zaproxy/zaproxy/wiki/ZAP-API-Scan 如果没有,你有任何现有的测试吗?如果您也没有这些,那么任何自动化工具都很难探索您的 API。 是的,正如 Simon 所说 :) 如果你想使用现有的测试,你可以遵循这个指南:github.com/Soluto/owasp-zap-glue-ci-images 是否只能通过 docker 上运行的 owasp zap 扫描 api ?我在遵循本教程 kasunkodagoda.com/2017/09/03/… 在运行 owasp zap 程序的虚拟机中部署了它以上是关于Owasp Zap 测试 rest api的主要内容,如果未能解决你的问题,请参考以下文章
Owasp zap 工具 - 如何获取通过和失败测试的列表?