反骨仔

一个业余的 .NET Core 攻城狮

0%

02 HTTPS 协议和 Fiddler 抓包

Fiddler 默认情况下只会捕获 HTTP ,需要设置后才能捕获 HTTPS。

2.1 HTTP 协议是不安全的

浏览器发送给服务器的内 容非常容易被中 间人拦截到。

image-20210102155440057

如果浏览器发送一些敏感的数据,比如账号、密码、信用卡账户、银行账户给服务器,是非常危险的。

2.2 Web 通信如何做到安全

什么是安全?

  1. 浏览器和 Web 服务器之间的内容应该只有浏览器和 Web 服务器能看到通信的真正内容
  2. HTTP 请求的内容和 HTTP 请求的响应不会被第三方篡改

我们马上就能想到各种加密算法,如非对称加密、对称加密、DES 、 RSA 等 。 对称加密是密钥同时扮演加密和解密 的角色 。只要这个密钥不公开给第
三者,同时密钥足够安全,我们就能确保安全问题。

image-20210102155733718

只有浏览器和 Web 服务器知道如何加密和解密它们之间的消息。

image-20210102155815582

Web 服务器与每个客户端使用不同的对称加密算法。

image-20210102155950837

2.3 什么是 HTTPS

HTTPS 就是加过密的 HTTP 。使用 HTTPS 后,浏览器客户端和 Web 服务器传输的数据是加密的,只有浏览器和服务器端知道内容。

HTTPS = HTTP+TLS 或者 SSL。采用 HTTPS 的网站需要去数字证书认证机构(Certificate Authority, CA)申请证书。

通过这个证书,浏览器在请求数据前与 Web 服务器有几次握手验证,以证明相互的身份,然后对 HTTP 请求和响应进行加密。

2.4 Fiddler 如何捕获 HTTPS 会话

默认情况下,Fiddler 不会捕获 HTTP 会话,需要进行设置:启动 Fiddler,在菜单栏中单击 Tool -> Fiddler Options -> HTTPS,选中“Decrypt HTPS traffic”,同时选中“ Ignore server certificate errors”来忽略一些证书错误。

image-20210102160405568

Fiddler 会弹出 警告信息,单击“ Yes ”,信任证书。

系统弹出警告框,单击“ Yes”安装证书。

image-20210102160500262

安装证书后,测试一下 Fiddler 能否捕捉 HTTPS 请求 。 打开 IE 浏览器,输入 https://www.baidu.com ,在 Fiddler 中查看是否捕捉到了 HTTPS 的 百度请求。

2.4.1 添加例外绕过 HTTPS 证件错误

虽然按照上面的操作,在 PC 上安装好了 Fiddler 的证书,但有时候,当使用 Fiddler,捕获 HTTPS 网站的时候,仍会出现连接错误 。

image-20210102160700808

单击“我己充分了解可能的风险 -> 添加例外->确认安全例外”,可以绕过证书错误。

image-20210102160740933

2.4.2 Firefox 中安装证书

包括 IE 、 Chrome 和 Safari 在内的大部分应用都使用 Windows 证书库来验证证书。Firefox 浏览器是自己维护证书列表,所以需要单独安装 Fiddler 证书 。

单独给 Firefox 安装证书:

  1. 单击 Fiddler Options 窗口的 HTTPS 选项卡 Actions 下面的 ”Export Root Certificate to Desktop“ 按钮,把证书导出到桌面。Fiddler 证书的文件名叫作 “FiddlerRoot.cer“

image-20210102160955872

  1. 打开 Firefox,在菜单栏中选择工具 -> 选项 -> 高级 -> 证书
  2. 单击“查看证书”,打开证书管理器
  3. 在证书管理器界面中选择“证书机构飞单击导入,选择“ FiddlerRoot.cer”
  4. 在弹出的对话框中选中 3 个多选框。

image-20210102161137499

安装证书后,Fiddler 就能捕获 Firefox 发出的 HTTPS 请求了 。

2.4.3 Fiddler 可以捕获 HTTPS 的握手验证请求

当浏览器访问 HTTPS 网页的时候,Fiddler 能捕获到很多握手验证的请求,比如用浏览器打开 https://www.baidu.com,在 Fiddler 中就能抓到很多“ Tunnel to”的请求。

image-20210102161328341

HTTP Tunnel ( 也叫 HTTP 隧道 、HTTP 穿梭)是这样一种技术 :它用 HTTP 协议在要通信的 Client 和 Server 建立起一条 “ Tunnel“,然后 Client 和 Server
之间的通信都是在这条 Tunnel 的基础之上实现的。

简单来说,当 Fiddler 当 作代理转发 HTTPS 请求的时候 ,就会产生“ CONNECT Tunnels ”。

这些握手验证请求对我们没什么用 处 , 可以选择在 Fiddler 中将其隐藏掉。

image-20210102161600375

2.4.4 查看 Windows 本地安装的证书

用以下两种方法可 以打开 Windows 证书管理器:

  1. 用键盘上的【Windows+R】快捷键调出【运行】窗口,在此窗口的输入框里输入【certmgr.msc】命令 。
  2. 在 Fiddler 的菜单栏中选择 Rules -> Fiddler Options -> HTTPS -> Actions -> Open Windows Certificate Manager,如图所示。在证书管理器中, 我们可以看到安装的 Fiddler 证书叫作“DO NOT TRUST FiddlerRoot ”

image-20210102161902694

参考

  • 《HTTP 抓包实战》