如何在OWASP ZAP中捕获HTTP请求?HTTP API扫描遇302跳转问题
结合你的场景,我整理了几个针对性的排查和解决步骤,帮你搞定ZAP抓不到HTTP请求的问题:
确认ZAP的代理监听配置
打开ZAP的Tools -> Options -> Local Proxies,检查HTTP代理的端口是否设置为8080(和你环境变量里的http_proxy保持一致),并且确保该代理条目处于启用状态。有时候会不小心只开启了HTTPS代理监听,漏掉了HTTP的。检查ZAP历史记录的过滤规则
切换到ZAP的History标签页,看看顶部的过滤器有没有被设置成只显示HTTPS请求。点击过滤器下拉菜单选择Show All,同时清空Filter输入框里可能存在的关键词(比如https),避免HTTP请求被过滤隐藏。禁用curl自动重定向,单独测试HTTP请求
curl默认会自动跟随302重定向,你看到的返回内容其实是重定向后的HTTPS响应,但curl实际先发送了一次HTTP请求。执行下面的命令强制curl不跟随重定向:curl --max-redirs 0 http://example.com执行后再去ZAP的History里查看,如果能捕获到这个HTTP请求,说明之前是curl自动跳转导致你没注意到ZAP里的初始请求,或者ZAP的跳转合并设置隐藏了它。
查看ZAP的代理请求日志
打开ZAP的Tools -> View Logs,切换到Proxy日志标签,看看有没有关于HTTP请求的记录。如果日志显示ZAP已经收到了HTTP请求,但GUI里没显示,那肯定是过滤规则的问题;如果日志里也没收到请求,就用curl -v http://example.com确认请求是否真的走了localhost:8080代理。调整ZAP的重定向跟随设置
在ZAP的Tools -> Options -> Proxy -> Responses里,看看是否勾选了“Automatically follow redirects”。如果勾选了,ZAP可能会把初始HTTP请求和重定向后的HTTPS请求合并显示,导致初始请求在History里不单独出现。可以暂时取消这个勾选,再测试一次。
我之前遇到过好几次类似的情况,大多是过滤规则或者代理监听配置的小疏忽,按照上面的步骤排查应该能快速解决。
内容的提问来源于stack exchange,提问作者Lawrence Ching

