HSTS的作用是强制客户端(如浏览器)使用HTTPS与服务器创建连接。
1、作用
HSTS可以很大程度上解决SSL剥离攻击,因为只要浏览器曾经与服务器创建过一次安全连接,之后浏览器会强制使用HTTPS,即使链接被换成了HTTP。
另外,如果中间人使用自己的自签名证书来进行攻击,浏览器会给出警告,但是许多用户会忽略警告。HSTS解决了这一问题,一旦服务器发送了HSTS字段,用户将不再允许忽略警告。
2、不足
用户首次访问某网站是不受HSTS保护的。这是因为首次访问时,浏览器还未收到HSTS,所以仍有可能通过明文HTTP来访问。解决这个不足目前有两种方案,一是浏览器预置HSTS域名列表, 、、 和实现了这一方案。二是将HSTS信息加入到域名系统记录中。但这需要保证DNS的安全性,也就是需要部署域名系统安全扩展。截至2014年这一方案没有大规模部署。
由于HSTS会在一定时间后失效(有效期由max-age指定),所以浏览器是否强制HSTS策略取决于当前系统时间。部分操作系统经常通过网络时间协议更新系统时间,如每次连接网络时配置burpsuit谷歌浏览器证书及HSTS问题处理,OS X Lion每隔9分钟会自动连接时间服务器。攻击者可以通过伪造NTP信息,设置错误时间来绕过HSTS。解决方法是认证NTP信息,或者禁止NTP大幅度增减时间。比如 8每7天更新一次时间,并且要求每次NTP设置的时间与当前时间不得超过15小时。
3、浏览器支持
和从4.0.211.0版本开始支持HSTS
及以上版本
及以上版本
从OS X 起
从 10技术预览版开始支持,之后微软又向IE11用户推送了支持HSTS的更新。
三、绕过思路解析:
解决这个问题的思路就是来自HSTS的不足,在上文中我已经用红色的字体凸显出来。由于HSTS 是服务器强制客户端使用HTTS,且要求浏览器与其直接相连。
在客户端的事情肯定比在服务器上的事情好解决。
又因为HSTS的规则是用户首次访问某网站的时候是不受HSTS保护的,因为只要浏览器曾经与服务器创建过一次安全连接,之后浏览器会强制使用用户对该网站使用HTTPS配置burpsuit谷歌浏览器证书及HSTS问题处理,所以想到这儿这事儿就好办了。
我们若之前用该浏览器访问过该网站,我们可以清除浏览器的HSTS记录,然后再一次访问网站的时候通过Burp代理访问,之后抓该域名下的数据包即可绕过限制。
四、解决方法:
以为例
地址栏输入:://net-/#hsts
之后可以在Query HSTS选项中 查看 该域名是否被删除
然后熟悉的界面就出现了
成功绕过了HSTS限制,抓到了百度的HSTS包
测试
【
网络上对于清除HSTS的设置 是用如下方法
关闭所有已打开的页面
清空历史记录和缓存
地址栏输入about:
搜索项目域名,并点击 About This Site
】
但是我测试后,发现无效,也许是我的版本问题。
我的版本是
对于绕过的限制我使用的方法是删除 的tate.txt文件
这个文件的路径是
%%\\\\.\tate.txt
开始寻找
打开%%\\\\
然后打开.
找到
tate.txt
点击删除(删除之前关闭,浏览器重启会重新生成该文件)
然后重启浏览器(注意,不要让默认首页为你要 删除的HSTS站点,否则 以上的一切操作就废了)
然后设置代理,抓包!ok!
以下是其他种类的浏览器 清除HSTS 的方法(来自互联网)
我只测试过和 ,其他浏览器请自行测试
浏览器
完全关闭
删除~///HSTS.plist这个文件
重新打开 即可
极少数情况下,需要重启系统
浏览器
地址栏中输入://net-/#hsts
在 中输入项目的域名,并删除
可以在Query 测试是否删除成功
Opera 浏览器
和 方法一样
有什么写的不对的地方,请各位大佬留言指正,若还有什么奇思妙想,也请大佬与我留言交流,不胜受恩感激。初来乍到写文章,写的不好的地方请海涵。
By:画船听雨眠
评论留言