由于纯粹属于一个网站建设、虚拟主机及企业邮箱产品的展示性网站,所以我在其安全性方面的防范一
直不是很重视,直至有一天发现网站遭到非法入侵,我才亡羊补牢,重新加强该网站的安全防范性能。
现在我将此次遭入侵的经过写出来,同时根据本人的实际经验,对基于windows IIS的站点的安全防范提
出一些建议。
某网站运行于windows 2003 server下的iis 6.0环境下,当时网站遭入侵时的症状表现首页被篡改,且
入侵者上传了一个ASP木马文件about.asp在站点目录下,在浏览器中直接打开该木马文件某网
站/about.asp,显示一片空白,看来此文件需要特定参数才能使用,这是asp木马的惯用手法,我们暂且
不管,于是下载这个文件到本地磁盘,然后用记事本打开分析,发现这个木马主要利用ASP的FSO组件
(FileSystemObject)实现对站点文件的操作,众所周知,FSO组件为 ASP 提供了强大的文件系统访问
能力,可以对服务器磁盘上的任何文件进行读、写、复制、删除、改名等操作,看来入侵者的目标是整
个服务器而非仅仅是某网站这个站点。
当我们的网站不幸遭到入侵,我们首先会想到及时堵住入侵漏洞,杜绝同样的悲剧再一次发生,但是要
堵住漏洞,就必须先知道漏洞在哪里,即获知入侵者是怎么样入侵你的网站的,这样才能做到知已知彼
。经检测同一服务器下的Http://eqgz.com、Http://77gz.com、Http://shoppingday.cn等站点均未出现
异常情况,所以暂时判断问题出现在某网站的网站程序漏洞上,且未波及整个服务器。
初步判断是因为网站后台管理密码泄露或被破解,入侵者取得后台管理权限后进行文件的上传。对后台
的登陆和操作网站程序均会有记录,但数据库中记录的最后一次登陆是在一个星期前,而网站首页的文
件修改时间是昨天的,所以入侵者利用管理后台为切入点的可能性不大。
无奈之下只好调用事发当天服务器的IIS日志,一看之下,发现一个来自山东某大学的IP频繁访问网站目
录下的upfile.asp文件,upfile.asp是动网的无组件上传文件之一,是后台引用页面,网站根本没有直
接链接访问,更糟糕的是upflie.asp是后台引用页面,当时并未对该面进行单独的权限检测,导致任何
人均可直接访问此页面,由此判断入侵者是利用动网上传组件入侵网站的,这是跟SQL注入一样流行的入
侵手法,没有什么新意,有些失望,但还是得解决问题。
先分析下动网上传漏洞的入侵原理。动网上传因为不需要任何ASP第三方组件的支持,也不需要在服务器
上注册DLL组件,所以为很多网站广泛应用,同时也有很多人通过利用扫描工具扫描网上的uplaod.asp文
件,寻找可利用的肉鸡,然后实施入侵。
首先分析下upload.asp的源码(已去除部分样式代码):
<%uppath=request("uppath")&"/" '文件上传路径
filelx=request("filelx") '文件上传类型
formName=request("formName") '回传到上页面编辑框所在Form的Name
EditName=request("EditName") '回传到上页面编辑框的Name
%>
<form name="form1" method="post" action="upfile_flash.asp" enctype="multipart/form-data" >
<input type="hidden" name="filepath" value="<%=uppath%>"><br />
<input type="hidden" name="filelx" value="<%=filelx%>"><br />
<input type="hidden" name="EditName" value="<%=EditName%>"><br />
<input type="hidden" name="FormName" value="<%=formName%>"><br />
<input type="hidden" name="act" value="uploadfile"><br />
选择文件:
<input type="file" name="file1" value=""><br />
<input type="submit" name="Submit" value="· 开始上传 ·"><br />
</from>
其中主要的参数是uppath,即文件保存路径,如在浏览器输入Http://www.gz1024.com/upload.asp?
uppath=img,就是将文件保存在站点的img目录下。打开此页面,我们试图直接上传木马文件about.asp
,提示上传失败,因为网站程序会检测上传文件的后缀名,只接受jpg或gif后缀的图像文件。所以直接
上传asp后缀的文件肯定不会成功。
这个上传漏洞主要就是利用\0字符漏洞,十六进制\0字符在系统中被用作字符串结束的标志,基本原理
就是网站程序虽然禁止了.asp等后缀名文件的上传,但是都会允许.jpg或者.gif格式文件的上传。这样
如果入侵者构造数据包Http://www.gz1024.com/upload.asp?uppath=img/about.asp\0.jpg,那么\0 后
面的字符将被截断,原因是计算机遇到\0字符,认为字符串结束了。于是我们就向服务器img目录上传了
一个名为about.asp的ASP木马程序。具体的入侵过程需要使用抓包工具截获网络通讯的数据流并用十六
进制编辑工具编辑\0,再用netcat提交,这里不作具体的描述。
知道了入侵原理之后,接下来就要清除木马,并想办法堵住这个上传漏洞了。
1. 首先删除非法上传的文件about.asp,并仔细检查站点下其它文件是否被嵌入其他木马
代码。如果你的网站很庞大,只须检查修改日期在网站被入侵之后的文件即可。
2. 凡是只有管理员才有权使用的文件,即使是被引用或被包含文件,在代码第一行均要加
入session检测,这样没登陆用户就无法直接使用uplaod.asp进行文件上传了。我在动网上传的几个文件
均加放以下代码
3.
If session(“admin”)=”” then
Response.write “对不起,请先登陆!”
Response.end
End if
4. 上面两步还没有从根本解决这个上传漏洞,既然入侵者可以拿变量uppath作文章,那么
就不能再使用变量来定义文件的保存位置了,可以使用固定的保存路径,将上传文件保存在固定的文件
夹内。
5. 同样原理,使用上传文件的原文件名保存文件也存在这个漏洞,所以在保存时要对上传
文件进行重新命名。保存时不使用提交文件的原文件名,我采用的是日期加三位随机数字的方式重新命
名文件。如果确实要使用原文件名,就要对原文件名进行严格的检测过滤。
6. 可在IIS中,对保存上传图片的img目录去除“执行脚本和可执行文件”的权限。这样,
即使入侵者上传了一个ASP木马到img目录下,直接打开时服务器也不会执行此ASP程序。
7. 在服务器上,删除磁盘中everyone和users组的访问权限,为每一个站点建立一个隶属
于guests组的用户,设定这个用户只对该站点所在目录的文件夹才具体有访问及修改权限,并在IIS中修
改此站点的匿名访问用户为此用户。这样,即使这个站点被入侵了,入侵者也没有足够的权限浏览或修
改服务器上其他文件,以防止因一个站点的过失而连累整个服务器。
最后,我想说的是网站建设或网站管理者要加强安全防范意识,还要及时了解相关的安全资讯,及时更
新服务器安全设置和程序代码。另外,要定期备份网站数据,使网站受到破坏的时候能在最快的速度将
数据恢复到最近的时间版本。