工具使用篇(一)-Mitmproxy中间人代理
一、前言
在学习 Mitmproxy 前首先我们得先了解一下 Mitmproxy 的功能作用是什么,然后我们利用它能在实际的测试中能帮助我们解决什么问题。
Mitmproxy 简介
Mitmproxy 是一款开源的抓包工具,支持SSL的 HTTP 代理,它可以用于调试 HTTP 通信,发起中间人攻击等,不同于 Fiddler 等抓包工具,Mitmproxy 不仅可以截获请求、帮助开发者查看、分析数据包,使用者还可以通过自定义的 Python 脚本进行二次开发,以达到自己的使用需求。
Mitmproxy 解决的问题
有时候使用 Burp 进行代理,由于安全设备或者不明原因导致无法抓取到数据包,这时候可以尝试使用 Mitmproxy 进行中间人代理,先把流量代理到 Mitmproxy 再由 Mitmproxy 转发到 Burp 上。在工作上有一次在测试一个站点时无法通过 Burp 进行流量抓取,后来通过公司的一位 “文艺青年” 同事获悉是因为该站点使用了国密算法,SM2的某个密钥算法不兼容 JAVA SDK
,并给出了解决方案,Mitmproxy 中间人代理,解决了使用了国密算法无法通过 Burp 抓包的问题。。
二、安装
Mitmproxy 官方提供了两种安装方式:
1 | 官方直接下载安装包直接 install 安装,网址 https://mitmproxy.org/ |
首先安装好 Python 版本需要不低于 3.6,且安装了附带的包管理工具 pip,这里不再赘述,自行安装。本人环境使用的是 Python 3.9.11。
1 | pip3 install mitmproxy |
查看版本是否成功安装
1 | mitmdump --version |
三、Mitmproxy 使用
Mitmproxy 有三种启动命令 mitmproxy
、mitmdump
、mitmweb
,任意一种命令均可启动软件,区别是交互界面的不同。
1 | | 命令 | 功能 | |
开始使用前首先安装 mitmproxy 证书,cmd 直接输入 mitmproxy
启动软件,默认会监听 http://localhost:8080 ,然后访问 http://mitm.it/ 安装证书。出现下图则代理设置没有成功。
设置系统代理,点击保存
再次访问 http://mitm.it/ 选择对应的证书进行安装即可。
安装证书
密码无需填写
1、mitmproxy
cmd 命令行输入 mitmproxy
开启抓包
点击数据包可查看具体响应,点击 q
返回主页
也可以指定端口进行监听:mitmproxy --listen-port 9000
(mitmproxy -p 9000 亦可)
2、mitmdump
录制回放请求,此命令无法查看具体的请求数据,只是默默运行在后台,所以一般不使用此命令。
通过命令:mitmdump -w dump.txt
可将 8080 端口的请求录制在 dump.txt
文件中
然后通过命令: mitmdump -nC dump.txt
进行回放请求
3、mitmweb
此命令能为用户提供 web 端界面,相对比较友好。
指定 8080
为监听端口,Web server listening at http://127.0.0.1:8081/
,开启命令后会自动打开 web 端
界面相对友好,清晰可见
四、扩展
1、自定义开发脚本
自定义脚本可以实现拦截请求,从而对请求头、请求、响应、响应头进行修改的效果。当人操作时,就能在拦截请求进行处理的时候进行数据处理
编写一个 Python 文件通过 mitmproxy 加载,文件定义了变量 addons,addons 是个数组,每个元素是一个类实例,这些类有若干方法,这些方法实现了某些 mitmproxy 提供的事件,mitmproxy 会在某个事件发生时调用对应的方法。这些类,称为一个个 addon
,比如一个叫 Counter 的 addon(插件),更多脚本请查看官方内置 addon
1 | import mitmproxy.http |
将脚本保存为 addons.py ,重新启动 mitmproxy: mitmweb -s addons.py
2、其他命令
1 | mitmdump -w outfile #截获的数据保存到文件中 |
五、参考
1 | https://www.cnblogs.com/zhangmingyan/p/11358886.html |