代码之家  ›  专栏  ›  技术社区  ›  achahbar

在Docker环境中通过owasp zap扫描REST API

  •  0
  • achahbar  · 技术社区  · 6 年前

    我设置了一个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任务的人)

    一切都很好,但最近我想使用RESTAPI作为目标URL。AzureDevOps中的owasp zap任务没有这种能力。甚至问造物主( https://github.com/kasunkv/owasp-zap-vsts-task/issues/30#issuecomment-452258621 )他也不认为这是通过AzureDevOps任务和Docker实现的。

    在我的下一个任务中,我现在正试图让它在一个Docker图像中运行。(首先是在Azure DevOps中,但这并不顺利 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文件,并运行docker-run命令,并用-t传递json文件,我得到导入的URL的数量:什么看起来都是。但这似乎冻结在PowerShell内部。

    我错过了在RESTAPI上进行完全递归扫描的哪一步? 有什么建议或帮助吗?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Simon Bennetts    6 年前

    首先,您的属性文件格式错误。如果直接在命令行上设置选项,则只需要'-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
    

    看看你得到了什么。