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

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

缺陷编号:wooyun-2014-067391

漏洞标题:万户OA任意文件上传导致代码执行(多处总结)

相关厂商:cncert

漏洞作者: 瘦蛟舞

提交时间:2014-07-04 15:44

修复时间:2014-10-02 15:46

公开时间:2014-10-02 15:46

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

危害等级:高

自评Rank:10

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

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

简要描述:

万户OA任意文件上传导致代码执行(多处总结)

详细说明:

/defaultroot/public/editor/tpsc.jsp
/defaultroot/public/editor/1_tpsc.jsp
/defaultroot/work_flow/formOptJSPUpload.jsp
/defaultroot/work_flow/formStartJSPUpload.jsp
/defaultroot/govezoffice/custom_documentmanager/smartUpload.jsp?path=innerMailbox&fileName=innerMailFileName&saveName=innerMailSaveName&tableName=innerMaildisplaytable&fileMaxSize=0&fileMaxNum=0&fileType=&fileMinHeight=0&fileMinWidth=0&fileMaxHeight=0&fileMaxWidth=0
/defaultroot/custom_form/smartUpload.jsp?path=innerMailbox&fileName=innerMailFileName&saveName=innerMailSaveName&tableName=innerMaildisplaytable&fileMaxSize=0&fileMaxNum=0&fileType=&fileMinHeight=0&fileMinWidth=0&fileMaxHeight=0&fileMaxWidth=0
/defaultroot/public/jsp/goodsphotoupload.jsp?path=goodspic&visualName=goodsPicName&hiddenName=goodsPicName&del=yes
/defaultroot/public/jsp/livephotoupload.jsp?path=peopleinfo&visualName=empLivingPhotoTemp&hiddenName=empLivingPhoto&del=yes
/defaultroot/public/jsp/livephotoupload2.jsp?path=peopleinfo&visualName=empLivingPhotoTemp&hiddenName=empLivingPhoto&del=yes
/defaultroot/public/jsp/singleupload.jsp?path=desktop&visualName=unitImgName&hiddenName=unitImgSaveName&del=yes
/defaultroot/public/jsp/smartUpload.jsp?path=innerMailbox&fileName=innerMailFileName&saveName=innerMailSaveName&tableName=innerMaildisplaytable&fileMaxSize=0&fileMaxNum=0&fileType=&fileMinHeight=0&fileMinWidth=0&fileMaxHeight=0&fileMaxWidth=0


上面是面哥发的,自己看了下源码,发现有上传的地方基本都是调用smartUpload的javabean。于是顺手找了下剩下的上传点。
特征代码

<%@ page language="java" import="com.jspsmart.upload.*"%>
<jsp:useBean id="myUpload" scope="page" class="com.jspsmart.upload.SmartUpload" />


有部分使用apache fileupload组件的但是通用性不强就不说了。

漏洞证明:

\defaultroot\customize\upload.jsp (需截断doc)
\defaultroot\information_manager\informationmanager_upload.jsp (无限制直接上传)
\defaultroot\work_flow\workflow_upload.jsp (无过滤,报错前已经执行成功,鸡肋未返回文件名可以根据时间暴力采集)
\defaultroot\dragpage_department\upload.jsp (需截断jpg)
\defaultroot\skin\5\dragpage_department\upload.jsp (需截断jpg)
\defaultroot\information_manager\产品-信息管理UTF-8-2009--8.21.1\defaultroot\information_manager\information_smartUpload.jsp(通用性不强,无过滤)
\defaultroot\dossier\dossier_import.jsp
代码大致就分一种无过滤的,直接可以上传shell。

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);
if (!myFile.isMissing()) {
saveName=myRandom+"."+myFile.getFileExt();
fileName=myFile.getFileName();
myFile.saveAs("\\upload\\information\\" + saveName);
}
}


另一种就是有过滤的,但是可以用截断绕过

// Initialization
mySmartUpload.initialize(pageContext);
//mySmartUpload.setTotalMaxFileSize(100000);
mySmartUpload.setAllowedFilesList("jpg,gif,bmp,swf,avi");
// Upload
mySmartUpload.upload();


部分证明如下图。

customize.png

department.png

information.png

修复方案:

版权声明:转载请注明来源 瘦蛟舞@乌云


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:15

确认时间:2014-07-09 13:36

厂商回复:

CNVD确认所述情况(原理验证),由CNVD通过公开联系渠道向软件生产厂商(已经建立的万户网络公司渠道)通报。

最新状态:

暂无