您的位置:首页 > 其它

Proxy & Bypass HSTS

2016-08-11 00:00 344 查看
摘要: 无法代理设置HSTS网站流量问题的解决之小记

HSTS工作机制:

服务端配置支持HSTS后,用户访问HTTPS网站,服务器会给返回给浏览器的header头中添加一个Strict-Transport-Security字段(非加密传输时此字段无效),支持HSTS的浏览器接收到此字段,会将所有的HTTP访问请求在内部做307跳转到HTTPS,而不会产生任何网络请求(区别没有设置HSTS的网站是做302跳转将http请求转为https),然后将此网站加入到浏览器的HSTS 列表中。

遇到的问题:

上面这种情况就遇到了一种尴尬的问题,当做proxy代理时,因为要抓去https传输的数据,就需要自己伪造证书进行服务器与本地交互数据的解封包,服务器设置了HSTS,此时就无法通过浏览器的验证了



而没有设置HSTS的网站没有任何问题,添加到例外中即可

解决问题:

方法一:火狐访问"about:config" --> 右键创建->整数->整数值:test.currentTimeOffsetSeconds ->内容:11491200 然后清除浏览器缓存 再使用代理的时候就没问题了

方法二:因为HSTS的设置都有一定的时效性,可以通过修改本地时间大于一年解决(修改时间后不代理情况下有个bug,当证书过期时间小于本地修改后的时间的时候会造成很多https的资源无法加载,甚至提示证书错误无法访问)

方法三:DNS方式,如MITMf (https://github.com/byt3bl33d3r/MITMf)

最后:

方法各有优缺,针对特殊场景灵活利用,最简单的莫非改本地时间。

参考:
https://blog.wilddog.com/?p=997 等.
https://raymii.org/s/tutorials/HTTP_Strict_Transport_Security_for_Apache_NGINX_and_Lighttpd.html HTTP Strict Transport Security for Apache, NGINX and Lighttpd

2017/1/16更新:https://finnwea.com/blog/bypassing-http-strict-transport-security-hsts 含两种方法,一:NTP 二:DNS欺骗劫持
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息