Возможно ли тестирование rest-api через OWASP ZAP? Урл для атаки работал только для запросов GET.
Например, мои контроллеры api работают только с токеном. У меня есть TokenController, и этот контроллер требует данных POST через данные JSON, включая пароль и логин. Могу ли я как-нибудь протестировать этот контроллер через OWASP?





Короткий ответ: да. Длинный ответ - это сложно :)
Тестирование REST API немного сложнее, чем тестирование веб-API - вам нужно будет предоставить Zap информацию о вашем API - какие конечные точки у него есть, параметры и т. д. Не могли бы вы рассказать больше о своем API? Есть ли у него документ OpenAPI / Swagger? Есть ли у вас существующие тесты? Вы можете использовать любой из них для этой задачи.
Я рассказал о том, как этого можно достичь - вы можете найти запись здесь.
означает ли это, что автоматическое тестирование невозможно?
У вас есть определение вашего API? Если да, то взгляните на github.com/zaproxy/zaproxy/wiki/ZAP-API-Scan. Если нет, есть ли у вас какие-нибудь завершающие тесты? Если у вас их тоже нет, то любому автоматизированному инструменту будет сложно изучить ваш API.
Да, как сказал Саймон :) Если вы хотите использовать существующие тесты, вы можете следовать этому руководству: github.com/Soluto/owasp-zap-glue-ci-images
Можно ли сканировать api только через owasp zap, запущенный на докере? Я развернул это, следуя этому руководству. kasunkodagoda.com/2017/09/03/… Внутри виртуальной машины, которая запускает программу owasp zap.
Можно автоматизировать тестирование API с помощью OWASP ZAP, но для выполнения тестов я вижу два варианта: Предложить некоторый шаблон использования, например, OpenAPI для 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
Как вы в конце концов это поняли? С помощью owasp zap в docker env, как в ответе ниже?