绕过浏览器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:画船听雨眠
领取专属 10元无门槛券
私享最新 技术干货