使用 API 调用的 ZAP 身份验证
Posted
技术标签:
【中文标题】使用 API 调用的 ZAP 身份验证【英文标题】:ZAP Authentication using API calls 【发布时间】:2015-02-20 04:52:40 【问题描述】:我正在使用 ZAP API 调用来使用命令行测试站点。但是即使我遵循正确的步骤,我的用户身份验证也存在问题。但是当蜘蛛作为用户时,我仍然无法通过登录页面。以下是我正在执行的步骤。
1.包含在上下文中(context/includeContext)
2.将身份验证方法更改为基于表单。 (身份验证/setAutenticationMethod) 这里我只传递 contextID、authMethodName 和在 authMethodConfigParams 中只传递 logiunUrl。不是登录请求数据。我试图将 authMethodConfigParams 传递为
loginUrl=**********************&loginRequestData=username=%username%&password=%password%
但是当我使用它时该字段没有填满。
3.设置登录指标(authentication/setLoggedInIndicator)
4.启用自动重认证(auth/autoReauthON)
5.添加新用户(users/nweUser)
6.为用户设置凭据(users/setAuthenticationCredentials)
7.启用用户(users/setUserEnabled)
8.Spider作为新用户(spider/scanAsUser)
但是在爬虫中它无法通过登录页面。当我打开 UI 应用程序时,所有 API 调用都已工作并且所有设置 已在会话属性上配置。但是当我检查 POST 请求时,它如下所示。
username=ZAP&password=ZAP&rememberMe=true
我认为这是问题所在。为什么不使用新用户凭据??
提前致谢
【问题讨论】:
您能否在此处发布您的解决方案作为答案,以便其他人可以从您的问题中学习? 当然我会发布我的解决方案 嘿,你能把完整的 api 贴在这里吗?我有些困惑,我不知道如何使用 api 发布数据。非常感谢 这里我大致指出了需要的api调用。希望能帮助到你。 :) janitha000.wordpress.com/2015/09/12/… 【参考方案1】:我使用这个命令及其工作//
docker run --rm -v $(pwd):/zap/wrk/:rw -t owasp/zap2docker-stable zap-baseline.py -t http://example.com/ -g gen.conf -r testreport.html authMethodName : formBasedAuthentication authMethodConfigParams :loginUrl=http://example.com/admin/login/?next=/admin/&csrfmiddlewaretoken=VA3M5L1y6ieXjb1e9AqRzBdqbgY4afrL&username=admin@admin.com&password=admin&next=/admin/
【讨论】:
【参考方案2】:我的问题是我用来传递 authMethodConfigParams 的方式是错误的。 authMethodConfigParams 应该是 "x-www-form-urlencoded" ,而不是正常形式。所以我使用http://www.url-encode-decode.com/ 来转换我的authMethodConfigParams 并将它传递给API。此外,在传递 scanAsUser 时,我必须以“x-www-form-urlencoded”格式传递。 所以这是我的解决方案
【讨论】:
以上是关于使用 API 调用的 ZAP 身份验证的主要内容,如果未能解决你的问题,请参考以下文章
在不使用 OpenAPI 或 Swagger 规范的情况下,使用 OWASP ZAP 对 API 进行身份验证
未通过 ZAP API 扫描 docker 映像进行身份验证