如何在 OWASP ZAP 中进行自动扫描时传递用户 ID 和密码

How to pass userid and password while doing automated scan in OWASP ZAP

通过 OWASP ZAP 将用户 ID 和密码传递到登录页面

你好, 我正在通过构建带有登录和登陆页面的小型应用程序来进行 OWASP ZAP 测试,但不确定如何通过 ZAP 自动扫描将用户 ID 和密码传递到登录页面,以便它可以扫描登陆页面,请帮忙。

有一个常见问题解答 ;) https://github.com/zaproxy/zaproxy/wiki/FAQformauth

通过 UI:

  1. 在通过 ZAP 代理的同时探索您的应用程序
  2. 使用有效的用户名和密码登录
  3. 定义上下文,例如,在“站点”选项卡中右键单击应用程序的顶部节点,然后 selecting "Include in Context"
  4. 在“站点”或“历史记录”选项卡中找到 'Login request'
  5. 右击 select "Flag as Context" / "基于表单的授权登录请求"
  6. 检查用户名和密码参数是否设置正确 - 他们几乎肯定不会!
  7. 在响应中查找可用于确定用户是否登录的字符串
  8. 突出显示此字符串,右键单击并 select "Flag as Context" /“记录的 in/out 指标”相关 - 您只需设置其中之一,而不是两者
  9. 双击相关上下文节点并导航到 "Users" 页面 - 检查用户详细信息是否正确,添加您要使用的任何其他用户并全部启用它们
  10. 导航到上下文 "Forced User" 页面并确保您要测试的用户是 selected
  11. 现在应该启用 "Forced User Mode disabled - click to enable" 按钮
  12. 按下此按钮将导致 ZAP 在检测到用户不再登录时重新发送身份验证请求,即通过使用 'logged in' 或 'logged out' 指示符。

通过 API 过程是相同的,但使用 API 调用:

  1. context/includeInContext
  2. authentication/setAuthenticationMethod

的值

authMethodConfigParams 参数必须 URL 编码,在本例中 loginRequestData 是 username={%username%}&password={%password%}