如何将 OWASP Zap 设置为 MITM 代理来调试 HTTP Web 服务调用?

Posted

技术标签:

【中文标题】如何将 OWASP Zap 设置为 MITM 代理来调试 HTTP Web 服务调用?【英文标题】:How do I setup OWASP Zap as an MITM proxy to debug HTTP web service calls? 【发布时间】:2016-10-18 02:30:39 【问题描述】:

我想在 OS X 上捕获 HTTP 请求和响应。请求从 Ruby-on-Rails 服务器发送到 Elasticsearch 服务器,因此我无法使用 Chrome 或其他浏览器提供的内置日志记录。

在我的 elasticsearch.yaml 中,我已将 Elasticsearch 更改为使用端口 9400。使用网络浏览器,我验证它现在支持对该端口的请求,而不是 9200。

在 ZAP 中,我已将选项 > 本地代理 > 端口设置为 9200。

我希望我的 Rails 应用程序继续向端口 9200 发送消息,让它们被 ZAP 拦截并在端口 9400 上转发到 Elasticsearch,让 Elasticsearch 将响应发送回 ZAP,然后让 ZAP 将其转发到 Rails 应用程序。

我没有看到我期望发生的事情。尝试使用 Web 浏览器(代替 rails 应用程序)从端口 9200 请求返回“错误格式”。

我需要对 ZAP 进行哪些额外配置,以及如何让它启动?如何告诉它转发请求到端口 9400?

更新:我认为我要求的是“反向代理”。

更新:在 OWASP 的 google 组中,我了解到 ZAP 不用作反向代理。我最终选择了 mitmproxy,它易于安装和使用,功能较少,因此更易于理解。

【问题讨论】:

【参考方案1】:

在标题下,我不会(仅)了解如何使用代理(特定)重定向端口,而是如何将 ZAP 设置为 MITM 代理(一般)。因此,对道德黑客的一般补充:

ZAP 是一个代理。例如,只要在浏览器设置中将 ZAP 设置为代理,它就可以读取(如果未加密)网络服务器和浏览器之间的通信。我测试了 firefox 和 ZAP V 2.9.0。

要使用 OWASP ZAP 操作 HTTP 流量,我发现了以下可能性:首先,在工具菜单选项卡中,需要设置“Toogle Break on All Requests”和“Toogle Break on All Responses”(绿色流量工具栏中的指示灯将变为红色)。之后,每个请求和响应都会在它被发送到名为“Break”的工作区窗口的选项卡中之前。在这里,在使用“提交并进入下一个请求或响应”菜单项发送它们之前很容易操作它们。使用“提交并继续到下一个断点”可以关闭中断,直到下一个断点。也可以在这里操作端口。

但对于您的具体情况:如果通信将在浏览器(OWASP ZAP 设置为端口 9200 下的代理)和网络服务器之间进行,则浏览器中请求的端口需要是端口 9400。针对 firefox 测试浏览器是否会在后台处理它,首先使用端口 9200 将流量发送到 ZAP。但是从您的问题看来,您的 Ruby-on-Rails 服务器要求代理动态重定向端口。

【讨论】:

以上是关于如何将 OWASP Zap 设置为 MITM 代理来调试 HTTP Web 服务调用?的主要内容,如果未能解决你的问题,请参考以下文章

我们如何整合 Owasp ZAP 和 Cypress?

OWASP ZAP:持续集成中的主动扫描器

Owasp Zap 能否用于通过 HTTPS 连接代理所有 http 和 https 流量?

OWASP Zap 在代理中排除除给定 URL 之外的所有内容

OWASP ZAP下载安装使用(详解)教程

(转)OWASP ZAP下载安装使用(详解)教程