mitmproxy高交互自定义代理

admin 2024年5月11日10:56:36评论65 views字数 2019阅读6分43秒阅读模式
  • 背景

  • 介绍

  • 安装

  • 基础使用

  • 编写扩展

背景

在我看来抓包功能和 Burp 一样,但有时候需要对请求和响应高度自定义修改,比如参数中的limit要调整为 50,但offset需要动态调整为0 50 100 150 200 ...,且还需要根据时间戳计算签名,这个时候用 burp 实现可能就比较麻烦了,所以需要有一种新的高度自定义扩展的方案。

介绍

mitmproxy is an interactive, SSL/TLS-capable intercepting proxy with a console interface for HTTP/1, HTTP/2, and WebSockets.

mitmdump is the command-line version of mitmproxy. Think tcpdump for HTTP.

mitmweb is a web-based interface for mitmproxy.

  • Github[1]
  • 官网[2]

安装

pip3 install mitmproxy

安装后会有介绍中的 3 个工具,mitmproxymitmdumpmitmweb,三个命令实际功能都差不多,只是展示的形式不太一样。

我平时感觉就 mitmproxy(纯命令行)或者 mitmweb(提供 1 个 WEB UI)就够了。

基础使用

监听 1234 端口

mitmweb  --listen-port 1234 --web-port 1235
mitmproxy --listen-port 1234

启动后和 burp 一样需要安装对应的 CA 证书,挂上http://127.0.0.1:1234代理访问 http://mitm.it/ 即可。

mitmproxy高交互自定义代理
image-20240428上午94535961

配置好后就可以正常看到流量包了。

mitmproxy高交互自定义代理
image-20240428上午95040533

编写扩展

上面能看到数据包就说明配置好了,现在就是编写自定义的扩展了,来实现修改我们的请求和响应。(这里只举例常用的修改 http 请求和响应,当然他还支持很多其他的,可参考 addons-overview[3]

编写 py 脚本如下:

import mitmproxy.http
from mitmproxy import ctx
from mitmproxy import flowfilter


class Interceptor:
    def __init__(self):
        # 添加网址过滤器
        self.filter = flowfilter.parse("~u https://www.baidu.com")

    # 修改请求
    def request(self, flow: mitmproxy.http.HTTPFlow):
        if flowfilter.match(self.filter, flow):
            ctx.log.info(f"get keyword {flow.request.query['wd']}")
            # 替换搜索词
            flow.request.query["wd"] = "123"

    # 修改响应
    def response(self, flow: mitmproxy.http.HTTPFlow):
        if flowfilter.match(self.filter, flow):
            ctx.log.info(f"get response lens {len(flow.response.content)}")
            # 添加/修改headers
            flow.response.headers["mitm"] = "test"
            flow.response.content = "66666".encode(encoding="utf-8")

addons = [
    Interceptor()
]

编写好后使用mitmproxy 加载即可。(注:mitmproxy支持热更新,修改脚本保存后会自动重新加载

mitmweb  --listen-port 1234 --web-port 1235 -s mitmproxytest.py

可见请求后 wd 参数被自动替换,响应也被替换。

mitmproxy高交互自定义代理
image-20240428上午101823362
mitmproxy高交互自定义代理
image-20240428上午101757219

参考资料

[1]

Github: https://github.com/mitmproxy/mitmproxy

[2]

官网: https://mitmproxy.org/

[3]

addons-overview: https://docs.mitmproxy.org/stable/addons-overview/

- END -

原文始发于微信公众号(初始安全):mitmproxy高交互自定义代理

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年5月11日10:56:36
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   mitmproxy高交互自定义代理https://cn-sec.com/archives/2729303.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息