Replace/remap 服务器响应 body,同时保留大多数原始 header 字段提供给浏览器
Replace/remap server response body while preserving most of original header fields served to browser
如何替换远程服务器返回给浏览器的特定文件 body,但主要保留原始响应 header unchanged/intact/unaffected/unaltered/untouched? (我不知道在这种情况下哪个英语单词最好,所以请:解决我的问题!)
这可能可以使用渗透测试代理(Burp、OWASP ZAP、Charles、Fiddler、Paros 等)来完成,但我找不到合适的选项来将响应 body 映射到本地文件 body 而不会丢失重要信息header 个字段(Set-Cookie
、Content-Type
等)。使用正则表达式模式仅重写 body 的一部分没有问题。重新映射整个文件(基于 URL)也没有问题,但是,它会生成一个新的 header 而不是复制服务器返回的原始文件。我知道我的本地文件可能与服务器上的文件大小不同,因此 Content-Length
字段应由代理更改。 header 中可能还有其他字段应由渗透测试工具修改,但 Set-Cookie
、Content-Type
和其他一些选定字段以及所有自定义字段(如前缀为X-
) 应该保留。
我应该为这些工具编写扩展程序或某种脚本吗?如果是这样,那么我可以搜索所选工具的 API 参考,但是我应该选择哪种渗透测试工具来用我最喜欢的语言 Python 编写?任何指向为此目的所需的特定 API 的帮助将不胜感激。这个脚本应该:
- 通过在特定 URL
上设置断点来拦截 HTTP 响应
- 阅读并记住服务器返回的header
- 加载与请求关联的本地文件URL
- 检查文件大小并修改
Content-Length
header 字段
- 发送修改header
- 发送加载的文件
上面的列表表明需要 API 的哪些元素来指出我。理想情况下,如果在任何工具中都有用于描述任务的嵌入式选项,但如果不存在此类选项,那么 API 我应该学习在 Python 和 API 中编写哪个工具的代码我应该特别注意的部分?由于可移植性,所选工具不应依赖于 .NET(因此在这种情况下使用 Fiddler 将是一个问题)。 Java-dependent 工具还可以,因为使用可移植的 Java 运行时环境没有问题。
是的,您可以使用 OWASP ZAP 做到这一点。
ZAP 支持许多脚本语言,包括 python(实际上是 jython;)。
您可以使用代理脚本更改与请求和响应有关的任何内容。您可以完全访问有关请求和响应的所有信息、所有 ZAP 功能和您的本地文件存储。
我们这里有一些例子:https://github.com/zaproxy/community-scripts/tree/master/proxy
None 个示例实际上使用 python,但 https://github.com/zaproxy/community-scripts/tree/master/payloadgenerator 中有一个示例 python 脚本
您将需要安装 python 脚本附加组件,其中包括必要的模板:https://github.com/zaproxy/zap-extensions/wiki/HelpAddonsJythonJython
如果您有关于 ZAP 脚本的具体问题,我们专门为此设立了一个小组:http://groups.google.com/group/zaproxy-scripts
如何替换远程服务器返回给浏览器的特定文件 body,但主要保留原始响应 header unchanged/intact/unaffected/unaltered/untouched? (我不知道在这种情况下哪个英语单词最好,所以请:解决我的问题!)
这可能可以使用渗透测试代理(Burp、OWASP ZAP、Charles、Fiddler、Paros 等)来完成,但我找不到合适的选项来将响应 body 映射到本地文件 body 而不会丢失重要信息header 个字段(Set-Cookie
、Content-Type
等)。使用正则表达式模式仅重写 body 的一部分没有问题。重新映射整个文件(基于 URL)也没有问题,但是,它会生成一个新的 header 而不是复制服务器返回的原始文件。我知道我的本地文件可能与服务器上的文件大小不同,因此 Content-Length
字段应由代理更改。 header 中可能还有其他字段应由渗透测试工具修改,但 Set-Cookie
、Content-Type
和其他一些选定字段以及所有自定义字段(如前缀为X-
) 应该保留。
我应该为这些工具编写扩展程序或某种脚本吗?如果是这样,那么我可以搜索所选工具的 API 参考,但是我应该选择哪种渗透测试工具来用我最喜欢的语言 Python 编写?任何指向为此目的所需的特定 API 的帮助将不胜感激。这个脚本应该:
- 通过在特定 URL 上设置断点来拦截 HTTP 响应
- 阅读并记住服务器返回的header
- 加载与请求关联的本地文件URL
- 检查文件大小并修改
Content-Length
header 字段 - 发送修改header
- 发送加载的文件
上面的列表表明需要 API 的哪些元素来指出我。理想情况下,如果在任何工具中都有用于描述任务的嵌入式选项,但如果不存在此类选项,那么 API 我应该学习在 Python 和 API 中编写哪个工具的代码我应该特别注意的部分?由于可移植性,所选工具不应依赖于 .NET(因此在这种情况下使用 Fiddler 将是一个问题)。 Java-dependent 工具还可以,因为使用可移植的 Java 运行时环境没有问题。
是的,您可以使用 OWASP ZAP 做到这一点。
ZAP 支持许多脚本语言,包括 python(实际上是 jython;)。 您可以使用代理脚本更改与请求和响应有关的任何内容。您可以完全访问有关请求和响应的所有信息、所有 ZAP 功能和您的本地文件存储。
我们这里有一些例子:https://github.com/zaproxy/community-scripts/tree/master/proxy None 个示例实际上使用 python,但 https://github.com/zaproxy/community-scripts/tree/master/payloadgenerator 中有一个示例 python 脚本 您将需要安装 python 脚本附加组件,其中包括必要的模板:https://github.com/zaproxy/zap-extensions/wiki/HelpAddonsJythonJython
如果您有关于 ZAP 脚本的具体问题,我们专门为此设立了一个小组:http://groups.google.com/group/zaproxy-scripts