绕过浏览器HSTS限制抓HTTPS数据包

绕过浏览器HSTS限制 抓HTTPS数据包

一、发现问题

HSTS的推出已经很长时间了,但是之前没有实际接触,就没太在意,但是最近在测试抓百度数据包的时候,发现百度 使用了HSTS 机制,强制浏览器 使用HTTPS与其直接链接。即使Brup在浏览器中导入 cacert.der 证书也不可以抓到https数据包,不可以忽略警告,只能立即离开。显示效果如下:

二、HSTS 简介(来自百度百科):

HSTS(HTTP Strict Transport Security)国际互联网工程组织IETF正在推行一种新的Web安全协议

HSTS的作用是强制客户端(如浏览器)使用HTTPS与服务器创建连接。

1、作用

HSTS可以很大程度上解决SSL剥离攻击,因为只要浏览器曾经与服务器创建过一次安全连接,之后浏览器会强制使用HTTPS,即使链接被换成了HTTP。

另外,如果中间人使用自己的自签名证书来进行攻击,浏览器会给出警告,但是许多用户会忽略警告。HSTS解决了这一问题,一旦服务器发送了HSTS字段,用户将不再允许忽略警告。

2、不足

用户首次访问某网站是不受HSTS保护的。这是因为首次访问时,浏览器还未收到HSTS,所以仍有可能通过明文HTTP来访问。解决这个不足目前有两种方案,一是浏览器预置HSTS域名列表,Google Chrome、Firefox、Internet Explorer和Spartan实现了这一方案。二是将HSTS信息加入到域名系统记录中。但这需要保证DNS的安全性,也就是需要部署域名系统安全扩展。截至2014年这一方案没有大规模部署。

由于HSTS会在一定时间后失效(有效期由max-age指定),所以浏览器是否强制HSTS策略取决于当前系统时间。部分操作系统经常通过网络时间协议更新系统时间,如Ubuntu每次连接网络时,OS X Lion每隔9分钟会自动连接时间服务器。攻击者可以通过伪造NTP信息,设置错误时间来绕过HSTS。解决方法是认证NTP信息,或者禁止NTP大幅度增减时间。比如Windows 8每7天更新一次时间,并且要求每次NTP设置的时间与当前时间不得超过15小时。

3、浏览器支持

Chromium和GoogleChrome从4.0.211.0版本开始支持HSTS

Firefox4及以上版本

Opera12及以上版本

Safari从OS X Mavericks起

Internet Explorer从Windows 10技术预览版开始支持,之后微软又向IE11用户推送了支持HSTS的更新。

三、绕过思路解析:

解决这个问题的思路就是来自HSTS的不足,在上文中我已经用红色的字体凸显出来。由于HSTS 是服务器强制客户端使用HTTS,且要求浏览器与其直接相连。

在客户端的事情肯定比在服务器上的事情好解决。

又因为HSTS的规则是用户首次访问某网站的时候是不受HSTS保护的,因为只要浏览器曾经与服务器创建过一次安全连接,之后浏览器会强制使用用户对该网站使用HTTPS,所以想到这儿这事儿就好办了。

我们若之前用该浏览器访问过该网站,我们可以清除浏览器的HSTS记录,然后再一次访问网站的时候通过Burp代理访问,之后抓该域名下的数据包即可绕过限制。

四、解决方法:

以Chrome为例

地址栏输入:chrome://net-internals/#hsts

之后可以在Query HSTS选项中 查看 该域名是否被删除

然后熟悉的界面就出现了

成功绕过了HSTS限制,抓到了百度的HSTS包

FireFox测试

网络上对于FireFox清除HSTS的设置 是用如下方法

关闭所有已打开的页面

清空历史记录和缓存

地址栏输入about:permissions

搜索项目域名,并点击Forget About This Site

但是我测试后,发现无效,也许是我的版本问题。

我的FireFox版本是

对于绕过FireFox的限制我使用的方法是删除 FireFox的SiteSecurityServiceState.txt文件

这个文件的路径是

%APPDATA%\Mozilla\Firefox\Profiles\xxxxxxxx.default\SiteSecurityServiceState.txt

开始寻找

打开%APPDATA%\Mozilla\Firefox\Profiles\

然后打开xxxxxxxx.default

找到

SiteSecurityServiceState.txt

点击删除(删除之前关闭FireFox,浏览器重启会重新生成该文件)

然后重启浏览器(注意,不要让默认首页为你要 删除的HSTS站点,否则 以上的一切操作就废了)

然后设置代理,抓包!ok!

以下是其他种类的浏览器 清除HSTS 的方法(来自互联网)

我只测试过Chrome和Firefox ,其他浏览器请自行测试

Safari 浏览器

完全关闭 Safari

删除~/Library/Cookies/HSTS.plist这个文件

重新打开 Safari 即可

极少数情况下,需要重启系统

Chrome 浏览器

地址栏中输入chrome://net-internals/#hsts

在Delete domain中输入项目的域名,并Delete删除

可以在Query domain测试是否删除成功

Opera 浏览器

和 Chrome 方法一样

有什么写的不对的地方,请各位大佬留言指正,若还有什么奇思妙想,也请大佬与我留言交流,不胜受恩感激。初来乍到写文章,写的不好的地方请海涵。

By:画船听雨眠

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180422G1BB7200?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注腾讯云开发者

领取腾讯云代金券