用于 HTTPS 应用程序的基于表单的身份验证 OWASP ZAP
Posted
技术标签:
【中文标题】用于 HTTPS 应用程序的基于表单的身份验证 OWASP ZAP【英文标题】:Form Based Authentication OWASP ZAP for HTTPS application 【发布时间】:2018-10-20 10:55:57 【问题描述】:我正在尝试使用 ZAP 的 python API 来使用 OWASP ZAP 的基于表单的身份验证功能。
我注意到,在使用 HTTP 应用程序(例如 - http://demo.testfire.net/)时,它能够在登录后抓取并提供额外的 URL。但是,当我对 HTTPS 应用程序尝试相同的操作时,它不会一次获取额外的 URL已登录。
我的问题是 - ZAP 是否仅支持 HTTP 相关 Web 应用程序的基于表单的身份验证?
【问题讨论】:
【参考方案1】:是的,我们有一个常见问题解答:https://github.com/zaproxy/zaproxy/wiki/FAQformauth
仅使用 API 时很难调试问题,所以我建议先使用 UI,一旦你完成了工作,然后将你所做的转换为 API。
通过用户界面:
-
列表项
通过 ZAP 代理时探索您的应用
使用有效的用户名和密码登录
定义上下文,例如,在“站点”选项卡中右键单击应用的顶部节点并选择“包含在上下文中”
在“站点”或“历史记录”选项卡中找到“登录请求”
右键单击它并选择“标记为上下文”/“基于表单的身份验证登录请求”
检查用户名和密码参数是否设置正确 - 他们几乎肯定不会!
在响应中查找可用于确定用户是否登录的字符串
突出显示此字符串,右键单击并选择相关的“标记为上下文”/“登录/退出指示器” - 您只需要设置其中一个,而不是两个都设置
双击相关上下文节点并导航到“用户”页面 - 检查用户详细信息是否正确,添加您要使用的任何其他用户并全部启用
导航到上下文“强制用户”页面并确保选择了您要测试的用户
现在应该启用“强制用户模式已禁用 - 单击以启用”按钮
按下此按钮将导致 ZAP 在检测到用户不再登录时重新发送身份验证请求,即使用“登录”或“注销”指示器。
通过 API 的过程是相同的,但使用 API 调用:
context/includeInContext
authentication/setAuthenticationMethod
authMethodName : formBasedAuthentication
authMethodConfigParams : loginUrl=http://example.com/login.html&loginRequestData=username%3D%7B%25username%25%7D%26password%3D%7B%25password%25%7D
authentication/setLoginIndicator or setLogoutIndicator
forcedUser/setForcedUserModeEnabled
authMethodConfigParams 参数的值必须是 URL 编码的,在这种情况下 loginRequestData 是 username=%username%&password=%password%
【讨论】:
我得到了使用 UI 方法的程序,想澄清一下,在更新“authMethodConfigParams”的值时,如果 POST 数据是“uid=xyz&passw=xyz&btnSubmit=Login”,我将其 URL 编码为“ uid%3Dadmin%26passw%3Dadmin%26btnSubmit%3DLogin" 并使用 API 调用 (zap.authentication.set_authentication_method(contextid, authmethodname, authmethodconfigparams)) 导致“missing_parameter”输出。我在这里使用的方法是对的还是我做错了?请建议。谢谢。 我不认为 *** 是调试此类问题的最佳论坛 - ZAP 用户组groups.google.com/group/zaproxy-users 更好:) 有一个很好的视频教程解释它:alldaydevops.com/zap-in-ten 谢谢 :) 更多视频即将推出 - 它们将在 ZAP 用户组上公布并链接到 zaproxy.org/videos以上是关于用于 HTTPS 应用程序的基于表单的身份验证 OWASP ZAP的主要内容,如果未能解决你的问题,请参考以下文章