1980年12月8日 约翰.列侬被一个歌迷射六枪,歌迷坐等警察,被带走时朝列侬吐痰,说:你变了。

是的,你变了。我一开始的时候是信任你的,但是当我离开的时候,你已经变了,而我却不知道,我还像以前一样信任你,结果被你钓鱼了!

现在还原一下游戏步骤:

# STEP1

假设你在百度里面搜索 上海破碎机生产厂家:上海破碎机生产厂家

# STEP2

第一页大约有十个结果,假设你碰巧点击了www.ksht168.com这个网站。

# STEP3

现在,你再回去百度搜索页面,随便点击一个连接。是的。很奇怪。正常情况下是弹出对话框,因为页面已经被注入了JS

注意上面仅仅是演示,真正钓鱼的时候,我会做一个肉眼几乎无法区分的页面。想做什么,需要的就仅仅是想象力了。

# How?

一切都是由parent.window.opener.location引起的。浏览器来源页面的url被篡改,就导致了这种问题。在这个示例中,index.html中有这样一段js:

if(document.referrer.indexOf("http://www.baidu.com")==0){
  parent.window.opener.location="/test.php?url="+document.referrer;
 }

实际上把原来的页面跳到了另外一个,而新页面和老页面一样,一般人并没有注意上面URL地址栏。所以很容易被欺骗。

在上面的例子中,假如用户没有发现异常,在页面上的信息,会继承用户对百度的信任,比如你说百度推荐xxx,用户很容易相信,哦,这是百度推荐的,因为他并不知道,他其实已经不再baidu.com了。

类似的欺骗,比如,我在一个你非常信任的网站上留下一个连接,当你点击以后,原来的页面已被篡改,你关掉打开的页面,想回到原来的页面,这时候,我就提示你网络有问题、账户异常等等,诱导你输入敏感信息,实现钓鱼。其他猥琐用法,欢迎讨论。

# 如何破?

浏览器的问题。估计等用得多了,浏览器会有限制。比如 Google chrome a:visited background image not working

另外,parent.window.opener.location并不是在所有的浏览器上都能工作,比如在ie8上,会提示:

ie8提示没权限

parent.window.opener.location 很早很早以前就有人用来劫持搜索引擎了,但是貌似还没见有人用来钓鱼,今天偶然想到的钓鱼方法,更多猥琐的应用,请不吝赐教。