【问题标题】:Basic Authorization in Zapproxy APIZapproxy API 中的基本授权
【发布时间】:2023-07-21 08:18:01
【问题描述】:

我有这个 curl 来调用一个 api:

curl -X POST -u user:password /to/the/end/point

如果我收到带有 zapproxy 的请求,我可以发送此请求并进行主动攻击,但我正在尝试对 python api 进行此调用。我无法使用基本授权(base64 或用户:密码)进行身份验证。我正在尝试使用 gui 和导出创建上下文并将其与 zap-api-scan.py 一起使用,但它不起作用。

我已经阅读了这些帖子:

https://zaproxy.blogspot.com/2017/06/scanning-apis-with-zap.html

Basic Authorization in OWASP ZAP

https://github.com/zaproxy/zap-core-help/wiki/HelpStartConceptsAuthentication#httpntlm-authentication

但我还没有找到解决办法。

你能帮帮我吗?

谢谢。

【问题讨论】:

  • 您是否在 GUI 中设置了它以开始使用?我只是像这样将基本身份验证与 xampp 组合在一起:chandanpatra.blogspot.com/2013/08/… 然后在 ZAP 上下文中配置“HTTP/NTLM 身份验证”并在上下文的“用户”面板下创建一个用户....工作正常:Spider,Active Scan,随便...还请注意,当 ZAP 运行时,您可以通过浏览器访问 API,以了解您可能需要进行哪些调用以及它们采用哪些参数。
  • 是的,我试过了,但我认为我没有选择正确的选项。在身份验证中,我选择 HTTP / NTLM 身份验证,但我不知道在字段中输入什么。
  • 定义你的上下文(通过在上下文正则表达式中设置包含)。在身份验证面板中设置身份验证选择“HTTP/NTLM 身份验证”输入主机名和端口(对于需要身份验证的主机......localhost 80 或 www.example.org 443 或其他)。转到“用户”面板并创建一个用户(随意命名,输入用于基本身份验证的用户名和密码)。
  • 好的!我有一个在 gui 中工作的上下文,但是当我在 docker 中导出和使用 zap-api-scan.py 时不起作用:./zap-api-scan.py -t target/to/end/point -f openapi -n /文件/上下文
  • 你能比“不工作”更具体吗?有错误吗?是不是导入失败?等等

标签: api authentication owasp zap zapproxy


【解决方案1】:

我有这个但不工作,不要导入上下文:

#!/usr/bin/env python

from zapv2 import ZAPv2


target = 'https://target/to/api'

zap = ZAPv2(proxies={'http': 'http://127.0.0.1:8888', 'https': 'http://127.0.0.1:8888'})

zap.context.import_context("/file/context")

print 'Accessing target %s' % target
zap.urlopen(target)
time.sleep(2)

print 'Spidering target %s' % target
scanid = zap.spider.scan(target)

time.sleep(2)

print 'Spider completed'

time.sleep(5)

print 'Scanning target %s' % target
scanid = zap.ascan.scan(target)

print 'Scan completed'

【讨论】:

  • 您似乎也在启动蜘蛛并扫描而不检查状态或等待完成?
  • 您是否以可以访问 /file/context 的方式启动 docker 容器?
  • 你有没有遇到过这个问题?