一个黑客基于iframe框架的升级版攻击手段,采用一个违法网站将原始网站完全覆盖,用户完全无法察觉到被覆盖的页面内容,也无法查看被覆盖的内容
图290-1:iframe黑客2.0版
过去经常听说网站被黑的事件,偶尔也会见到一些被黑的网站,但是一直没有去仔细的研究,最近开始慢慢研究这些被黑的网站,越来越感觉到网站被黑的情况并没有想象的那么罕见,其实每天我们用百度搜索的时候,在搜索结果中或多或少都会掺杂着几个已经被黑的网站。
发现过程
图290-2:百度的警告页面
今天在百度中搜索的时候,看到其中一个结果百度用红色的文字显示:网站可能含有违法内容。点击进去得到如上图所示的警告页面,这个页面由百度提供。点击“关闭窗口”后窗口就关闭了,点击“继续访问”将打开对应的页面,这里我们将页面打开。网站打开后得到下图所示的界面,看左上角的图标显然这是一个博彩网站,属于违法网站。
图290-3:违法网站
将页面的滚动条拉到末尾,全部都是这个违法网站的内容,看不到网站的真实内容,第一感觉是这个网站被黑客完全替换了,接下来对源码进行分析,发现其实黑客使用的仍旧是在原来的网站中插入了一个iframe框架,只是这位黑客的做法更加高级,完全看不到原始网页的内容。下面我们来具体的分析黑客是如何做到的。
黑客技术
用火狐浏览器显示网页打开过程中加载的所有数据,由于现在是讲述黑客技术,就不讲研究的过程了,直接上研究的成果。在html的head部分加载了一个js文件,文件名为51.la.js,这个文件原本是没有问题,51.la是一个统计网站的访问数据的网站,这个js文件是实现访问统计的功能。由于它是在head部分就进行加载,所以在网站的内容还没有任何显示时就执行了这个js文件中的脚本,所以打开这个网站时完全没有机会看到真实的页面内容,直接就显示违法网站了。
图290-4:51.la.js文件
上图是51.la.js文件的部分内容,在文件的末尾被黑客添加了几行代码,图中用红框表示的部分,功能如下。
- 第一行:设置页面的样式,将页面的宽度和高度设置为全屏幕显示,并隐藏这个区域以外的内容(这一行很毒,后面会讨论)
- 第二行:创建一个层,大小和页面一样大,并将显示层级设置为最高,显示在其它内容上面
- 第三行:创建一个iframe框架,大小和上一行的“层”相同,并隐藏框架的边框
- 第四行:关闭“层”
图290-5:页面的滚动条
这位黑客的核心技术就是上面这几行代码,其它那些都是次要的。现在来讨论一下这些代码,第一行的代码是所有代码中最毒的代码,它将原始网站的页面设置为全屏幕高和宽,然后隐藏外面的内容,这样做了之后,原始网站的页面是不能被滚动的,无论页面有多少内容当前屏幕之外的内容都看不到。第二行创建一个层和页面的大小相同,因为真实页面是不能被拖动的,所以这个层就将真实页面完全覆盖了。第三行创建一个iframe框架和层的大小相同,这样这个层就完全被框架覆盖,如果框架中的内容显示不下,就会显示一个滚动条,这样就在页面中显示滚动条了,但实际上这个滚动条是框架中的滚动条,并不是真实网页的滚动条。
技术验证
图290-6:层高度修改为30%
上面已经将黑客使用的技术分析清楚了,下面我们来进行简单的验证。上文说了,黑客是通过创建层的方式覆盖真实页面的,现在将层的高度从100%修改为30%,得到如上图所示的结果。违法网站占了屏幕高度的30%,下面的70%是真实网站的内容,从右侧可以明显的看出,违法网站所在的iframe框架是存在滚动条的,而下面的真实网页并没有滚动条。
图290-7:显示真实页面的滚动条
下面我们将真实网站的滚动条显示出来,如果不显示的话,无法滚动,看不到被遮挡部分的内容,显示滚动条后的效果如上图所示。大家从这张图可以看出,如果不隐藏真实页面的滚动条,用户一眼就能看出这个网站异常,但是滚动条隐藏之后,在用户眼中这个网站就等同于违法网站,谁也不会想到真实的页面内容在下面被挡住了。
解决办法
分析到这里其实解决办法已经呼之欲出了,打开上面提到的js文件,删除末尾的那四行代码就可以了。接下来要做的事情就只有网站的管理员知道了,检查各种日志,看看黑客是如何将那四行代码写入那个js文件中的。
这次这个网站被黑的结果,在用户的角度来看,做的非常的逼真,完全看不出违法网站下面才是真实网站的内容。比前面那篇文章《黑客利用iframe框架在网站中挂广告,大量网站中招》中提到的技术要高级一些,前面那篇文章虽然网站被插入了广告,但是所有的真实内容可以全部看到,用户一看就知道网站被黑了,本文讲到的网站完全看不到真实的内容,完全就是一个违法网站。
转载请注明:网创网 www.netcyw.cn/b290.html
加油!!!