欢迎来到世界第七大银行汇丰银行的官网hsbc.com
!好吧,相信大家都立马反应过来,汇丰银行的首页是不可能会放上我的照片。所以上面图片中的网站并不是hsbc.com
,而是我自己的网站jameshfisher.com
。但是,当你用Chrome移动版浏览器上下滑动浏览这个“汇丰”网站时,会发现除了页面内容不合理,其余都很像hsbc.com
,特别是那个地址栏,时刻提示这就是hsbc.com
。在这篇文章中,我将介绍这种钓鱼网站是如何产生的以及针对这类钓鱼网站的防御措施(这些改进措施我相信对Chrome来说并不是难事)。
介绍
在移动版Chrome浏览器中,当用户向下滚动时,浏览器会自动隐藏URL栏,将URL栏的屏幕空间交还给网页。而对于大多数用户来说,“URL栏”这个位置可以说是信任度最高的浏览器部位,如果要判断你正访问网站的网址是什么,大多数人都会第一时间看向它。自然而然,这个浏览器部位也成了钓鱼页面制造者的攻击重点,而我正好发现了一种伪造“URL栏”的方法,那就是利用inception bar
!
大家都知道,当用户在Chrome浏览器中向上滚动时,Chrome会重新显示真正的URL栏。但是,我们可以欺骗Chrome,让它永远不会显示真正的URL栏!一旦Chrome隐藏了URL栏,我们就会将整个页面内容移动到“scroll jail”(滚动监狱)中——这里我利用到一个新知识overflow:scroll
。当用户用手指上下滑动时,会误以为认为他们是在当前页面中向上滚动,但事实上他们只是我设置的滚动监狱中滑动!就像是困在梦境中一样,用户认为他们在浏览器中,但实际上是在浏览器中的浏览器中。
从以上视频中,大家应该发现我们还有一个问题没解决,一旦用户滚动到“监狱”的顶部,Chrome就会重新显示URL栏。为了解决这个问题,我可以“滚动监狱”的顶部插入一个非常高的填充元素。如果用户尝试滚动到所填充的元素,就自动向下滚动到钓鱼页面的开头!这整套操作看起来很像页面刷新。
钓鱼网站细节
以下是Jayden Lin针对这种钓鱼网站的解析。
在作者给出的演示网站(https://jameshfisher.com/2019/04/27/the-inception-bar-a-new-phishing-method/)中,可从源码看到:
假URL栏使用了id为fakeurlbar
的div标签,并将CSS设定为position: fixed
,将其固定在最上方。
其次,作者还在body中制作了一个div标签,将其设定为overflow: scroll
,并往里面放一个高为1000px的填充元素。当他人浏览网页时,其实只是在这个div里面滚动,而不是在全局body里滚动。
最后,为了防止他人浏览网页时滑动到最上方,看到真的URL栏。作者通过javascript中的onscroll
来控制滚动位置,让浏览者永远无法滑到最上方,相关代码如下:
后记
这是一个严重的安全漏洞吗?我认为是的。因为我作为一个安全人员都很难第一时间识破这个钓鱼网站,所以我可以想象如果是完全不懂网络知识的用户,在面对这种网站时的戒心有多低!
如何防御这种攻击呢?我认为它是Chrome的问题。因为正是Chrome隐藏URL栏的逻辑让我有了可乘之机,当然我也完全理解谷歌想节约页面空间的做法。目前为止,我觉得最好解决方法就是在Chrome隐藏URL栏时,做出提示,让用户意识到“URL栏当前已隐藏”。
Jayden Lin也表示,类似的攻击以前也发现过,当时被称为Picture-In-Picture Attacks
,具体如下图:
感谢你的阅读!
本文由白帽汇整理并翻译,不代表白帽汇任何观点和立场:https://nosec.org/home/detail/2531.html
来源:https://jameshfisher.com/2019/04/27/the-inception-bar-a-new-phishing-method/
https://medium.com/@jaydenlin/%E9%A7%AD%E5%AE%A2%E6%96%B0%E9%87%A3%E9%AD%9A%E6%89%8B%E6%B3%95-%E6%A8%A1%E7%B3%8A%E7%9A%84-line-of-death-%E7%B6%B2%E5%9D%80%E5%88%97%E4%B9%9F%E4%B8%8D%E5%8F%AF%E4%BF%A1%E4%BA%86%E5%97%8E-c3b45d3bbc32
发表评论
您还未登录,请先登录。
登录