0x00 开始
最近看到一篇文章叫做《Pretty-Bad-Proxy:An Overlooked Adversary in Browsers’ HTTPS Deployments》,虽然是好几年前的文章,有些漏洞也早已修复,不过现在看来,很多想法思路都非常棒,毕竟是国际顶级信息安全会议出品,值得与大家分享,我大概对其总结了一下,挑出了其中的关键部分。
0x01 都是浏览器的锅
我们都知道,HTTPS是为了加密通信传输而专门设计的一个协议,防的就是中间人嗅探和攻击,目的是保证两边接收与发送的数据都是没有经过篡改和伪造的,协议设计的初衷是好的,但浏览器在处理的时候留下了太多的缺陷,下面的5种方式就能看出浏览器是怎么拖HTTPS的后腿。
0x02 环境
以下默认情况都是存在代理,或者说用户已经被中间人攻击,我们可以随意拦截修改用户的数据包,只是因为加密传输,无法获知内容而已,就像下面这样。
0x03 对错误信息页面的处理不当
第一种方法:利用浏览器对错误信息页面(4XX/5XX)中脚本的信任执行(已被修复)
我们都知道服务器错误信息都是自定义的,不同服务器的信息都不一样,类似于下面这样:
问题就出在这里,如果里面有恶意脚本那怎么办?
像下面的情景:
(1) 用户访问 https://secret.com/
(2) 中间人拦截请求,并发送回一个状态码为502的响应,响应内容包括以下:
<iframe src="https://secret.com/" id=ifr><iframe>
<script>handle = ifr.document //do anything