在docker环境中通过OWASP zap扫描Rest API

时间:2019-01-08 15:26:11

标签: docker owasp zap

我设置了一个Azure devops CI / CD构建,它将启动一个虚拟机,其中Owasp Zap作为代理运行,而Owasp zap Azure devops任务将在目标url上运行并将我的报告复制到Azure存储中。

遵循了这个人的精美教程:https://kasunkodagoda.com/2017/09/03/introducing-owasp-zed-attack-proxy-task-for-visual-studio-team-services/ (也是创建Azure devops任务的人)

很好,但是最近我想使用REST Api作为目标URL。天蓝色devops中的Owasp zap任务不具备此功能。甚至问过创建者(https://github.com/kasunkv/owasp-zap-vsts-task/issues/30#issuecomment-452258621),他也不认为Azure运维任务只能通过docker提供此功能。

在我的下一个任务中,我现在试图使其在docker映像中运行。 (首先是在Azure开发人员内部,但这并不顺利https://github.com/zaproxy/zaproxy/issues/5176) 最后进入本教程(https://zaproxy.blogspot.com/2017/06/scanning-apis-with-zap.html

我尝试通过以下步骤运行docker映像的地方:

--- 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文件并通过-t传递json文件来运行docker run命令,我得到的是导入URL的数量:这似乎是所有东西。但这似乎冻结在powershell内部。

我想在其余api上进行完整的递归扫描是哪一步? 有任何想法或帮助吗?

1 个答案:

答案 0 :(得分: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

看看你得到什么。