注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

上海seo顾问网站优化搜索引擎优化

上海seo咨询顾问,网站优化搜索引擎优化服务,google优化,网站优化公司

 
 
 

日志

 
 

防止自己网站挂马  

2009-11-01 12:58:30|  分类: 技术类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

按照一个流程操作,从没有被挂过木马,请注意看吧  
  1,把网站假设在NTFS的分区  
  2,对wwwroot目录设置安全属性,把IUSR_开头的用户设置成只读权限  
  3,把需要上传文件的目录,还有access数据库所在的目录设置成对IUSR_可写  
  4,在IIS管理器中,把步骤3中的目录脚本运行权限设置成“无”  
   
  注意,不要把asp文件和图片文件放在同一个目录里,这样比较好管理权限
先要熟悉虚拟主机的安全配置,网上这种还是很多的。  
   
  如果可能,启动网站的用户对该站点只读,只对极个别文件(数据库文件或配置文件)和目录(上传目录,在IIS中设置只允许读取)设置可写权限,  
   
  多站点用多用户分开,设置好权限,保证一个中马,不会影响到其他站点  
   
  文件、目录名多奇特,不易猜解  
   
  ==  
  现在还有些软的和硬的IIS放火墙,可以考虑
系统用NTFS格式磁盘,将上传图片的文件夹对IIS账户设置可写,其它所有磁盘及路径都禁止访问,然后在IIS里设置权限,存放上传图片的文件夹只能读取,不允许运行脚本程序!  
   
  经过这样设置基本就没什么问题了,在NTFS分区格式的磁盘上设置的严格权限后木马基本就已经没有危害性了,就算上传了,运行了,也造成不了什么破坏!
请看看http://www.serversteam.org/   国内著名服务器安全研究小组的文章。
了解黑客技术请看全球最大中文黑客基地http://www.hackbase.com/
近来,网络上的SQL   Injection   漏洞利用攻击,JS脚本,HTML脚本攻击似乎逾演逾烈.陆续的很多站点都被此类攻击所困扰,并非像主机漏洞那样可以当即修复,来自于WEB的攻击方式使我们在防范或者是修复上都带来了很大的不便。HOOO……   一个站长最大的痛苦莫过于此.自己的密码如何如何强壮却始终被攻击者得到,但如何才能做到真正意义上的安全呢?第一,别把密码和你的生活联系起来;第二,Supermaster的PWD最好只有你自己知道;第三,绝对要完善好你的网站程序。然而怎样才能完善,这将是我们此文的最终目的。    
    安全防护,如何做到安全防护?想要防护就要知道对方是如何进行攻击。有很多文章都在写如何攻下某站点,其实其攻击的途径也不过是以下几种:    
    1.   简单的脚本攻击    
    此类攻击应该属于无聊捣乱吧。比如****:alert();   </table>等等,由于程序上过滤的不严密,使攻击者既得不到什么可用的,但又使的他可以进行捣乱的目的。以目前很多站点的免费服务,或者是自身站点的程序上也是有过滤不严密的问题。    
    2.   危险的脚本攻击    
    这类脚本攻击已经过度到可以窃取管理员或者是其他用户信息的程度上了。比如大家都知道的cookies窃取,利用脚本对客户端进行本地的写操作等等。    
    3.   Sql   Injection   漏洞攻击    
    可以说,这个攻击方式是从动网论坛和BBSXP开始的。利用SQL特殊字符过滤的不严密,而对数据库进行跨表查询的攻击。比如:    
    http://127.0.0.1/forum/showuser.asp?id=999   and   1=1    
    http://127.0.0.1/forum/showuser.asp?id=999   and   1=2    
    http://127.0.0.1/forum/showuser.asp?id=999   and   0<>(select   count(*)   from   admin)    
    http://127.0.0.1/forum/showuser.asp?id=999’;   declare   @a   sysname   set   @a='xp_'+   'cmdshell'   exec   @a   'dir   c:\'---&aid=9    
    得到了管理员的密码也就意味着已经控制的整站,虽然不一定能得到主机的权限,但也为这一步做了很大的铺垫。类似的SQL   Injection攻击的方式方法很多,对不同的文件过滤不严密所采取的查询方式也不同。所以说想做好一个完整的字符过滤程序不下一凡功夫是不可能的。    
    4.   远程注入攻击    
    某站点的所谓的过滤只是在提交表格页上进行简单的JS过滤。对于一般的用户来说,你大可不必防范;对早有预谋的攻击者来说,这样的过滤似乎根本没作用。我们常说的POST攻击就是其中一例。通过远程提交非法的信息以达到攻击目的。    
    通过上面的攻击方法的介绍,我们大致的了解了攻击者的攻击途径,下面我们就开始重点的介绍,如何有效的防范脚本攻击!    
    让我们还是从最简单的开始:    
    l   防范脚本攻击    
    JS脚本   和HTML脚本攻击的防范其实很简单:server.HTMLEncode(Str)完事。当然你还不要大叫,怎么可能?你让我把全站类似<%=uid%>都加过滤我还不累死?为了方便的过滤,我们只需要将HTML脚本和JS脚本中的几个关键字符过滤掉就可以了:程序体(1)如下:    
    ‘以下是过滤函数    
    <%    
    function   CHK(fqyString)    
    fqyString   =   replace(fqyString,   ">",   ">")    
    fqyString   =   replace(fqyString,   "<",   "<")    
    fqyString   =   replace(fqyString,   "&#",   "&")    
    fqyString   =   Replace(fqyString,   CHR(32),   "   ")    
    fqyString   =   Replace(fqyString,   CHR(9),   "   ")    
    fqyString   =   Replace(fqyString,   CHR(34),   """)    
    fqyString   =   Replace(fqyString,   CHR(39),   "'")    
    fqyString   =   Replace(fqyString,   CHR(13),   "")    
    fqyString   =   Replace(fqyString,   CHR(10)   &   CHR(10),   "</P><P>   ")    
    fqyString   =   Replace(fqyString,   CHR(10),   "<BR>   ")    
    CHK   =   fqyString    
    end   function    
    %>    
    ‘以下是应用实例    
    <%=CHK(Username)%>    
    Username=CHK(replace(request(“username”),”’”,””))    
    使用Include把函数写在公有页面上,这样效率是最好的。  
    程序体(1)    
    另外,值得我们注意的是,很多站点在用户注册,或者是用户资料修改的页面上也缺少脚本的过滤,或者是只在其中之一进行过滤,注册进入后修改资料仍然可以进行脚本攻击。对用户提交的数据进行检测和过滤,程序体(2)   如下:    
    ‘以下是过滤函数    
    If   Instr(request("username"),"=")>0   or    
    Instr(request("username"),"%")>0   or    
    Instr(request("username"),chr(32))>0   or    
    Instr(request("username"),"?")>0   or    
    Instr(request("username"),"&")>0   or    
    Instr(request("username"),";")>0   or    
    Instr(request("username"),",")>0   or    
    Instr(request("username"),"'")>0   or    
    Instr(request("username"),"?")>0   or    
    Instr(request("username"),chr(34))>0   or    
    Instr(request("username"),chr(9))>0   or    
    Instr(request("username"),"?K")>0   or    
    Instr(request("username"),"$")>0   or    
    Instr(request("username"),">")>0   or    
    Instr(request("username"),"<")>0   or    
    Instr(request("username"),"""")>0   then    
    response.write   "朋友,你的提交用户名含有非法字符,请更改,谢谢合作   <a   href='****:window.history.go(-1);'>返回</a>"    
    response.end    
    end   if    
    程序体(2)    
    为了提供工作效率我们再将过滤内容程序化,这样对多个参数的过滤效率将有很大程度上的提高:如以下为程序主体    
    dim   Bword(18)    
    Bword(0)="?"    
    Bword(1)=";"    
    Bword(2)=">"    
    Bword(3)="<"    
    Bword(4)="-"    
    Bword(5)="’"    
    Bword(6)="””"    
    Bword(7)="&"    
    Bword(8)="%"    
    Bword(9)="$"    
    Bword(10)="'"    
    Bword(11)=":"    
    Bword(12)=" "    
    Bword(13)="("    
    Bword(14)=")"    
    Bword(15)="--"    
    Bword(16)="   chr(9)"    
    Bword(17)="   chr(34)"    
    Bword(18)="   chr(32)"    
    errc=false    
    ‘以下是应用实例部分    
    for   i=   0   to   ubound(Bword)    
    if   instr(FQYs,Bword(i))<>0   then    
    errc=true    
    end   if    
    next    
    if   errc   then    
    response.write   "<script   language=""****"">"    
    response.write   "parent.alert('很抱歉!您的操作违法了);"    
    response.write   "history,back();"    
    response.write   "</script>"    
    response.end    
    end   if    
    程序体(3)    
    有了上面的过滤函数您可以在任何需要过滤的地方应用过滤函数直接使用就可以了。这就使我们的修复工作大大的简化了。    
    另外,我想在这里再次多提醒一下,一些站点的UBB在进行小的表情图标转化时也会出现过滤问题,由于很隐蔽所以不容易发现:    
    如:    
    我们标签内的文字进行修改,    
    不知道各位看懂没,前一个单引号用来中和程序提供的左引号,第二个单引号用来中和闭合的右引号,这样程序输出就为:    
    <img   src=’img/0001.gif’   onerror=****:alert();   alt=’’>    
    如果图片不存在,那么将激活onerror标签执行脚本程序。对于已经过滤了单引号的站点在这里用双引号一样可以完成。对于过滤了****字段的,只用alert()也完全可以。所以说要过滤就要过滤完全,别给攻击者留下一丝机会。 

于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等编辑器生成some.asp.bak文件泄露问题等等特别是上传功能一定要特别注意


上面的只是对客户的一些要求,但是空间商由于无法预见虚拟主机用户会在自己站点中上传什么样的程序,以及每个程序是否存在漏洞,因此无法防止入侵者利用站点中客户程序本身漏洞上传asp木马的行为。空间商只能防止入侵者利用已被入侵的站点再次入侵同一服务器上其他站点的行为。这也更加说明要防范asp木马,虚拟主机用户就要对自己的程序严格把关! 为此我总结了ASP木马防范的十大原则供大家参考:

1、建议用户通过ftp来上传、维护网页,尽量不安装asp的上传程序。

2、对asp上传程序的调用一定要进行身份认证,并只允许信任的人使用上传程序。

这其中包括各种新闻发布、商城及论坛程序,只要可以上传文件的asp都要进行身份认证!

3、asp程序管理员的用户名和密码要有一定复杂性,不能过于简单,还要注意定期更换。

4、到正规网站下载asp程序,下载后要对其数据库名称和存放路径进行修改,数据库文件名称也要有一定复杂性。建议我公司的客户使用.mdb的数据库文件扩展名,因为我公司服务器设置了.mdb文件防下载功能。

5、要尽量保持程序是最新版本。

6、不要在网页上加注后台管理程序登陆页面的链接。

7、为防止程序有未知漏洞,可以在维护后删除后台管理程序的登陆页面,下次维护时再通过ftp上传即可。

8、要时常备份数据库等重要文件。

9、日常要多维护,并注意空间中是否有来历不明的asp文件。记住:一分汗水,换一分安全!

10、一旦发现被入侵,除非自己能识别出所有木马文件,否则要删除所有文件。

重新上传文件前,所有asp程序用户名和密码都要重置,并要重新修改程序数据库名称和存放路径以及后台管理程序的路径。

做好以上防范措施,您的网站只能说是相对安全了,决不能因此疏忽大意,因为入侵与反入侵是一场永恒的战争

  评论这张
 
阅读(227)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018