处理网站防挂IFRAME木马的基本原理

2021-03-17 04:33 jianzhan

坚信大多数数盆友全是iframe木马的受害者,有盆友的网站被引入了n回iframe,情绪显而易见。并且如今ARP进攻,引入iframe也是易如反掌的事,仅局域网里都時刻遭遇威协,哎,甚么世间。贴近年关,以便避免更多的盆友遭受进攻,因而细细说下。
灵儿以前在經典论坛上发过贴子:《1行编码处理网站防挂IFRAME木马计划方案》,有很多盆友都联络了灵儿,有的表明谢谢,但是更多的是疑惑了,今日把基本原理细细地讲1下吧:
IE Only——1般仅有IE担心iframe这样的挂马,因此灵儿就拿IE开刀。
在阅读文章本文以前,大家先掌握1下expression;
IE5及其之后版本号适用在CSS中应用expression,用来把CSS特性和JavaScript脚本制作关系起来,这里的CSS特性能够是元素固有的特性,还可以是自定特性。便是说CSS特性后边能够是1段JavaScript表述式,CSS特性的值等于Javascript表述式实行的結果。在表述式中能够立即引入元素本身的特性和方式,还可以应用别的访问器目标。这个表述式就仿佛是在这个元素的1个组员涵数中1样。
许多盆友都了解CSS能够立即叙述1个可视性标识的外型。比如:p{color:red} 则网页页面里全部p标识里的文本色调都会变为鲜红色;iframe不也是1个标识吗?刚开始跟灵儿写编码吧,呵呵:
iframe{...这里写叙述外型的CSS编码;};
细心想一想要避免iframe里的东东被免费下载的最好是方法是甚么?关键来了,那便是断开iframe里的恳求,断开恳求便是要快速消毁iframe目标。怎样完成呢,上面并不是详细介绍了expression吗?expression是能够实行JS脚本制作的哈。英语的语法文件格式以下2种:
标识固有的CSS特性名:expression(JS表述式);
或 自定特性名:expression(JS表述式);
在这里大家挑选第2种,编码应当大概是这样 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字是灵儿自身界定的1个CSS特性,这里的this意味着全部即将叙述外型的iframe目标,正中间的逗号意味着2句编码1起实行,沒有实行优先选择次序,这但是强有力的确保噢。about:blank意味着空白页,大伙儿都了解的。outerHTML特性是DOM目标包括本身的HTML编码,而innerHTML则是DOM目标(不含自身)里边所包括的HTML编码。
痛快,编码写好了,就让我信来检测1下有木有实际效果。
最先,新建1个网页页面,插进以上的CSS编码(或在您现有的CSS编码里添加上面那句):
<style type="text/css">
iframe{v:expression(this.src='about:blank',this.outerHTML='');}
</style>

随后在这个网页页面插进几个IFRAME编码,假定它们是被挂的木马网页页面。编码以下:
<iframe src="http://www.baidu.com"></iframe> 百度搜索
<iframe src="http://www.126.com/"></iframe> 126电子邮箱
<iframe src="http://www.163.com"></iframe> 网易

储存为noiframe.htm,开启访问器检测1下(当地检测必须开启顶部禁用的脚本制作的提醒条哦)。我这里应用抓包软件专用工具来检测,但是也沒有必要应用抓包软件专用工具,1个最简易合理的方式是开启IE的缓存文件文档夹,先清空它,再更新这个网页页面,看看缓存文件文档夹里有木有这3个网站里的文档。假如沒有,表明沒有任何恳求結果被回到——检测結果是让人令人满意的,我的脸上一些笑容 ^^*,这时候朋友递给我1块饼,蛮好吃的。
提醒:Windows XP SP2的缓存文件文档夹部位 C:\Documents and Settings\Administrator\Local Settings\Temporary Internet Files
仔细的盆友发现难题来了,假如我自身的网页页面里要应用iframe这个东东如何办?
答:假如要使自身的iframe显示信息在网页页面里,而他人挂的IFRAME马都不起功效,在CSS里加1个 #f126{v:expression() !important}
对应的IFRAME编码为:
<iframe id="f126" name="f126" src="http://www.126.com/"></iframe> 
就OK了。
提醒:IE7中优先选择实行标明有“!important”叙述的款式,IE6不了解!important,选用就近标准,因此IE6的这个编码放在CSS的最终便可以了。
这里的f126,有许多盆友有疑惑,她们问我为何取"f126",我这样回应——这个f126是随便取的,要是下面的iframe里的ID特性和CSS里的1致就可以了。朋友又要递1块饼我吃,我说饱了哈..嘻嘻..
自然挂马者能够结构这样的编码:
<iframe style="v:expression() !important" src="URL"></iframe>
使我的防御力方法无效,但是它得特地去看我的CSS编码里iframe里的前缀v,假如我的v是转变的呢,哈哈,是否也无论用呢!
小结
以上的方式只是终止了iframe的恳求并消毁了它自身,但之后的挂马方法更改了,比如改为<script></script>方法挂,就不可以用这类方式来处理了;此这个方式并不是最后的处理案,最后的处理计划方案是找出真实被挂IFRAME的缘故,堵住根源。这可并不是我的事哈,呵~
运用案例:http://www.cncert.net 以此编码相互配合MD5(hash)校检,十分完善的防挂马处理计划方案;