使用这个工具配合BP修改请求响应包太香了!

0x00

不知道各位师傅们在使用BurpSuite时有没有这样的困扰,原生自带的修改请求响应包的功能太难用了,或者根本不支持,比如:

  • 我希望在匹配某些请求PATH的时候,才修改对应的响应包

  • 对于一些加密请求,我希望在请求前自动加密,响应后自动解密

  • 有一些网站会带一个时间戳,我希望每次请求都自动更新它,不要让我手动去改

  • ......

等等,还有一个最难受的地方,这个功能的UI实在是太烂了,太难用了!!

图片

这个ui你能忍?藏得又深,又不好编辑

0x01 mimtproxy

mimtproxy这个工具可能很多人都听过,但是我还是要再墙裂推荐一下,简直太好用了!先看两个例子。

根据请求路径修改响应包

这是一个获取用户信息的接口,正常是返回异常:

图片

但是我们需要绕过前端的判断,所以需要使用mimtproxy修改响应包,在匹配路径为/user的请求时,才将它替换

图片

效果如下,匹配到/user的请求响应被替换了:

图片

请求自动签名

这算是一个比较常见的需求了。比如网站,都会有一个签名请求头,是根据请求参数计算出来的,如果签名不对,那么请求就会异常,我们就可以使用mimtproxy来实现自动签名

原请求是id=1,我们将id修改为2之后,服务端报错:非法的签名,因为请求头Sign还是id=1的:

图片

使用mimtproxy的脚本实现自动签名:

图片

效果如下,可以看到我们在BurpSuite的签名没变,但是请求成功了,因为mimtproxy那里自动对参数进行了签名并且修改了Sign请求头

图片

配置与使用

安装

下载和安装不多说,直接去官网下载即可:https://www.mitmproxy.org

但是如果需要使用python脚本,则需要再使用pip安装mimtproxy的库,如下:

pipx install mitmproxy

官网的安装教程很详细,可以直接参考:https://docs.mitmproxy.org/stable/overview-installation/

上下游代理区别

安装成功之后,我们可以将mimtproxy作为BurpSuite的上游代理或者下游代理来使用。它们的区别在于,请求是先经过mimtproxy,还是先经过BurpSuite

图片

BurpSuite代理监听的端口是8080,mimtproxy监听的端口是9091

我一般喜欢将mimtproxy配置为BurpSuite的上游代理,也就是数据先经过BurpSuite,再经过mimtproxy,因为这样才可以方便我们在repeat模块中去修改请求包。

但是这也有一个坏处,就是我们如果在mimtproxy中配置了修改响应包,那么我们在BP中就看不到原始响应包了,因为已经被修改了。

配置

然后在BP中搜索upstream,然后增加一个9091的上游代理配置即可(假设我们mimtproxy监听的端口是9091),如下:

图片

如果我们之前浏览器的代理配置是走BurpSuite,那么浏览器的代理配置不变,还是配置为8080(假设我们的BurpSuite代理监听的8080),因为我们的请求还是先经过BP。

使用

我们先启动mimtproxy,命令如下:

mitmdump -p 9091 -s mimt_response_test.py --ssl-insecure

9091是代理端口,-s是指定python脚本,--ssl-insecure是忽略证书校验

启动成功之后,那么mimtporxy则会开始监听9091端口了,并且也加载了我们的脚本文件mimt_response_test.py

图片

此时我们就配置完成了,我们从浏览器发起的请求,会先经过BurpSuite,再经过mimtproxy,最后到达目标服务器

脚本

最后我们可以写脚本了,其实很简单,脚本里面只需要实现2个方法就可以修改对应的请求响应数据了,分别是requestresponse

def request(flow: http.HTTPFlow):
  """
    这个方法修改请求数据
  """
  pass
  
def response(flow: http.HTTPFlow):
  """
    这个方法修改响应数据
  """
  pass

比如我们实现一个简单的根据请求路径来修改响应数据的功能:

图片

实现起来十分简单,我们从mimt_config.json里面读取文件,根据文件里面配置来修改响应数据,mimt_config.json文件如下:

图片

如果请求路径里面包含/user,则根据配置文件将响应数据修改为/user对应的value。

为什么不直接写在脚本里面?还要再写一个配置文件这么麻烦?
主要是为了复用,因为这样如果我们后面还需要增加根据什么路径来替换响应体的话,只需要在配置文件里面增加对应的内容就可以了。

0x02

有了mimtproxy之后,我们可以很容易的去实现一些半自动化的功能了,比如上面提到的自动签名、加密解等操作。而且实现也非常简单,希望能给师傅们带来一点新的思路吧~

如果需要文章中的根据路径自动替换响应包的代码,也可以后台回复mimt获取相关的代码。自己实现也可以,就那么几行代码,超简单~


欢迎关注我的公众号“混入安全圈的程序猿”,更多原创文章第一时间推送!

  • 10
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值