作为开发者,测试方都需要经常对HTTP请求做分析,现在burpsuit,fiddler也为主流.可是一些场合并不需要如此全面的工具去支撑,快捷便于拓展可能又成为人们的另一个追求点.

0x01 介绍


An interactive console program that allows traffic flows to be intercepted, inspected, modified and replayed.

简单说该工具正如其名MITM(man-in-the-middle)再加个proxy –中间人代理软件,可以用来拦截,修改,保存HTTP/HTTPS请求。当然主要以命令行形式呈现,虽然现在已经有mitmweb辅助出现,不过官网称其暂时为beta阶段,一部分功能暂未完善。

官网地址:https://mitmproxy.org

0x02 安装


大部分了解一些mitmproxy的伙伴都知道目前这是一个基于python3的程序,目前大部分程序都在向python3转移,可是暂时多数操作系统都是以python2做支撑,作为一个懒人当然是专门有找到了mitmproxy的py2版本号。不过还是建议大家还是去熟悉下py3(不要向我一样懒)

这里的操作系统为macOS

不说废话首先我们先掏出 pip

这是python2的小伙伴使用的命令(mitmproxy==0.18.2)

py3可直接install mitmproxy

之后终端输入mitmproxy则可正常使用 image

0x03 简单配置


安装之后的操作

1.启动mitmproxy

默认

或指定代理端口

 

注:默认(即不指定端口)即为指定默认端口8080

(不绕口吧2333

2.设置浏览器代理

浏览器偏好设置-高级-代理

http和https都选中 内容如图 image应用之后,随手就是打开一个网页,回终端看,大概就是这样。 image

当然没完,先别着急关

3.安装证书

为了保证https能成功抓取,我们需要先安装证书

打开网页 http://mitm.it image你是哪个选哪个..下载,打开

找见你的钥匙串访问-mitmproxy-信任–始终信任 (手机端类似) image

ok

0x04 基本操作


mitmproxy可以说是一个控制台,允许交互式检查和修改 HTTP 流量。

? 快捷键用于查看帮助信息

q 用于返回/退出

c 清空列表

image

接下来我们开始捕获流量,并介绍相关界面

Flow list

流量请求按顺序依次显示 可直接通过上下键来选中目标 >>

  • 1:GET请求,返回302重定向响应
  • 2:GET请求,返回大小为16.75kb的text/html 数据
  • 3:一个重放的请求
  • 4:橙色的文字表示拦截的流量,使用者可以编辑并接收它,(使用 a )继续
  • 5:从服务器到客户端中截获的响应
  • 6:事件日志可以通过 e 来切换和关闭
  • 7:流量统计
  • 8:mitmproxy的状态的各种信息,这里我们设置了拦截内容为符合.*的模式
  • 9:显示正在监听的端口号

Flow view

鼠标单击或enter键打开目标view 可以通过此来检查,操作单个请求

  • 1:此数据包基本信息摘要
  • 2:通过选择Request/Response两个标签来转换查看部分,可通过鼠标单击或使用 tab 快捷键
  • 3:Headers
  • 4:Body
  • 5:View Mode indicator 当前为hex浏览模式,可使用快捷键 m 来根据提示切换模式

Grid Editor

数据请求的编辑器,用表格对应列表的形式便于编辑操作 imagee 进行数据编辑根据下方提示选择编辑内容并enter保存或esc看提示 q返回上一级

r 回放编辑好的请求

/ 搜索请求中需要的内容

拦截请求案例

i 设置拦截请求模式

~q 设置筛选模式为拦截所有的请求

更多筛选模式可通过在其页面下快捷键?调出帮助查看 image常用:

 

橙色表示被拦截的请求

e 修改,方式同上一条内容

a 接受修改或未修改并将请求发出

退出拦截模式时转到请求列表,快捷键i并删去筛选模式内容即可


更多关于mitmproxy的具体用法请浏览 http://docs.mitmproxy.org 官方文档查看