上一篇介绍了htps通过数字证书来防止中间人攻击,服务器向第三方认证颁发机构申请数字证书(第三方机构使用私钥对证书信息加密)

之后服务器将数字证书发送到客户端,客户端使用本地维护的第三方机构公钥对数字证书进行解密,如果能够解密,说明证书没有被掉包

但是其中可能会忽略掉一个问题,就是中间人也可以像第三方认证机构申请数字证书,而且它申请的证书在客户端也能被正确的解密,

从而实现中间人攻击,所以对于证书的导入一定要慎重,下面使用fiddler充当中间人实现这个过程

首先下载fiddler(如果之前安装过fiddler,需要先清除系统中fiddler相关的证书,通过运行certmgr.msc删除fiddler相关证书)

然后下载fiddlercertmaker证书生成器(可以从官网下载,下载后安装)

然后打开fiddler > 打开工具栏tools里面的options,如下图

勾选decrypt https traffic ,会提示确实是否信任fiddler所生成的证书,一路点击是

然后点击actions中的 export root certificate to desktop将证书导出到桌面

打开浏览器证书管理,导入刚才所导出的证书,如下:

最后重启fiddler就可以捕获https请求,并且可以看到解密后的明文

 

大概原理如下,在这个过程中fiddler充当中间人的角色,对于浏览器来说相当于服务器,对于真实服务器来说相当于客户端

首先浏览器向真实服务器发送建立连接的请求时被fiddler拦截,fiddler充当服务器向浏览器发送一个证书,同时向真实服务器发送建立请求连接

由于之前已经将fiddler的根证书添加到客户端了,所以客户端在验证fiddler发送过来的证书时使用fiddler根证书验证,验证通过,建立连接协商密钥

进行数据传输,同时fiddler也会和真实服务器建立连接,协商密钥进行数据传输,这样的话fiddler就能获取到https传输的数据,同时也可以进行请求数据的更改

达成攻击

流程图如下

posted on 2018-09-19 10:20  原来活在梦里  阅读(568)  评论(0)    收藏  举报