Сканирование 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

и посмотрим, что вы получите.

Другие вопросы по тегам