基于表单的身份验证 OWASP ZAP for HTTPS 应用程序



我正在尝试使用ZAP的python API使用OWASP ZAP的基于表单的身份验证功能。

我注意到在使用HTTP应用程序(例如-http://demo.testfire.net/(时,一旦登录,它就可以抓取并提供额外的URL。但是,当我对HTTPS应用程序尝试相同的操作时,登录后它不会获取其他URL。

我的问题是 - ZAP 是否仅支持对 HTTP 相关 Web 应用程序的基于表单的身份验证?

是的,我们有一个常见问题解答:https://github.com/zaproxy/zaproxy/wiki/FAQformauth

仅使用 API时很难调试问题,因此我建议先使用 UI,一旦您完成工作,然后将您所做的转换为 API。

通过用户界面:

  1. 列表项
  2. 在通过 ZAP 代理时浏览应用
  3. 使用有效的用户名和密码登录
  4. 定义上下文,例如右键单击">
  5. 站点"选项卡中应用的顶部节点,然后选择"包含在上下文中">
  6. 在"网站"或"历史记录"标签中找到"登录请求">
  7. 右键单击它并选择"标记为上下文"/"基于表单的身份验证登录请求">
  8. 检查用户名和密码参数是否设置正确 - 几乎肯定不会!
  9. 在响应中查找可用于确定用户是否已登录的字符串
  10. 突出显示此字符串,右键单击并选择"标记为上下文"/"登录/注销指示器"作为相关 - 您只需要设置其中一个,而不是两个
  11. 双击相关的上下文节点并导航到"用户"页面 - 检查用户详细信息是否正确,添加要使用的任何其他用户并启用它们
  12. 导航到上下文"强制用户"页面,并确保选择要测试的用户
  13. 现在应启用"强制用户模式 - 单击以启用"按钮
  14. 按下此按钮将导致 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%}

最新更新