Сканирование Rest API через OWASP в среде докера
Я установил сборку CI/CD для разработчиков Dev Azure, которая запустит виртуальную машину, в которой Owasp Zap работает в качестве прокси-сервера, и где задача Devas Owasp zap Azure будет выполняться по целевому URL и скопирует мой отчет в хранилище Azure.
Следовал красивому учебнику этого парня: https://kasunkodagoda.com/2017/09/03/introducing-owasp-zed-attack-proxy-task-for-visual-studio-team-services/ (также парень, который создал Azure черт возьми)
Все хорошо, но недавно я хотел использовать REST Api в качестве целевого URL. Задание Owasp zap в лазурных девопах не имеет этой способности. Даже спросил создателя ( https://github.com/kasunkv/owasp-zap-vsts-task/issues/30), и он также не думал, что это доступно через задачу Azure devops и только через докер,
В моем следующем квесте я сейчас пытаюсь запустить его в образе докера. (Во-первых, внутри разработчиков Azure, но это было не совсем гладко, https://github.com/zaproxy/zaproxy/issues/5176) И, наконец, ознакомление с этим руководством ( https://zaproxy.blogspot.com/2017/06/scanning-apis-with-zap.html)
Где я пытаюсь запустить образ докера с помощью следующих шагов:
--- docker pull owasp/zap2docker-weekly
- запуск контейнера
------- команда: docker run -v ${pwd}:/zap/wrk/:rw -t owasp/zap2docker-weekly zap-api-scan.py -t https://apiurl/api.json -f openapi -z "-configfile /zap/wrk/options.prop
"
------- options.prop file
-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=Bearer xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Но при этом сканируется только корневой URL, а не каждый URL. Когда я набираю этот вопрос, я попытался загрузить файл json из корня и запустить команду docker run с передачей файла json с параметром -t. Я получаю количество импортированных URL-адресов: что, похоже, и есть все. Но это, кажется, замерзает внутри PowerShell.
Какой шаг мне не хватает, чтобы получить полное рекурсивное сканирование моего API для отдыха? Кто-нибудь какие-нибудь идеи или помощь, пожалуйста?
1 ответ
Во-первых, у вас неправильный формат файла свойств. Вам нужны только '-config' и '\', если вы устанавливаете параметры непосредственно в командной строке. В файле свойств вы должны иметь:
replacer.full_list(0).description=auth1
replacer.full_list(0).enabled=true
replacer.full_list(0).matchtype=REQ_HEADER
replacer.full_list(0).matchstr=Authorization
replacer.full_list(0).regex=false
replacer.full_list(0).replacement=Bearer xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Во-вторых, что возвращает https://apiurl/api.json и проверили ли вы, что можете получить к нему доступ из контейнера Docker? Попробуйте запустить
curl https://apiurl/api.json
и посмотрим, что вы получите.