一行代码杜绝iframe挂马
作者:吴举斌 来源:站长网 发布时间:2007-12-23 17:18:00
相信大多数站长都曾经遭遇过iframe木马的侵害,有朋友的网站被注入了N回iframe,心情可想而知。而且现在ARP攻击,注入iframe也是轻而易举的事,仅局域网里都时刻面临威胁。
今天把原理细细地讲一下吧:
IE Only——一般只有IE害怕iframe这样的挂马,所以就拿IE开刀。
在阅读本文之前,我们先了解一下expression;
IE5及其以后版本支持在CSS中使用expression,用来把CSS属性和JavaScript脚本关联起来,这里的CSS属性可以是元素固有的属性,也可以是 自定义属性。就是说CSS属性后面可以是一段JavaScript表达式,CSS属性的值等于Javascript表达式执行的结果。在表达式中可以直接引用元素自身的属性和方法,也可以使用其他浏览器对象。这个表达式就好像是在这个元素的一个成员函数中一样。
很多朋友都知道CSS可以直接描述一个可视标记的外观。例如:p{color:red} 则网页里 所有p标记里的文字颜色都会变成红色;iframe不也是一个标记吗?开始跟灵儿写代码吧,呵呵:
iframe{...这里写描述外观的CSS代码;};
仔细想想要防止iframe里的东东被下载的最好办法是什么?核心来了,那就是切断iframe里的请求,切断请求就是要迅速销毁iframe对象。如何实现呢,上面不是介绍了expression吗?expression是可以执行JS脚本的哈。语法格式如下二种:
标记固有的CSS属性名:expression(JS表达式);
或 自定义属性名:expression(JS表达式);
在这里我们选择第二种,代码应该大致是这样
iframe{v:expression(JS表达式);}
接下来的问题是如何销毁网页里所有的iframe对象;使用JS实现的原理是这样的:使iframe里的请求地址变成空白页(about:blank),再将iframe对象从DOM(文档对象模型)中移除就可以切断所有iframe里的请求了。移除DOM节点的方法比较多,我这里就用 outerHTML这个属 * 。CSS代码如下:
iframe{v:expression(this.src='about:blank',this.outerHTML='');}
说明:前面的v字是灵儿自己定义的一个CSS属性,这里的this代表所有将要描述外观的iframe对象,中间的逗号代表二句代码一起执行,没有执行优先顺序,这可是强有力的保证噢。about:blank代表空白页,大家都知道的。outerHTML属性是DOM对象包含自身的HTML代码,而innerHTML则是DOM对象(不含本身)里面所包含的HTML代码。
爽快,代码写好了,就让我信来测试一下有没有效果。
首先,新建一个网页,插入以上的CSS代码(或在您现有的CSS代码里加入上面那句):
<style type="text/css">
iframe{v:expression(this.src='about:blank',this.outerHTML='');}
</style>
然后在这个页面插入几个IFRAME代码,假设它们是被挂的木马网页。代码如下:
<iframe src=""></iframe> admin5
<iframe src="http://www.caoxoo.com/"></iframe>草讯
<iframe src=" http://www.ssguo.com/"></iframe> 涩果
保存为noiframe.htm,打开浏览器测试一下(本地测试需要启用顶部禁用的脚本的提示条哦)。我这里使用抓包工具来测试,不过也没有必要使用抓包工具,一个最简单有效的方法是打开IE的缓存文件夹,先清空它,再刷新这个页面,看看缓存文件夹里有没有这三个网站里的文件。如果没有,说明没有任何请求结果被返回——测试结果是令人满意的,我的脸上有些微笑 ^^*,这时同事递给我一块饼,蛮好吃的。
提示:Windows XP SP2的缓存文件夹位置 C:\Documents and Settings\Administrator\Local Settings\Temporary Internet Files
细心的朋友发现问题来了,如果我自己的网页里要使用iframe这个东东怎么办?
答:如果要使自己的iframe显示在网页里,而别人挂的IFRAME马都不起作用,在CSS里加一个
#caoxoo{v:expression() !important}
对应的IFRAME代码为:
<iframe id="caoxoo" name="caoxoo" src="http://www.caoxoo.com/"></iframe>
就OK了。
提示:IE7中优先执行标注有"!important"描述的样式,IE6不认识!important,采用就近原则,所以IE6的这个代码放在CSS的最后就可以了。
这里的f126,有很多朋友有疑问,他们问我为什么取"f126",我这样回答——这个f126是随意取的,只要下面的iframe里的ID属性和CSS里的一致就行了。同事又要递一块饼我吃,我说饱了哈..嘻嘻..
当然挂马者可以构造这样的代码
<iframe style="v:expression() !important" src="URL"></iframe>
使我的防御方式失效,不过它得特意去看我的CSS代码里iframe里的前缀v,如果我的v是变化的呢,哈哈,是不是也不管用呢!
小结:以上的方法只是停止了iframe的请求并销毁了它本身,但以后的挂马方式改变了,例如改成
<script></script>
方式挂,就不能用这种方法来解决了;此这个方法不是最终的解决案,最终的解决方案是找出真正被挂IFRAME的原因,堵住源头。这可不是我的事哈!


猜你喜欢
- LuManager(LUM)是基于FreeBSD、Zijidelu、Debian、Centos、Ubuntu等Linux/Unix系统的网站
- Elastic stack 俗称 ELK stack,是一组包括 Elasticsearch、Logstash 和 Kibana 在内的开源
- 10月10日消息,据南方都市报报道,新闻出版总署有关负责人昨日表示,10月份新闻出版总署将集中力量联合组织一次对网络游戏审批和运营服务的全面
- 第一个问题:链接看起来和普通文本一样,是否是属于隐藏链接?几乎所有seo人员的博客上都有大量链接,给出某个链接很可能因为文章中确实涉及到关于
- 网站付款标准版(Website Payment Standard简称WPS)是基于HTML的PayPal集成解决方案。如果你需要简单快速地在
- 提供高质量的内容和服务创建让人眼前一亮且有价值的内容较之于这个指南里讨论的因素更容易影响你的网站。用户看到后知道你网站上提供的内容质量很不错
- 一段时间没有用这个apache,突然之间发现apache不返回东西了,抓包发现不管发什么请求,这个apache总是返回:Request he
- 1、必须把网站向google提交,可以加快收录速度。接口位于http://www.google.com/intl/zh-CN/add_url
- 影响版本:BBSGood 5.0/5.0.2漏洞描述:BBSGOOD是国内首创使用缓存技术的论坛,BBSGOOD的帖子和列表首页是可以生成静
- 一、软件、系统镜像软件:VMware 14镜像:CentOS8 ,镜像官网下载地址 :http://mirror.jdcloud.com/c
- 大家好,我是良许。大家知道,在 Linux 下,一切皆文件,对于设备文件也是如此。我们在工作的过程中,经常会看到 /dev/null 这个玩
- 本文为大家分享了Ubuntu server版安装图文教程,供大家参考,具体内容如下创建虚拟机步骤1、 创建虚拟机2、 登录系统3. 先启用r
- 据国外媒体报道,微软XboxLive首席程序设计师拉里·海博(LarryHyrb)周四表示,微软无意为Xbox 360
- 网络上曾流传过这么一张图片,打倒标题党。什么是标题党呢?网络上有这么一种人,他们浪费网友时间、欺骗网友感情;他们的帖子充斥着暴力、 * 、罪恶
- 恶意链接(Link Spamming):也称“作弊链接技术”)指为提高网站在google排名搜索引擎
- 在IIS5,多IP下共存,IIS为192.168.0.1,apache为192.168.0.2c:\Inetpub\Adminscripts
- 小广告主现在获得了对在线广告产生巨大影响的机会。ContextWeb(一家文本广告)公司于10月17日发布了最新ADSDAQ广告交换平台。A
- 1、如何保证百度能每天收录站点新增加的页面?解答:站点保持每天更新好的内容,平稳增加一些鲜活的外链,一段时间后,就会每天都被更新了,这个过程
- 大家如果在 Ubuntu 系统中出现中文乱码,可能是因为系统没有配置中文字符编码。解决方法Ubuntu 系统的字符编码保存在文件 /var/
- 最近淘宝上最流行的骗术各位淘友注意了,最近几天淘宝里骗子又出现高峰了,我的代写代 * 文淘宝店最近碰到好几个骗子了.骗子最近流行的骗人方法有以